# Datagramy V této kapitole budeme pracovat s novým typem objektu, který se může skrývat za popisovačem otevřeného souboru. Zdaleka nejdůležitější aplikací socketů je síťová komunikace – na úrovni softwaru je naprostá většina provozu na internetu realizovaná skrze sockety.¹ S obyčejnými soubory mají sockety dvě klíčové společné vlastnosti: • jedná se o objekt operačního systému, který má identitu, a na který se může odkazovat popisovač otevřeného souboru, • ze socketu můžeme číst data, a/nebo je do něj zapisovat. Ukázky: 1. ‹client› – jednoduchý klient spojovaného socketu, 2. ‹server› – jednoduchý odpovídající server, 3. ‹datagram› – práce s datagramovými sockety. Elementární: 1. ‹daytime› – klient pro rfc867 Přípravy: 1. ‹echoc› – triviální SOCK_STREAM klient (ověří funkčnost serveru) 2. ‹lmtpc› – triviální LMTP klient 3. ‹tftpc› – jednoduchý SOCK_DGRAM klient 4. ‹newsc› – synchronizační klient k p6 5. ‹echod› – SOCK_STREAM 6. ‹newsd› – (stále SOCK_STREAM) Rozšířené: 1. – – (tbd) 2. ‹otpd› – jednoduchý šifrovací server 3. ‹kvsd› – key/value store v souborovém systému 4. ‹kvscat› – cat z 01, akorát poslat serveru kvsd 5. ‹deotp› – dešifrování dat zašifrovaných pomocí ‹otpd› 6. ‹dh› † – implementace protokolu Diffie–Hellman ¹ Sockety jsou klíčová součást implementace webových serverů (apache, nginx), aplikačních serverů (node.js, django, rails), databází, ale i klientského software (prohlížečů, mobilních aplikací). ² Roury jsou blíže popsané ve třetí kapitole skript.