LineBasedTime

LineBasedTime je jednoduchý a jednostranný (mluví pouze server ke klientovi, nikoliv oboustranně) textový síťový protokol aplikační vrstvy, který slouží k získání informací o čase ze serveru vzdálenými klienty přes síť. Protokol je řádkový – každý řádek jeho komunikace je ve formátu „KLÍČ: hodnota“ a podobá se tak například protokolům HTTP/1.X. Provozován může být přes jakýkoliv spolehlivý protokol transportní vrstvy (například TCP).

Mimo specifikace samotného protokolu je k dispozici rovněž jeho referenční open-source serverová a klientská implementace, obě uvolněné pod licencí MIT a vytvořené primárně pro operační systémy s jádrem Linux. Jako klient ovšem díky jednoduchosti protokolu může sloužit i některý z běžných nástrojů navržených pro komunikaci přes běžný TCP (SCTP, ...) soket – např. telnet nebo netcat. Referenční klient ale nabízí funkce typu porovnávání vzdáleného času s časem vašeho zařízení nebo rozdílné formáty výstupu.

Specifikaci protokolu a serverovou i klientskou implementaci můžete stáhnout buďto z GitHubu, nebo jako archiv přímo z tohoto serveru. Odkazy najdete níže. Kontrolní součty (SHA256) těchto archivů najdete zde.

Protokol

Jak již bylo řečeno výše, tak protokol je textový a jednodstranný. Komunikace může vypadat například takto (C = klient, S = server):

C: <otevře TCP spojení na server>
S: <server potvrdí TCP spojení>
S: VER: 1
S: ERR: N
S: UNX: 1592769880
S: UTC: Sun Jun 21 20:04:40 2020
S: LOC: Sun Jun 21 22:04:40 2020
C: <přijme data>
S: <zavře TCP spojení>
C: <zavře TCP spojení>

Kompletní dokumentace protokolu je dostupná (v angličtině) buď ke stažení v archivu tar.gz, nebo jako GitHub repozitář, který si můžete naklonovat. Dostupné formáty dokumentace jsou GitHub Markdown a HTML.

Server

Refereční serverová implementace je open-source (licence MIT) a její zdrojový kód je, stejně jako specifikace protokolu, ke stažení ve formě tar.gz archivu nebo jako GitHub repozitář. Server naslouchá na určitém portu a vzdálení klienti se jej poté mohou dotazovat na čas.

Zkompilovaný program při svém spouštění bere přesně 2 argumenty (hostname/IP adresa a TCP port/název služby z /etc/services, na kterém má naslouchat). V archivu nebo repozitáři je pak v souboru README.html (nebo README.md ve formátu markdown) popsán kompletní proces kompilace a zprovoznění (anglicky).

Klient

Klientská implementace je stejně jako server open-source a je jí možné stáhnout stejnými způsoby pomocí odkazů níže. Umožňuje se připojit ke vzdálenému serveru a získat tamější informace o čase.

Klient bere 2 argumenty (hostname/IP a port/název služby, kam se bude připojovat). Programu mimo to můžete předat ještě několik možností, které například mění formát výstupu nebo srovnávají vzdálený čas s časem vašeho počítače. Jaké konkrétní možnosti to jsou a další podrobnosti ohledně zprovoznění a kompilace najdete, stejně jako v případě serveru, v souboru README.html (či README.md).