Skip to content

Přehled soketového programování pro počítačové sítě

12 de Září de 2021
GettyImages 500631084 5768c5743df78ca6e46339a4

Zásuvka je jednou z nejzákladnějších technologií programování počítačové sítě. Zásuvky umožňují síťovým softwarovým aplikacím komunikovat pomocí standardních mechanismů zabudovaných do síťového hardwaru a operačních systémů. Ačkoli to zní jako další funkce vývoje internetového softwaru, zásuvková technologie existovala již před webem. Mnoho populárních síťových softwarových aplikací spoléhá na sokety.

Co může zásuvková technologie udělat pro vaši síť

Zásuvka představuje jediné připojení mezi přesně dvěma částmi softwaru (připojení point-to-point). Více než dva kusy softwaru mohou komunikovat s klientem/serverem nebo distribuovanými systémy pomocí více soketů. Například mnoho webových prohlížečů může současně komunikovat s jediným webovým serverem pomocí skupiny soketů vytvořených na serveru. Socketový software obvykle běží na dvou samostatných počítačích v síti, ale sokety lze také použít pro místní komunikaci (meziproces) na jednom počítači. Zásuvky jsou obousměrné, což znamená, že obě strany připojení mohou odesílat i přijímat data. Někdy je aplikace, která iniciuje komunikaci, nazývána klientem a druhou aplikací je server, ale tato terminologie vede ke zmatkům v sítích peer-to-peer a obecně by se jí mělo zabránit.

Socket API a knihovny

Na internetu existuje několik knihoven, které implementují standardní aplikační programovací rozhraní (API). První hlavní balíček, Berkeley Socket Library, je široce používán v systémech UNIX. Dalším běžným API je knihovna Windows Sockets (WinSock) pro operační systémy Microsoft. V porovnání s jinými počítačovými technologiemi jsou rozhraní API soketu vyspělá. WinSock se používá od roku 1993 a zásuvky Berkeley od roku 1982. API soketů jsou relativně malá a jednoduchá. Mnoho funkcí je podobných těm, které se používají v rutinách vstupu/výstupu souboru, jako jsou read () , write () a close () . Skutečná volání funkcí, která se mají použít, závisí na zvoleném programovacím jazyce a knihovně soketů.

Typy rozhraní soketu

Rozhraní soketů lze rozdělit do tří kategorií:

  • Streamovací zásuvky: Toto je nejběžnější typ. Tyto dvě komunikující strany nejprve navážou soketové připojení, poté je zaručeno, že jakákoli data procházející tímto připojením dorazí ve stejném pořadí, v jakém byla odeslána (pomocí programovacího modelu orientovaného na připojení).
  • Datagramové zásuvky: Nabídka sémantiky bez připojení. U datagramů jsou připojení spíše implicitní než explicitní jako u streamů. Každá ze stran odesílá datagramy podle potřeby a čeká, až druhá odpoví. Zprávy mohou být ztraceny při přenosu nebo přijaty mimo provoz; aplikace se zabývá těmito problémy, ne sokety. Implementace soketů datagramu může poskytnout některým aplikacím zvýšení výkonu a další flexibilitu ve srovnání s používáním streamovacích soketů.
  • Surové zásuvky: Vynechejte vestavěnou podporu knihovny pro standardní protokoly, jako jsou TCP a UDP. Surové sokety se používají pro vývoj vlastního protokolu na nízké úrovni.

Podpora soketů v síťových protokolech

Moderní síťové zásuvky se obvykle používají ve spojení s internetovými protokoly IP, TCP a UDP. Knihovny, které implementují sokety pro internetový protokol, používají TCP pro streamy, UDP pro datagramy a IP pro nezpracované sokety. Ke komunikaci přes internet používají knihovny IP soketů IP adresu k identifikaci konkrétních počítačů. Mnoho částí internetu pracuje se službami pojmenování, takže uživatelé a programátoři soketů mohou pracovat s počítači podle názvu (například thiscomputer.wireless.lifewire.com) namísto podle adresy (například 208.185.127.40). Sokety streamů a datagramů také používají čísla IP portů k vzájemnému rozlišení více aplikací. Například webové prohlížeče na internetu vědí, že používají port 80 jako výchozí pro soketovou komunikaci s webovými servery.