Warning: Undefined array key "HTTP_X_WP_TEMPORARY" in /data/b/6/b68f8f32-ca58-47e9-9067-92e2d2f3728c/masnaviac.sk/sub/labyrint/wp-config.php on line 68

Warning: Undefined array key "HTTP_X_WP_TEMPORARY" in /data/b/6/b68f8f32-ca58-47e9-9067-92e2d2f3728c/masnaviac.sk/sub/labyrint/wp-config.php on line 69
december 2018 - LABYRINT

Mesiac december 2018

Formát UDP segmentu

Pokiaľ nevyžadujeme, aby dáta boli spoľahlivo doručené, je výhodnejšie použiť namiesto TCP paketu UDP (User Datagram Protocol) paket. Jeho výhodou je menšia veľkosť (hlavička je dvaapolkrát menšia ako pri TCP segmente). Protokol UDP je connection-less, pričom prenos dát nie je garantovaný. Spoľahlivý prenos dát je úloha vyšších vrstiev, rovnako aj  spracúvanie a opravovanie chýb vzniknutých pri prenose. UDP nepoužíva žiadne sekvenčné čísla a ani potvrdzovanie paketov. Je vhodný pre aplikácie, ktoré nepotrebujú vkladať sekvenčné čísla do segmentov, a teda nie je kladená podmienka na garantovanie bezchybného prenosu. UDP využívajú napríklad protokoly TFTP, SNMP, DHCP a DNS. Formát UDP segmentu vidíme aj na obrázku. Význam jednotlivých položiek je rovnaký ako pri TCP segmente.

Formát TCP segmentu

Protokol TCP transportnej vrstvy je connection-oriented, čiže ešte pred odosielaním dát je spojenie dopredu vybudované a zároveň umožňuje fullduplexnú prevádzku. To znamená, že dáta môžu byť prijímané aj odosielané súčasne. TCP poskytuje virtuálny kanál medzi aplikáciami koncových používateľov. Medzi protokoly, ktoré využívajú TCP, patrí napr. protokol HTTP, FTP, Telnet, SMTP a iné. Na obrázku vidíme formát TCP segmentu. Jednotlivé položky majú nasledujúci význam: Zdrojový a cieľový port: porty, na ktorých aplikácie medzi sebou komunikujú Sekvenčné číslo: slúži na zabezpečenie, že dáta prídu v správnom poradí Potvrdzovacie číslo: číslo udávajúce nasledujúci očakávaný oktet (ACK) Dĺžka hlavičky: udáva, aká je veľkosť hlavičky Reserve: rezervovaná časť segmentu, ktorá je nastavená na samé nuly Kódové bity: kontrolné funkcie, slúžiace napr. na inicializáciu a rozpad spojenia, majú veľkosť 6 bitov Veľkosť okna: množstvo dát, ktoré môže odosielateľ poslať pred tým, ako bude požadovať potvrdenie Kontrolný súčet: kontrolný súčet celého segmentu, hlavičky aj samotných dát Ukazovateľ dôležitosti: indikuje koniec urgentných dát Možnosti: jedna momentálne definovaná možnosť, napr. maximálna veľkosť TCP segmentu Dáta: samotné dáta, ktoré odosielajú vyššie vrstvy

Pozorovanie paketov – Acknowledgement

Spoľahlivý prenos dát zabezpečuje, že dáta odoslané vysielacou stanicou sú prenesené cez sieť až k príjemcovi bez toho, aby boli poškodené alebo aby sa stratili. Jeden z mechanizmov, ktorým sa to dá zabezpečiť, je pozitívne potvrdzovanie – vyžaduje, aby príjemca dát komunikoval s odosielateľom a poslal mu potvrdenie ACK, že dáta dostal v poriadku. Odosielateľ si vždy poznačí každý odoslaný paket a očakáva naň potvrdenie ACK. Súčasne v okamihu odoslania spustí časovač, a ak potvrdenie nepríde skôr, ako uplynie časovač, odošle tento paket znova. Protokol TCP obsahuje aj mechanizmus zoradenia a číslovania paketov, kde jednotlivé pakety sú zoradené a odoslané za sebou. Každý paket je ešte pred odoslaním očíslovaný a príjemca si dáta pomocou týchto čísel usporiada do správneho poradia. V prípade, keby nejaký paket v postupnosti chýbal (napríklad sa cestou stratil), príjemca si vyžiada jeho opätovné preposlanie. K opätovnému preposlaniu by došlo aj v prípade, keby odosielateľovi expiroval časovač.

Oknový mechanizmus v TCP/IP

Ak má byť prenos dát efektívny, musia byť dáta doručené v takom poradí, v akom boli odoslané. Ak sú na prijímacej strane dáta poškodené, zduplikované alebo stratené, protokol zlyhá a musí dôjsť k opätovnému prenosu týchto dát. Jednoduchým riešením by bolo potvrdzovanie každého prijatého paketu. Toto riešenie by však bolo veľmi neefektívne, pretože by výrazne znížilo priepustnosť siete. Preto veľa connection-oriented protokolov využíva mechanizmus, ktorý dovoľuje odoslať viacero paketov a až následne očakávať ich prijatie. Časový interval medzi odoslaním posledného paketu a prijatím potvrdenia z druhej strany sa využije na ďalšie odosielanie dát. Množstvo dát, ktoré odosielateľ pošle pred prijatím potvrdenia  – veľkosť okna. Oknovanie predstavuje fakt, že veľkosť okna nie je dopredu pevne stanovená, ale dynamicky sa mení počas spojenia TCP. Je to istý druh riadenia toku dát, pričom cieľová stanica potvrdí prijatie daného počtu paketov a oznámi odosielateľovi aj aktuálnu veľkosť okna. Táto veľkosť znamená množstvo paketov, ktoré je schopný príjemca dostať od odosielateľa.

Three-way handshake

Vzhľadom na to, že TCP je connection-oriented protokol, vyžaduje, aby bolo spojenie vybudované ešte pred prenosom dát. Prijímacia a odosielajúca strana si musia najskôr zosynchronizovať ich sekvenčné čísla, aby sa mohol začať prenos. Synchronizácia sa uskutočňuje výmenou segmentov, ktoré nesú synchronizačný bit (označovaný ako SYN) a počiatočné sekvenčné číslo – INS (Initial sequence number). To vyžaduje mechanizmus, ktorý sa nazýva handshake – niečo ako potriasanie rúk pri stretnutí ľudí. Synchronizácia vyžaduje, aby každá strana poslala vlastné počiatočné sekvenčné číslo (INS) a aby dostala potvrdenie tejto výmeny – acknowledgement (ACK). Celý tento mechanizmus sa realizuje v troch krokoch (preto threeway handshake).  Odosielajúci počítač (A) ziniciuje spojenie s počítačom tak, že odošle SYN paket, ktorý bude obsahovať jeho sekvenčné číslo X. Prijímajúca strana (B) dostane paket so sekvenčným číslom počítača A (toto číslo má hodnotu X), a odpovie paketom ACK, v ktorom bude hodnota X+1, a súčasne paketom SYN, v ktorom bude počiatočné sekvenčné číslo počítača B nastavené na hodnotu Y. Paket ACK (X+1) = počítač B dostal všetky pakety po číslo X a očakáva paket X+1. Počítač A dostane od počítača B paket, ktorý obsahuje INS počítača B rovné hodnote Y, a odpovie paketom ACK (Y+1), čím sa opäť potvrdí prijatie všetkých Y paketov a očakáva sa paket Y+1. Tým je spojenie vybudované a môže nastať prenos dát. Three-way handshake je veľmi dôležitý, pretože sekvenčné čísla nie sú založené na globálnom časovaní v sieti a protokoly TCP môžu používať rozličné mechanizmy na výpočet počiatočného sekvenčného čísla. Príjemca prvého SYN paketu nevie, či sa prijatý segment oneskoril, pokiaľ nezistí posledné sekvenčné číslo na danom spojení. Ak príjemca túto informáciu nemá, musí požiadať odosielateľa o overenie jeho SYN paketu. Celý tento proces je aj na obrázku.

Začatie, udržiavanie a ukončenie spojenia

Ak neuvažujeme o službe QoS (Quality of Service), kde sú niektoré dáta uprednostnené pred inými, sú dáta odosielané spôsobom FIFO – First In, First Out (znamená to, že dáta sú odosielané v takom poradí, v akom prídu) Tieto segmenty môžu byť smerované všetky do tej istej siete, ale aj do úplne odlišných sietí. Viacero aplikácií môže zdieľať to isté spojenie – multiplexovanie (konverzácie z vyšších vrstiev modelu OSI) Úloha transportnej vrstvy je vytvoriť connection-oriented spojenie, teda vybudovať cestu pre dáta od odosielateľa až po príjemcu. Na začiatku spojenia aplikácie, ktoré požadujú prenášať dáta, informujú operačný systém o začiatku vytvárania spojenia. Odosielateľ iniciuje spojenie, ktoré musí príjemca akceptovať. Pred prenosom si počítače navzájom vymenia informácie, ktorými sa informujú o pripravenosti na prenos dát. Keď je spojenie vytvorené, prebieha prenos dát. Odosielateľ si vždy kontroluje, či jeho dáta príjemca naozaj dostal. Jedna z príčin, prečo dáta neboli správne doručené, môže byť zahltenie siete – môže nastať z dvoch dôvodov: 1. Ak odosielateľ posiela dáta rýchlejšie, ako je príjemca schopný ich spracúvať – práve túto situáciu rieši transportná vrstva tak, že zníži rýchlosť odosielania dát pre daného príjemcu 2. Ak sa veľa počítačov snaží odosielať dáta tomu istému cieľu, čím dôjde k jeho zahlteniu (pritom ani jeden z odosielateľov túto situáciu nezapríčinil) Ak datagramy prichádzajú prirýchlo, ukladajú sa do dočasnej pamäte. Ak sa pokračuje v prenose, časom sa pamäť zaplní a dôjde k zahodeniu dát, ktoré sa už do nej nezmestia. Aby sa to nestávalo, protokol TCP na prijímacej strane vyšle indikátor nepripravenosti, pomocou ktorého sa odosielateľ dozvie, že má prestať s prenosom. Po istom čase, keď sú dáta spracované, odosielateľ odošle indikátor pripravenia – odosielateľovi oznámi pripravenosť na ďalší príjem dát. Po úspešnom skončení odosielania a prijímania dát odošle stanica, ktorá inicializovala spojenie, správu o ukončení odosielania dát. Príjemca potvrdí prijatie tejto správy a prenos je zrušený.

Riadenie toku

Len čo transportná vrstva odošle dáta, pokúša sa zabezpečiť, aby sa nestratili. Tomu sa hovorí mechanizmus best-effort, čiže protokol urobí všetko preto, aby sa dáta doručili správne, ale nemôže garantovať, že sa tak aj stane. K strate môže dôjsť napríklad v prípade, ak prijímajúci počítač nedokáže dáta spracúvať tak rýchlo, ako prichádzajú, a preto je nútený zahodiť ich. Riadenie toku zabezpečí, že prijímaciemu počítaču nepretečú zásobníky. TCP/IP zabezpečí komunikáciu medzi počítačmi tak, aby vyhovovala obidvom stranám. Toto riadenie toku sa uskutočňuje pomocou windowingu.