Sokety: Zprostředkovatelé síťové komunikace

Alan Joch Sokety (sockets) spatřily světlo světa v roce 1980 na kalifornské univerzitě v Berkeley. Teh...


Alan Joch Sokety (sockets) spatřily světlo světa v roce 1980 na
kalifornské univerzitě v Berkeley. Tehdy vstoupily do světa Unixu
pod pojmem Berkeley Sockets Interface jako nástroj pro programátory
vyvinutý s cílem podpořit výměnu dat mezi vzdálenými počítači v
síti.
V polovině devadesátých let vytvořila společnost Microsoft vlastní
variantu soketů nazvanou Windows Sockets (v obecném povědomí se
zažil název WinSock), s cílem umožnit aplikacím v prostředí Windows
komunikovat prostřednictvím síťových spojení.
Zajímavě vysvětluje problematiku soketů softwarový inženýr Jim Frost
ve svém článku "Windows Sockets: A Quick and Dirty Primer" (Sokety
Windows: rychlý a ušmudlaný slabikář). Sokety podle něj ve světě
počítačového programování představují ekvivalent telefonu jsou
hlavními zprostředkovateli spojení, k čemuž stejně jako telefon
využívají vlastních numerických adres. Jakmile dojde ke spojení
soketů na opačných koncích komunikačního kanálu, může začít přenos
dat.
Probíhající spojení Programátoři používají pojmenování "klient" a
"server", aby rozlišili počítač, který volá, od počítače, který
volání přijímá. Počítače se serverovými sokety ponechávají
komunikační port otevřený a připravený pro jakékoli neplánované
volání. Typický průběh spojení je takový, že klienti určí číslo
portu požadovaného serveru tak, že toto číslo vyhledají v databázi
DNS (Domain Naming System). Po úspěšném připojení na straně serveru
probíhá takový menší tanec: místo aby server pokračoval v
konverzaci přes původní port, přesměruje dialog na jiný připojený
port, čímž uvolní hlavní linku pro případ, že by se pozornost
serveru snažili upoutat další klienti.

Programátoři
S rostoucím významem Internetu hrají stále důležitější roli i
sokety. Právě ony udržují tok komunikace běžící po Internetu, byť
tuto činnost provádějí skrytě.
"Každá aplikace, kterou používáte a která se jen dotkne Internetu,
je napsaná tak, aby využívala soketů," vysvětluje Frost ve svém
slabikáři. Sokety jsou například nedílnou součástí adres webových
serverů, webových prohlížečů a bezpečnostní technologie známé pod
označením SSL (Secure Sockets Layer, zabezpečená vrstva pro sokety).
V dnešní době jsou weboví programátoři téměř vždy chráněni před
nutností manuálně si vytvářet vlastní sokety. "Práce se sokety v
podstatě není pro vývoj webových aplikací nezbytná," říká Brian
Beej Jorgensen, autor webové publikace Beejs Guide to Network
Programming: Using Internet Sockets. "Ať již používáte programy v
Javě, servlety, CGI (Common Gateway Interface), PHP nebo cokoli
jiného, pravděpodobně nebudete muset nikdy explicitně otevírat
soket," vysvětluje dále. "Soket tam notabene stále je, zajišťuje
propojení mezi uživatelem a webovou aplikací, ale ty podstatné
maličkosti soketu zcela typicky zůstávají ukryté pod silnými
vrstvami, aby s nimi lidé nemuseli nic dělat. Na základě toho, co
jsme si teď řekli, je zřejmé, že všechny webové prohlížeče,
klienti FTP (file transfer protocol), e-mailoví klienti a jejich
připojené servery používají sokety k tomu, aby mohli pracovat."
Díky novým knihovnám a třídám s popisy soketů si mohou
programátoři oddychnout od břemene jejich vytváření. "Příkladem
takových knihoven jsou Microsoft Foundation Class Csocket a
CsocketFile," uvádí Frost. Programátoři aplikací pod Unixem zase
mohou použít Socket++. A také programátoři v Javě mají vlastní
sadu nástrojů pro definování soketů. Java.net.Socket je široce
používaná třída pro vytváření klientského soketu bez závislosti na
typu platformy, zatímco java.net.ServerSocket dokáže vybudovat soket,
který je připraven přijímat požadavky od klientů. S pomocí
uvedených tříd mohou programátoři rychle vytvářet sokety, aniž by
uvízli ve všech detailech, které jejich programování přináší.
Frost říká, že napsal vzorový kód ve svém textu "Coding a Simple
Socket" za 15 vteřin. Kolik času a úsilí by stejný úkol vyžadoval
v roce 1995? "Pravděpodobně bych to dokázal za 10 až 15 minut,
ale určitě bych to celé nevymyslel zpaměti," domnívá se. "Je
potřeba si pamatovat spoustu maličkostí názvy polí, která musíte
přidělit v adresové struktuře, a názvy konstant, které musíte
použít při vytváření soketu TCP."

Více o soketech
Internet je výborným zdrojem podrobných informací o vytváření soketů
na různých platformách. Stránky s následujícími adresami obsahují
řadu užitečných rad:
lPrůvodce pro uživatele WinSock 1.1 a 2.0 najdete na
www.sockets.com.

Nechybějí vzorové zdrojové texty kódu ani odkazy na další stránky.
Výukové lekce práce se sokety pro vývojáře v Javě se nacházejí na
http://java.sun.com/docs/books/tutorial/networking/sockets/.

Ten, kdo hledá rádce programátora v jazyce C, orientovaného na
vytváření soketů v Unixu, může zamířit na
www.db.stanford.edu/~cho/programming/unix-socket-faq.html.

Seznam často kladených dotazů týkajících se soketů v Unixu obsahují
stránky www.lcg.org/sock-faq/. lBeejs Guide to Network Programming:
Using Internet Sockets (Beejův průvodce síťovým programováním s
použitím internetových soketů), jehož autorem je Brian "Beej"
Jorgensen, se nachází na:
www.ecst.csuchico.edu/~beej/guide/net/html/index.html.

Text Windows Sockets: A Quick and Dirty Primer (Sokety Windows:
rychlý a ušmudlaný slabikář), jehož autorem je Jim Frost, naleznete
na:
http://world.std.com/~jimf/papers/sockets/winsock.html.
1 1489 / pen









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.