Protokol UDP. Aký je rozdiel medzi protokolom TCP z UDP, v jednoduchom jazyku

O protokoloch na úrovni kanálov a siete TCP / IP balíčekSúvisiace s hlavným mechanizmom pre prenos dátových blokov medzi krajinami a medzi sieťami, sú základom TCP / IP.. Používajú protokol zásobník, ale nepoužívajú sa priamo v aplikáciách, ktoré pracujú na protokole TCP / IP.. V tomto článku sa pozrieme na dva protokoly, ktoré používajú aplikácie: užívateľský datagram protokol (UDP) a prevodovka (TCP).

Protokol používateľa Datagram
Užívateľský protokol Datagram je veľmi jednoduchý protokol. Ako ja. IP.Ide o spoľahlivý protokol bez zlúčenín. Nemusíte nadviazať spojenie s hostiteľom na výmenu údajov s ním, pomocou UDP.A neexistuje žiadny mechanizmus na poskytnutie prenosných údajov.
Dátový blok prenášaný pomocou UDP. nazývaný Datagram. UDP. Do vysielaných dát pridáva štyri 16-bitové polia hlavičky (8 bajtov). Tieto polia: dĺžka poľa, pole kontrolného súčtu, ako aj zdrojový a portový počet cieľov. "Port", v tomto kontexte, je prístavný softvér, nie hardvérový port.
Koncepcia čísla portu je spoločná pre obe UDP a TCP.. Čísla portov určujú, ktorý modul protokolu pošle (alebo dostane) údaje. Väčšina protokolov má štandardné porty, ktoré sa bežne používajú. Napríklad Telnet Protocol zvyčajne používa port 23. Jednoduchý protokol prenosu pošty (SMTP) používa port 25. Používanie štandardných čísel portov umožňuje klientom komunikovať so serverom bez predchádzajúceho súboru, ktorý port používať.
Číslo portu a protokolu v poli hlavičky IP. Duplikujte do určitej miery, aj keď polia protokolu nie sú k dispozícii pre protokoly s vyššou úrovňou. IP. používa pole protokolu na určenie, ak by sa mali zasielať údaje UDP. alebo Tcp. Moduly. UDP. alebo Tcp. Použite číslo portu, aby ste určili, ktorý protokol úrovne aplikácie musí prijímať údaje.
Napriek, UDP. Nie je to spoľahlivé, je to stále vhodnou voľbou pre mnohé aplikácie. Používajú sa pomocou aplikácií v reálnom čase, ako je streaming audio a video, kde, ak sa údaje stratia, je lepšie robiť bez neho, než ho znova poslať v poriadku. Používajú sa aj protokoly, ako je napríklad jednoduchý protokol správy siete (SNMP).
Vysielať
UDP. Vhodné pre informácie o informáciách, pretože nevyžaduje otvorené pripojenie. V súčasnej dobe vysielacieho hlásenia je definovaná odosielateľom, na cieľovú adresu IP uvedenú na adrese IP. UDP. Datagrams s IP adresou IP Všetky binárne 255.255.255.255) a každý hostiteľ bude získaný v lokálnej sieti. Venujte pozornosť slovom Local: Datagrams s touto adresom nebudú akceptované smerovačom na internet.
Prevodovky môžu byť nasmerované na špecifické siete. UDP Datagramma Z hostiteľa a podsiete časti IP adresy, nastavte ako binárne vysielanie do všetkých uzlov na všetkých sieťových podsvíja, čo zodpovedá čistej časti IP adresy. Ak je len prijímacia strana (inými slovami, všetky bity, ktoré sa rovná nule v masku podsiete), je nastavená na binárne, vysielanie je obmedzené na všetky hostitelia v podsiete, ktoré zodpovedá zvyšku adresy.
Multicast sa používa na prenos údajov v hostiteľskej skupine, ktorá vyjadrila ich túžbu prijímať. Multicast UDP. Datagram má adresu schôdzky, v ktorej sú prvé štyri bity 1110 opatrené adresy v rozsahu 224.xxx v 239.xxx. Zostávajúce bity adresy sa používajú na označenie skupiny multicast. To je skôr ako rádiový alebo televízny kanál. Napríklad 224.0.1.1 sa používa pre protokol NTP. Ak TCP / IP. Aplikácie chcú získať multicastovú správu, musia sa pripojiť k zodpovedajúcej skupine multicast, ktorú robí, prejde skupinovú adresu do zásobníka protokolu.
Široké vysielanie, v skutočnosti, filtrovaný prenos. MultiCaster nepovažuje jednotlivé správy pre každý hostiteľa, ktorý spája skupinu. Namiesto toho sa správy na vzduchu a ovládače na každom hostiteľovi rozhodnú, či ich ignorovať alebo preniesť obsah zásobníka protokolu.
To znamená, že multicastové správy musia byť vysielané na celom internete, pretože MultiCaster nevie, ktoré hostitelia chcú prijímať správy. Našťastie to nie je potrebné. IP využíva protokol s názvom Internet Group Management Protocol (IGMP), aby nahlásil smerovače, ktoré hostitelia chcú prijímať správy skupiny multicast, takže správy sa posielajú len tam, kde sú potrebné.
Protokol o riadení prenosu
Protokol o riadení prenosu je protokol úrovne dopravy a používa sa väčšina internetových aplikácií, ako napríklad Telnet, FTP a HTTP. Ide o protokol so zriadením spojenia. To znamená, že dva počítače sú jeden klient, iný server a medzi nimi je potrebné stanoviť spojenie pred odoslaním údajov medzi nimi.
Tcp. Poskytuje spoľahlivosť. Použitie, ktoré používa Tcp. Vie, že posiela údaje získané na druhom konci, a že ich dostal správne. Tcp. Používa kontrolné súčety, titulky a údaje. Po prijatí údajov Tcp. Pošle potvrdenie späť odosielateľovi. Ak odosielateľ nedostáva potvrdenie v určitom časovom období, údaje sa znova odosielajú.
Tcp. Zahŕňa mechanizmy prenosu dát, ktoré sa vyskytujú v opačnom poradí, ako boli odoslané. Implementuje tiež kontrolu prietoku, takže odosielateľ nemôže potlačiť prijímač údajov.
Tcp. Odosiela údaje pomocou IP, v blokoch, ktoré sa nazývajú segmenty. Dĺžka segmentu je určená protokolom. Okrem hlavičky IP sa každý segment skladá z 20 bajtov titulu. Titul Tcp. Začína 16-bitový zdroj a cieľ číslo portu. Ako ja. UDP.Tieto polia definujú úroveň aplikácie, ktorá je nasmerovaná a prijímať údaje. IP adresa a číslo portu, kombinované jednoznačne identifikovať služby, ktoré pracujú na majiteľa a pár známy ako hniezdo.
Ďalej, názov ide 32-bitové poradové číslo. Toto číslo určuje pozíciu v toku údajov, ktorý by mal zaberať prvý bajt údajov v segmente. Sériové číslo Tcp. Umožňuje udržiavať dátový tok v správnom poradí, aj keď segmenty môžu byť získané zo sekvencie.
Nasledujúce pole je 32-bitové pole, ktoré sa používa na prenos späť odosielateľovi, že údaje boli získané správne. Ak je vlajka ACK, ktorá sa zvyčajne stáva, toto pole obsahuje pozíciu ďalších dátových bajtov, ktoré segment segment očakáva.
V Tcp. Nie je potrebný pre každý segment údajov, ktorý bude uznaný. Hodnota v poli potvrdenia sa interpretuje ako "všetky údaje sú stále získané cca." Uloží šírku pásma, keď sú všetky údaje odoslané na jednej strane, čo znižuje potrebu rozpoznať segmenty. Ak sú údaje súčasne odoslané v oboch smeroch, a to ako v plnej duplexnej komunikácii, potom značky nesúvisia s nákladmi, pretože segment prenosu dát v jednom smere môže obsahovať potvrdenie o prenosných dát odlišne.
Ďalej je v názve reprezentovaný 16-bitové pole obsahujúce dĺžku záhlavia a vlajok. Tcp. Záhlavia môžu obsahovať ďalšie polia, takže dlho sa môžu meniť od 20 do 60 bajtov. Vlajky: URG, AKK (ktoré sme už spomínali), PSH, RST, SYN a FIN. Neskôr sa pozrieme na niektoré ďalšie vlajky.
Hlavička obsahuje pole nazývané veľkosť okna, ktorá dáva číslo bajtov, ktoré prijímač môže prijať. K dispozícii je tiež 16-bitový kontrolný súčet pokrývajúci názov aj údaje. Nakoniec (k dodatočným údajom) je pole s názvom "index naliehavosti". Keď je nastavená vlajka URG, táto hodnota sa interpretuje ako posunutie poradového čísla. Definuje začiatok údajov v potoku, ktorý musí byť určený naliehavo. Tieto údaje sa často nazývajú "mimo dát skupiny". Príklad jeho použitia, keď užívateľ stlačí tlačidlo Break, aby ste prerušili výstup z programu počas relácie Telnet.

Dobrý deň, všetci dnes povedia, čo TCP protokol sa líši od UDP. Protokoly na úrovni dopravy Po prevode údajov medzi aplikačnými procesmi implementovanými v sieťových uzlinách sa používajú protokoly podľa IP hierarchie. Data paket prijatý z jedného počítača do druhého prostredníctvom internetu by sa mal preniesť do procesu spracovania a je presne špecifický. Dopravná úroveň za to za predpokladu, zodpovednosť za to. Na tejto úrovni sú dva hlavné protokoly TCP a UDP.

Čo znamená TCP a UDP

Tcp. - Protokol prenosu prenosu v sieťach TCP / IP, predbežné vytvorenie pripojenia k sieti.

UDP. - Dopravný protokol, ktorý prenáša správy-datagram bez nutnosti nastavenia pripojenia k sieti IP.

Pripomínam vám, že oba protokoly pôsobia na úrovni dopravnej úrovne modelu OSI alebo TCP / IP, a pochopenie, že sa veľmi dôležité.

Rozdiel medzi protokolmi TCP a UDP

Rozdiel medzi protokolmi TCP a UDP je v tzv. "Doručovacej záruke". TCP vyžaduje odozvu od klienta, ku ktorému je dátový paket dodaný, potvrdzuje dodanie, a na to je potrebné vopred zloženie. TCP protokol je tiež spoľahlivý, zatiaľ čo UDP dokonca dostal pomenovanie "protokol nespoľahlivého datagramu. TCP eliminuje stratu dát, duplikáciu a miešanie balíkov, oneskorenia. UDP to všetko umožňuje a nie je potrebné sa pripojiť k práci. Procesy, ktoré údaje prenášajú UDP, by sa mali získať aj so stratami. TCP riadi zaťaženie pripojenia, UDP nič nekontroluje okrem integrity prijatého datagramu.

Na druhej strane, vďaka takejto nevoľnosti a nekontrolovanosti, UDP prináša dátové pakety (datagram) oveľa rýchlejšie, pretože pre aplikácie, ktoré sú navrhnuté pre širokú šírku pásma a rýchlu výmenu, môže byť UDP považovaný za najlepší protokol. Patrí medzi ne siete a prehliadače hry, ako aj streamovanie video a video prezeranie programov (alebo hlas): od straty balíka, plného alebo čiastočného, \u200b\u200bnič sa nezmení, nie je potrebné opakovať žiadosť, ale sťahovanie je oveľa rýchlejšie. TCP protokol, ako je spoľahlivejší, sa úspešne aplikuje aj v mailových programoch, čo vám umožní kontrolovať nielen prevádzku, ale aj dĺžku správy a mieru obchodovania s ľuďmi.

Poďme zvážiť hlavné rozdiely medzi TCP z UDP.

  1. TCP zaručuje dodávku dátových paketov v konštantnej forme, sekvenciách a bez straty, UDP nič nezaručuje.
  2. TCP čísla prenosu balíkov a UDP nie je
  3. TCP pracuje v duplexnom režime, v jednom balíku môžete posielať informácie a potvrdiť prijatie predchádzajúceho balíka.
  4. TCP vyžaduje vopred stanovené spojenie, pripojenie UDP nevyžaduje, je to len tok údajov.
  5. UDP poskytuje vyššiu rýchlosť prenosu dát.
  6. TCP je spoľahlivejší a kontroluje proces výmeny údajov.
  7. UDP je vhodnejšie pre programy, ktoré reprodukujú streaming video, video telefóny a telefónia, sieťové hry.
  8. UPT neobsahuje funkcie obnovy dát

Príklady aplikácií UDP možno napríklad priniesť, vysielať zóny DNS v službe Active Directory, nevyžaduje spoľahlivosť. Veľmi často sa takéto otázky milujú požiadať o rozhovory, aby bolo veľmi dôležité poznať rozdiely TCP a UDP.

TCP a UDP titulky

Pozrime sa na to, čo vyzerajú tituly dvoch dopravných protokolov, pretože potom rozdiely sú kardinál.

Názov UDP

  • 16 Zdrojový bitový port\u003e Zdrojový port pre UDP voliteľne. Ak sa toto pole používa, príjemca môže odoslať odpoveď na tento port.
  • 16 Cieľový bitový port\u003e číslo portu
  • 16 bitová dĺžka UDP\u003e Dĺžka správ, vrátane názvu a údajov.
  • 16 bitový kontrolný súčet\u003e Kontrolný súbor hlavičky a kontrolu údajov

TCP TITLE

  • 16 Zdrojový bitový port\u003e číslo zdroja portu
  • 16 Cieľový bitový port\u003e číslo portu
  • 32 bitové sériové číslo\u003e Sériové číslo je generované zdrojom a používa sa priradením na vyrovnanie balíkov na vytvorenie zdrojovej správy a odoslať potvrdenie na zdroj.
  • 32 bitové potvrdenie o potvrdení\u003e Ak je pole Spýtajte sa na pole "Control", toto pole obsahuje ďalšie očakávané sériové číslo.
  • 4 BIT Dĺžka hlavičky\u003e Informácie o začiatku dátového paketu.
  • rezerva\u003e Vyhradené pre budúce použitie.
  • 16 bitový kontrolný súčet\u003e Kontrolný súčet záhlavia a údajov; Určuje, či bol balík skreslený.
  • 16 Urgentný ukazovateľ\u003e V tomto poli prijímacie zariadenie prijíma informácie o naliehavosti údajov.
  • Parametre\u003e Voliteľné hodnoty, ktoré sú v prípade potreby uvedené.

Veľkosť okna vám umožňuje zachrániť prevádzku, zvážiť, kedy je jeho hodnota 1, tu pre každú odoslanú odpoveď, odosielateľ čaká na potvrdenie, nie je úplne racionálne.

S veľkosťou okna 3, Sender už pošle 3 rámy, a čaká na 4, čo znamená, že všetky tri snímky, ktoré má, +1.

Dúfam, že teraz máte nápady o rozdieloch protokolov TCP UDP.

Veľmi sa mi páči celý cyklus článkov, plus sa vždy chcel vyskúšať ako prekladateľ. Možno, že skúsení vývojári, článok sa zdajú byť príliš zrejmé, ale zdá sa mi, že prínos z nej bude v každom prípade.

Ahoj, moje meno je Glenn Fidler a vítam Vás v prvom článku z mojej online knihy "Sieťové programovanie pre vývojárov hier".

V tomto článku začneme s najzákladnejšími aspektmi sieťového programovania - príjem a prenos dát cez sieť. Užívanie a prenos údajov je hlavnou a najjednoduchšou časťou celého kruhu úloh, v ktorej sú sieťovateľov, ktorí sú zapojení, ale často je ťažké určiť, koľko je lepšie pohybovať sa. Zaplatiť túto časť dostatočnú pozornosť - ak máte nedorozumenie, môže to viesť k hrozným dôsledkom pre vašu multiplayerovú hru v budúcnosti!

Ty, s najväčšou pravdepodobnosťou, už o zásuvkach, a možno viete, že sú rozdelené do dvoch hlavných typov - TCP a UDP. Prvá vec, ktorú má vyriešiť pri vývoji multiplayerovej hry, je to, aký typ zásuviek používa - TCP, UDP, alebo oboje?

Voľba typu zásuviek je úplne závislá od žánru hry, ktorú sa vyvíjate. V tomto cykle článkov budem predpokladať, že píšete hru v štýle akcie - ako halo Halo, Battlefield 1942, Quake, Unreal, Counterstrike, Tímová pevnosť, atď.

Teraz sa pozrieme na vlastnosti každého typu zásuviek podrobnejšie (vzhľadom na skutočnosť, že rozvíjame hru v štýle akcie) a urobíme trochu hlbšie do pracovných detailov na internete. Po podrobnom preskúmaní sa správna možnosť stane zrejmé!

TCP je dešifrovaný ako "Protokol o regulácii prenosu" (protokol o prenose) a IP - ako "internetový protokol". Spoločne podliehajú takmer všetkému, čo robíte v sieti, počnúc pri prezeraní webových stránok a končiacu komunikáciou v IRC a e-mailu - všetko funguje na základe TCP / IP.

Ak ste niekedy už používali zásuvky TCP, mali by ste vedieť, že TCP je protokol, ktorý používa princíp spoľahlivého spojenia. To znamená, že nainštalujete spojenie medzi dvoma počítačmi a potom predložíte údaje medzi nimi, rovnako ako keby ste nahrávali informácie so súborom na jednom počítači, a na druhej strane by ho prečítali z toho istého súboru.

V tomto prípade sa pripojenie považuje za spoľahlivé a sériové - to znamená, že všetky informácie, ktoré odosielate, je zaručené, že dosiahne príjemcu v tom istom poradí, v ktorom bola odoslaná. Tiež TCP pripojenie možno považovať za kontinuálny dátový tok - samotný protokol sa stará o členenie údajov o paketoch a ich presmerovanie cez sieť.

Viac času - všetko je jednoduché ako obvyklý vstup alebo čítanie zo súboru. Elementary Watson!

Ale taká jednoduchosť v obehu je úplne odlišná od toho, čo sa skutočne deje pod kapotou, na nižšej úrovni - úroveň IP protokolu.

Na tejto úrovni neexistuje koncepcia pripojenia - namiesto toho sa jednotlivé pakety prenášajú z jedného počítača do druhého. Tento proces môžete predložiť ako prevod šrotu z jednej osoby do druhého v miestnosti, plnohodnotnými ľuďmi: nakoniec je poznámka, s ktorou je to potrebné, ale zároveň prechádzal mnohými rukami.

Zároveň neexistuje žiadna záruka, že poznámka príde do adresáta. Odosielateľ jednoducho pošle poznámku v nádeji, že príde, ale zároveň nevie, či správa prišla alebo nie - kým sa príjemca rozhodne písať v reakcii.
Prirodzene, v skutočnosti je všetko trochu komplikovanejšie, pretože počítač odosielateľa nepozná presnú sekvenciu počítačov v sieti, cez ktorú musí byť obal prevedený tak, aby sa mohol dosiahnuť čo najrýchlejšie. Niekedy IP prenáša niekoľko kópií toho istého balíka, ktorý môže ísť do adresáta rôznymi cestami - a s najväčšou pravdepodobnosťou sa dosiahne v rôznych časoch.

A čo ak chceme posielať informácie medzi počítačmi, nie v štýle čítania / zápisu do súboru, ale posielanie a prijímanie jednotlivých balíkov?

Môžeme to urobiť pomocou UDP. UDP je dešifrovaný ako "užívateľský datagramový protokol" (vlastný datagramový protokol), a to funguje cez IP (napr. TCP), ale namiesto pridania hromady funkčnosti, predstavuje len malú nadstavbu cez IP.

Použitie UDP, môžeme poslať balík špecifickou adresou IP (napríklad 112.140.20.10) a port (napríklad 52423), a bude prenášaný z počítača do počítača, kým nedosiahne cieľ (alebo nestratí pozdĺž cesty).

Zároveň sedíme na boku prijímača a počkajte, počúvame určitý prístav (52423 v našom prípade) a keď k nej prichádza balík od niekoho (nezabudnite, že sa nepripojenia nepoužívajú), dostaneme Oznámenie s adresou a adresujte port počítača odosielateľa, veľkosť balíka a potom môžeme prečítať údaje z tohto balíka.

Protokol UDP nezaručuje dodávku údajov. V praxi, väčšina balíčkov, samozrejme, dosah, ale vždy existujú straty asi 1-5%, a niekedy existujú časové obdobie, v ktorých balíky sa vôbec nedosiahnu (nezabudnite, že tisíce počítačov môžu byť medzi odosielateľom a príjemcom , na ktoromkoľvek z nich môže odmietnuť alebo prestávku).

UDP tiež nezaručuje objednávku na doručovanie balíkov. Môžete poslať päť balíkov v poriadku - 1, 2, 3, 4, 5 - a prísť, že môžu úplne v inom poradí - napríklad 3, 1, 2, 5, 4. opäť, v praxi, budú s najväčšou pravdepodobnosťou Vo väčšine prípadov je možné, že je nemožné spoliehať sa na to!

Nakoniec, aspoň UDP a nič zvlášť prispieva k OP, jedna vec je stále zaručená. Ak pošlete balík, buď prichádza úplne, alebo sa vôbec nedosiahne. Takže, ak pošlete balík 256 bajtov do iného počítača, potom nemôže získať len prvých 100 bajtov z balíka - musí prijímať všetky 256 bajtov. Toto je skutočný, že záruky protokolu UDP - všetko ostatné spadne na ramená.

Takže potrebujeme rozhodnúť - používať TCP alebo UDP zásuvky? Pozrime sa na ich vlastnosti:

  • Používa princíp zlúčenín
  • Zaručuje dodanie a objednávku
  • Automaticky rozbije informácie o balíkoch
  • Predstavuje príliš intenzívne odosielať údaje (ovládanie toku dát)
  • Jednoduché použitie - Ako písať / čítať zo súboru
UDP:
  • Nepoužíva princíp zlúčenín - budete musieť ju vykonať manuálne
  • Nezáleží na dodávke a objednávke balíka - môžu sa dostať do nesprávneho poriadku, s duplikátom, alebo nechodia vôbec!
  • Musíte manuálne rozdeliť údaje na balíkoch a pošlite ich
  • Potrebujete zabezpečiť, aby ste údaje neposielali príliš intenzívne
  • Ak je balík stratený, musíte to nejako sledovať a v prípade potreby ho znova odoslať
S takýmto zoznamom sa riešenie zdá byť zrejmé - TCP implementuje všetky funkcie, ktoré nás potrebuje a je ľahšie ho používať, zatiaľ čo použitie UDP sľubuje hemoroidy s písaním všetko vo svetle manuálne, od nuly. Takže používame TCP, že?

A tu nie je.

Použite TCP je pravdepodobne najhoršia chyba, ktorá môže byť vykonaná vývojom hry pre multiplayer. Pochopiť, prečo, poďme na to, čo robí TCP taký ľahko použiteľný!

Ako funguje TCP
TCP a UDP pracujú na vrchole IP, ale v skutočnosti sú úplne odlišné. UDP sa chová veľmi podobná IP, zatiaľ čo TCP abstrahuje používateľa zo všetkých problémov s balíčkami, čo robí interakciu s ňou podobnú čítaniu / zápisu do súboru.

Ako to robí?

Po prvé, TCP používa abstrakciu dátového toku - môžete jednoducho písať dátové bajty na tento prúd, a TCP sa postará, aby prišli k adresátovi. Vzhľadom k tomu, IP protokol prenáša tieto balíky a TCP beží cez IP, TCP musí prerušiť vstupný tok užívateľa do jednotlivých balíkov. Tak, vo vnútri TCP, niektoré logické zhromažďuje údaje vo fronte, a keď sú dosť nahromadené, tvorí balík a pošle ho adresátovi.

Takéto správanie môže byť problémom pre našu hru multiplayer, ak potrebujete prenášať veľmi malé balíčky. Môže sa stať, že TCP sa rozhodne neprenášať naše údaje, kým nie sú dostatočne nahromadené na vytvorenie balíka určitej veľkosti (povedzme viac ako sto kauil). A to je veľký problém, pretože potrebujete prenášať údaje z klienta (stlačenie klávesov prehrávača) na server čo najrýchlejšie, a ak sa uskutočnia oneskorenia v dôsledku protokolu vyrovnávacej pamäte dát, potom pre prehrávač na strane klienta Hra bude ďaleko od najpríjemnejšej cesty. Aktualizácia herných objektov sa zároveň vyskytne s oneskorením a zriedkam - zatiaľ čo potrebujeme aktualizovať objekty včas a často.

V TCP je možnosť opraviť toto - "TCP_NODELAY". Hovorí protokol tak, že nečaká na akumuláciu údajov vo fronte na odoslanie, a okamžite ich poslal.

Bohužiaľ, dokonca aj s touto voľbou založenou touto možnosťou, TCP má mnoho problémov pri používaní v sieťových hrách.

Koreňom všetkých problémov je, ako stratené TCP procesov, ktorí vychádzajú, vytvárajú ilúziu spoľahlivého a konzistentného spojenia.

Ako TCP zabezpečuje spoľahlivosť pripojenia
Pri prenose TCP prelomí dátový prúd na jednotlivé pakety, postúpi ich cez sieť pomocou nespoľahlivého IP protokolu a potom na prijímajúcom počítači obnoví počiatočný prietok z prijatých paketov.

Ale čo sa stane, ak jeden z balíčkov nedosiahne? Alebo ak pakety neprichádzajú v poriadku, alebo s duplikátmi?

Ak nie ste obzvlášť vylučovaný do detailov operácie TCP (a to je naozaj veľmi náročná téma - môžete čítať v TCP / IP ilustrované), proces vyzerá takto: TCP odošle balík, určuje, že balík nie je REACH a znova odošle rovnaký balík do toho istého balíka. Duplicitné pakety sú eliminované na strane adresáta a balíky, ktoré prišli nie sú v poriadku, sú preložené, takže všetko je podľa potreby - spoľahlivo a v poriadku.

Problém je, že keď teda TCP teda "synchronizuje" tok dát, v prípade straty paketu, prevodovka sa zastaví, kým nie je stratený balík opäť odoslaný (a prijatý adresátom). Ak budú počas čakania nové údaje, budú frontovaní a nebudete môcť prečítať, kým príde najviac stratený balík. Ako dlho trvá balík znova? Trvá aspoň čas rovnajúca sa časom priechodu balíka a chrbta (keď TCP určuje, ktorý balík je potrebné poslať ANW), plus čas na opätovné dodanie strateného balíka. Takže, ak je ping medzi počítačmi 125 ms, znovu vysielanie balíka bude trvať približne pätinu sekundy, a v najhoršom prípade - na polovicu sekundy (predstavte sa, ak sa stratí aj novo odoslaný balík). Vitajte!

Prečo nikdy nepoužívať TCP pre hry pre multiplayer
Problém pomocou TCP v sieťových hrách je, že na rozdiel od prehliadačov, e-mailov a iných aplikácií, hry sú viazané na interakciu v reálnom čase. Pre mnoho aspektov hry, napríklad, užívateľské klávesnice a hráči v hre, nezáleží na tom, čo sa stalo pred sebou, ale je dôležité len najrelevantnejší stav herného sveta.

Zvážte jednoduchý príklad multiplayerovej hry, napríklad 3D strelec. Sieťová časť v hre je veľmi jednoduchá: Každá iterácia herného cyklu Klient pošle popis všetkých akcií hráča (down kľúče, pozíciu myši atď.) A každá iterácia spracováva tieto údaje, aktualizuje model hry herného sveta a odošle aktuálny klientovi. Pozície svetových objektov tak, že reagoval prehrávač nový rám.

Takže v našej hre, ak sa balík stratí pri prenose cez sieť, hra sa zastaví a čaká na paket sa opäť nezníži. Na strane klienta, hra Objekty zmrazte a hráči tiež nemôžu pohybovať ani strieľať na serveri, pretože server nemôže prijať nové balíky. Keď stratený balík konečne dosiahne, obsahuje už zastarané informácie, ktoré sú už irelevantné. Okrem toho, potom, všetky tieto balíky, ktoré sa nahromadili v súlade s čakaním, a každý musí byť liečený v jednej iterácii cyklu. Úplný zmätok!

Bohužiaľ nie je možné zmeniť takéto správanie TCP a nie je potrebné, pretože je to význam TCP. To je potreba, aby údaje prenášajúce údaje prostredníctvom spoľahlivého a konzistentného toku údajov.
Ale nepotrebujeme spoľahlivý a konzistentný dátový tok.

Potrebujeme údaje, ktoré údaje dostanú od klienta na server čo najrýchlejšie a nechceme čakať na opätovné odoslanie údajov.
Preto by ste nemali používať TCP pre hry pre multiplayer.

Ale počkaj! Prečo nemôžem používať a UDP a TCP spolu?

Pre herné údaje v reálnom čase, ako je stlačenie používateľa a stavu herného sveta, je dôležité len tie najrelevantnejšie údaje, ale aj pre iné typy údajov, napríklad príkazy príkazov odoslané z jedného počítača do druhej, spoľahlivosti a sekvencie kanálov veľmi dôležité.

Samozrejme, veľké pokušenie používať UDP na prenos dát používateľa a svetového stavu a TCP - pre tieto údaje, ktoré musia byť zaručené dodané. Môžete si dokonca myslieť, že môžete vykonať niekoľko "prúdov" príkazov - napríklad jeden pre úrovne načítania, ostatné - pre príkazy AI. Myslíte si: "Nepotrebujem príkazy AI na čakanie vo fronte, ak sa balík s údajmi stratí načítať úroveň, pretože nie sú úplne pripojené!". V tomto prípade máte pravdu a môžete sa rozhodnúť vytvoriť zásuvku TCP pre každý prúd príkazového prúdu.

Na prvý pohľad je to skvelý nápad. Ale problém je, že časy TCP a UDP pracujú na vrchole OP, balíky oboch protokolov sa navzájom ovplyvnia - už na úrovni IP. Ako konkrétne, tento vplyv sa prejaví - veľmi ťažká otázka a je spojená s mechanizmami na zabezpečenie spoľahlivosti v TCP. V každom prípade však viete, že používanie TCP zvyčajne vedie k zvýšeniu straty balíkov UDP. Ak sa o tom chcete dozvedieť viac, môžete si prečítať

Protokol UDP

Užívateľský datagram Protocol (UDP) - Jedná sa o jednoduchý, datagram-orientovaný protokol bez organizácie spojenia, ktorý poskytuje rýchlo, ale nie nevyhnutne spoľahlivé dopravné služby. Podporuje interakciu "jeden s mnohými", a preto sa často používa na vysielanie a skupinový prenos datagramu.

Hlavným internetovým protokolom (IP) je internetový protokol (IP). Protokol o regulácii prenosu (TCP) a UDP sú protokol úrovne dopravy vybudovaný cez podkladový protokol.

TCP / IP je súbor protokolov, tiež nazývaných "internetový protokol apartmán" (internetový protokol), ktorý sa skladá zo štyroch úrovní. Pamätajte, že TCP / IP nie je len jedným protokolom, ale rodinou alebo súborom protokolov, ktorá sa skladá z iných protokolov s nízkou úrovňou, ako je IP, TCP a UDP. UDP sa nachádza na úrovni transportu cez IP (protokol siete vrstvy). Dopravná úroveň poskytuje interakciu medzi sieťami prostredníctvom brán. Používa IP adresy na odosielanie dátových paketov prostredníctvom internetu alebo inej siete pomocou rôznych ovládačov zariadení.

Pred štúdiu práce UDP nájdete v hlavnej terminológii, ktorú potrebujete dobre poznať. Nižšie stručne definujete hlavné termíny spojené s UDP:

Balenia

V prenose dát sa balík nazýva sekvencia binárnych číslic reprezentujúcich dátové a riadiace signály, ktoré sú prenášané a prepnuté cez hostiteľa. Vo vnútri balíka sa tieto informácie nachádzajú v súlade so špeciálnym formátom.

Datagrams

Datagram je samostatný, nezávislý dátový balíček, ktorý prináša informácie dostatočné na prenos zo zdroja do cieľa, takže žiadna dodatočná výmena medzi zdrojom, cieľovou a dopravnou sieťou.

MTU (maximálna prenosová jednotka)

MTU charakterizuje úroveň kanálov a zodpovedá maximálnemu počtu bajtov, ktoré možno prenášať v jednom balení. Inými slovami, MTU je najväčší balík, ktorý môže niesť toto sieťové prostredie. Ethernet má napríklad pevnú MTU rovnú 1500 bajtov. V UDP, ak je veľkosť datagramu viac MTU, IP protokol vykonáva fragmentáciu, rozbitie datagramu na menšie časti (fragmenty), takže každý fragment je menší ako MTU.

Porty

Ak chcete v súlade s prichádzajúcimi údajmi, špecifický proces vykonaný v počítači, UDP používa porty. UDP odošle balík na príslušné miesto pomocou čísla portu zadané v hlavičke UDP v datagrame. Porty sú reprezentované 16-bitové čísla, a preto berie hodnoty v rozsahu od 0 do 65 535. Porty, ktoré sú tiež nazývané koncové body logických spojení, sú rozdelené do troch kategórií:

    Dobre známe porty - od 0 do 1023

    Registrované prístavy - od 1024 do 49151

    Dynamické / súkromné \u200b\u200bprístavy - od 49152 do 65535

Všimnite si, že porty UDP môžu pri každom časovom intervale dostávať viac ako jednu správu. V niektorých prípadoch môžu služby TCP a UDP používať rovnaké čísla portov, napríklad 7 (ECHO) alebo 23 (Telnet).

UDP používa nasledujúce známe porty:

Zoznam portov UDP a TCP podporuje IAna (Internet Pridelený čísla Čísla).

IP adresy

IP Datagram pozostáva z 32-bitového zdroja a cieľovej IP adresy. Adresa IP cieľovej IP Nastavuje koncový bod pre datagram UDP a zdrojová adresa IP sa používa na získanie informácií o tom, kto poslal správu. V mieste určenia sa balíky filtrujú, a tie, ktoré z nich, ktoré z nich nie sú zahrnuté do prípustného súboru adries, sa vyhodia bez toho, aby upozornili odosielateľovi.

Jednosmerná IP adresa jedinečne určuje hostiteľa v sieti, zatiaľ čo adresa IP skupiny určuje špecifickú skupinu adries v sieti. Vysielacie IP adresy sú získané a spracované všetkými hostiteľmi lokálnej siete alebo špecifickej podsiete.

TTL.

Hodnota životného času alebo TTL (time-to-live), umožňuje nastaviť hornú hranicu počtu smerovačov, prostredníctvom ktorých môže datagram prejsť. TTL hodnota nedáva pakety, aby sa dostali do nekonečných cyklov. Odosielateľ sa inicializuje a znižuje sa o každé spracovanie datagramu. Keď sa hodnota TTL stane nulou, datagram sa vyhodí.

Skupinový newsletter

Skupinový newsletter je otvorený, na základe noriem, súčasná metóda distribúcie rovnakých informácií pre viacerých používateľov. Skupinový newsletter je hlavným prostriedkom protokolu UDP, nie je možné pre protokol TCP. Group Newsletter vám umožní dosiahnuť interakciu jedného s mnohými, napríklad umožňuje použiť takéto použitie ako odosielanie správ a pošty niekoľkým príjemcom, internetovým rádiom alebo demonštračným programom v reálnom čase. Skupinová pošta nie je tak veľa načíta sieť ako prenos vysielania, pretože údaje sa zasielajú niekoľkým používateľom naraz:

Princíp prevádzky UDP.

Keď aplikácia založená na UDP pošle dáta iným hostiteľom v sieti, UDP dopĺňa svoju ôsmi-bitovú položku obsahujúcu počet cieľových portov a odosielateľa, celkovej dĺžke údajov a kontrolného súčtu. Na hornej strane datagramu TVP, hlavička pridáva hlavičku tým, že vytvorí IP datagram:

Predchádzajúca hodnota uvádza, že celková dĺžka hlavičky UDP je osem bajtov. Teoreticky je maximálna veľkosť IP datagram 65,535 bajtov. Vzhľadom k tomu, 20 bajtov hlavičky IP a 8 bajtov hlavičky UDP, dĺžka dát používateľa môže dosiahnuť 65 507 bajtov. Väčšina programov však pracuje s menšími údajmi. Pre väčšinu aplikácií je teda predvolená dĺžka dĺžka približne 8192 bajtov, pretože toto množstvo údajov sa číta a zaznamenáva systém sieťového súboru (NFS). Môžete nastaviť veľkosť vstupných a výstupných pufrov.

Kontrolný súčet je potrebný na kontrolu, či boli údaje správne doručené do cieľa alebo boli skreslené. Pokrýva oboch UDP nadpisu a dáta. Byte-agregát sa používa, ak je celkový počet datagram oktety nepárny. Ak je získaný kontrolný súčet nula, príjemca zaznamená chybu kontrolného súčtu a odhodí datagram. Hoci kontrolný súčet je voliteľný, odporúča sa vždy zahrnúť.

V ďalšom kroku, úroveň IP pridáva 20 bajtov titulu, vrátane TTL, zdrojových a prijímajúcich IP adries a ďalších informácií. Táto akcia sa nazýva IP zapuzdrenie.

Ako už bolo spomenuté vyššie, maximálna veľkosť balenia je 65 507 bajtov. Ak balenie prekročí predvolenú veľkosť MTU, úroveň IP rozdeľuje balík na segmenty. Tieto segmenty sa nazývajú fragmenty a proces rozdeľovania údajov do segmentov - fragmentácia. Hlavička IP obsahuje všetky informácie o fragmentoch.

Keď odosielajúca aplikácia "hodí" Datagram do siete, odosiela sa IP adresou zadanou v hlavičke IP. Pri prechode cez smerovač sa hodnota životnosti (TTL) v hlavičke IP klesá.

Keď Datagram prichádza na zadaný účel a port, úroveň IP v hlavičke kontroluje, či je datagram roztrieštený. Ak áno, datagram sa zhromažďuje v súlade s informáciami dostupnými v názve. Nakoniec, hladina aplikácie načíta filtrované údaje odstránením titulu.

Nevýhody UDP.

V porovnaní s TCP UDP má nasledujúce chyby:

    Žiadne potvrdzovacie signály. Pred odoslaním balíka UDP sa odosielacia strana nemeje so prijímajúcou stranou priradenia signálov. V dôsledku toho nemá odosielateľ žiadny spôsob, ako zistiť, či dátový datagram konečného systému dosiahol. Výsledkom je, že UDP nemôže zabezpečiť, aby boli údaje skutočne doručené adresátovi (napríklad, ak konečný systém alebo sieť nefunguje).

    Naopak, TCP protokol je zameraný na vytvorenie pripojení a poskytuje interakciu medzi hostiteľmi pripojenými k sieti pomocou balíkov. TCP aplikuje potvrdzovacie signály, ktoré vám umožnia kontrolovať úspech dopravy dát.

    Použitie relácií. TCP orientovaný na pripojeniach je podporovaný reláciou medzi hostiteľmi. TCP používa identifikátor relácie, ktorý umožňuje sledovať pripojenia medzi dvoma hostiteľmi. UDP nemá podporu zasadnutí v dôsledku svojej povahy, nepripojených.

    Spoľahlivosť. UDP nezaručuje, že do cieľa bude doručená iba jedna kópia údajov. Ak chcete odoslať veľké množstvo údajov do konečného systému, UDP ho rozbije do malých častí. UDP nezaručuje, že tieto časti budú doručené na vymenovanie v tom istom poradí, v ktorom boli vytvorené v zdroji. Naopak, TCP, spolu s číslami portov, používa poradové čísla a pravidelne odoslané potvrdenia, ktoré zaručujú objednané dodávky údajov.

    Bezpečnosť. TCP je viac chránený ako UDP. V mnohých organizáciách, firewally a smerovače nenechajte ujsť pakety UDP. Je to spôsobené tým, že hackeri môžu používať prístavy UDP bez vytvorenia explicitných zlúčenín.

    Ovládanie prietoku. V systéme UDP neexistuje žiadne ovládanie stream, čo je výsledok, zle navrhnutá aplikácia UDP môže zachytiť významnú časť šírky pásma siete.

Výhody UDP.

V porovnaní s TCP UDP má nasledujúce výhody:

    Žiadne inštalačné pripojenie. UDP je protokol bez organizácie zlúčenín, takže oslobodzuje z režijných nákladov spojených so zariadením zlúčenín. Vzhľadom k tomu, UDP nepoužíva potvrdzovacie signály, potom oneskorenia spôsobené nastavením pripojenia sa tiež vyhýbajú. To je dôvod, prečo DNS uprednostňuje UDP pred TCP - DNS by fungovalo oveľa pomalšie, ak sa uskutočnilo prostredníctvom TCP.

    Rýchlosť. UDP funguje rýchlejší TCP. Z tohto dôvodu mnohé aplikácie uprednostňujú TCP, UDP. To isté znamená, že TCP sú stabilnejšie (napríklad potvrdzovacie signály) spomaľujú svoju činnosť.

    Topologická rozmanitosť. UDP podporuje interakciu medzi "jedným" a "jedným s mnohými", zatiaľ čo TCP podporuje len jednu s jednou interakciou.

    Režijné náklady. Práca s TCP znamená zvýšené režijné náklady, náklady uložené UDP sú výrazne nižšie. TCP v porovnaní s UDP používa výrazne viac zdrojov operačného systému, a preto v takom prostredí, kde servery súčasne slúžia mnohým zákazníkom, UDP je široko používaný.

    Headline. Pre každý balík má hlavičku UDP dĺžku len osem bajtov, zatiaľ čo TCP má 20-bajtové hlavičky, a preto UDP spotrebuje menej šírku pásma siete.

UDP je jednoduchý protokol a má osobitný rozsah. Po prvé, to je interakcie klient-server a multimédiá. Väčšina internetových aplikácií však vyžaduje spoľahlivý, konzistentný prenos. UDP nespĺňa tieto požiadavky, takže sa vyžaduje ďalší protokol. Takýto protokol sa nazýva TCP a je to pracovný kôň na internete.

Základy TCP.

TCP Protocol (protokol o regulácii prenosu - Riadenie transferov) bol špeciálne navrhnutý tak, aby zabezpečil spoľahlivý priechodný bajtový prúd na nespoľahlivú interset. Kombinovaná sieť sa líši od samostatnej siete skutočnosťou, že jeho rôzne oblasti môžu mať vysoko odlišnú topológiu, šírku pásma, oneskorenie časových hodnôt, veľkosť paketu a iné parametre. Pri vývoji TCP sa zaostrenie zameralo na schopnosť protokolu prispôsobiť sa vlastnostiam kombinovanej siete a tolerancie na poruchu v prípade rôznych problémov.

TCP protokol je opísaný v RFC 793. V priebehu času sa objavili rôzne chyby a nepresnosti, a na niektorých bodoch sa požiadavky zmenili. Podrobný opis týchto vysvetlení a korekcií je uvedený v RFC 1122. Rozšírenie protokolu je uvedený v RFC 1323.

Každý podporný stroj TCP má TCP dopravný subjekt, ktorý je buď knižničným postupom alebo užívateľským procesom alebo časťou jadra systému. V každom prípade dopravná entícia kontroluje toky TCP a rozhranie IP vrstvy. TCP Entity trvá z miestnych procesov Užívateľské toky údajov, rozbije ich na kúsky, ktoré nie sú lepší ako 64 kB (v praxi, toto číslo je zvyčajne 460 dátových bajtov, čo vám umožňuje dať ich do jedného ethernetového rámca s IP a hlavičkami TCP) a posiela ich do formy individuálneho IP-datagramu. Keď do stroja prichádzajú IP datagrams s údajmi TCP, sú prenášané na TCP entity, ktoré obnovujú zdrojový bajtový prúd. Pre jednoduchosť budeme niekedy používať "TCP" na označenie TCP dopravnej jednotky (časť softvéru) alebo protokol TCP (súbor pravidiel). Z kontextu bude jasné, čo sa myslí. Napríklad v výraze "užívateľ prenáša údaje TCP", prirodzene, prirodzene, TCP Dopravná esencia.

Úroveň IP nezaručuje správne dodanie datagramov, takže je TCP, že je potrebné monitorovať intervaly vypršaných očakávaní a v prípade potreby opakovať pakety. Stáva sa to, že datagrams prichádzajú do nesprávnej objednávky. TCP je tiež potrebné na obnovenie správ z takýchto datagramov. Protokol TCP je teda navrhnutý tak, aby zabezpečil spoľahlivosť, ktorého snívajú mnohí používatelia a ktoré nie sú poskytované IP protokolom.

Model služby TCP

Služba TCP je založená na tzv. Sockets (zásuvky alebo koncové body) vytvorené ako odosielateľa a príjemcu. Boli diskutované v časti "Berkeley Sockets". Každá zásuvka má číslo (adresa), pozostávajúcu z IP adresy hostiteľa a 16-bitového čísla, lokálne vo vzťahu k hostiteľovi s názvom port. Port v TCP sa nazýva adresa TSAP. Ak chcete získať prístup k službe TCP medzi zásuvkou zariadenia Sender a zásuvkou príjemcu, musí byť pripojenie explicitne nainštalované.

Jedna zásuvka je možné použiť súčasne pre niekoľko pripojení. Inými slovami, dva alebo viac pripojení môže ukončiť jednou zásuvkou. Pripojenia sa líšia v identifikátoroch zásuviek na oboch koncoch - (socket1, socket2). Virtuálne čísla kanálov alebo iné identifikátory sa nepoužívajú.

Čísla portov pod 1024, nazývané populárne prístavy, sú vyhradené štandardnými službami. Napríklad akýkoľvek proces, ktorý chce vytvoriť hostiteľské pripojenie na prenos súboru pomocou FTP protokolu, môže kontaktovať port 21 hostiteľského adresáta a kontaktovať ho na jeho ftp démon. Zoznam populárnych portov je k dispozícii na www.iana.org.

Samozrejme, bolo by možné prepojiť FTP démon s portom 21 aj počas stiahnutia, zatiaľ čo kravatu na Telnet démon s prístavom 23, atď. Ak by sme to urobili, by sme len na márne Informácie o démonoch, ktoré v skutočnosti, väčšina času je nečinný. Namiesto toho zvyčajne využívajú služby jedného démonu, nazývaného UNIX INESTD, ktorý je spojený s viacerými portami a očakáva, že prvé prichádzajúce spojenie. Keď sa vyskytne, INETD vytvorí nový proces, pre ktorý sa volá vhodný démon. Takže, len INETD je neustále aktívny, zvyšok sa nazýva len vtedy, keď je pre nich práca. INETD má špeciálny konfiguračný súbor, z ktorého sa môže dozvedieť o priradení prístavu. To znamená, že správca systému môže konfigurovať systém tak, aby trvalé démoni (napríklad 80) boli spojené s naloženými portami (napríklad 80) a so zvyšným inteentom.

Niektoré porty Rosyport

Protokol

Použitím

21

FTP.

Prenos súboru

23

Telenet

Vzdialené prihlásenie

25

SMTP.

E-mail

69

Tftp

Najjednoduchší protokol prenosu súborov

79

Prst

Vyhľadávanie informácií o používateľovi

80

Http.

Svetový

110

POP-3.

Vzdialený prístup k e-mailu

119

Nntp.

Novinky

Všetky pripojenia TCP sú plné duplexné a dvojbod. Úplný duplex znamená, že prevádzka môže nasledovať súčasne na opačných stranách. Dvojbodové pripojenie znamená, že má dva koncové body. Vysielanie a Multicast Distribution TCP protokol nie je podporovaný.

Pripojenie TCP je bajtový prúd, a nie tok správy. Hranice medzi správami nie sú uložené. Napríklad, ak proces odosielania píše štyri 512-bajtové dáta do toku TCP, tieto údaje môžu byť doručené do výsledného procesu vo forme štyroch 512-bytových častí, dvoch 1024-bytových častí, jednej 2048-bajtovitej časti alebo nejasnosti. Neexistuje žiadny spôsob, ako by mohol príjemca určiť, ako boli údaje zaznamenané.

Súbory v systéme UNIX majú tiež túto nehnuteľnosť. Program Reading Rail nemôže určiť, ako bol tento súbor zaznamenaný: v bloku, moľne alebo okamžite. Rovnako ako v prípade súborov UNIX, TCP programy nemajú predstavu o zamýšľaných bajtoch a nemajú záujem o to. Bajt pre nich je len bajt.

Po prijatí údajov z aplikácie ich protokol TCP môže okamžite poslať, alebo ho umiestniť do rezervy, aby poslal veľkú časť údajov naraz, podľa vlastného uváženia. Niekedy je však žiadosť potrebná na okamžité odoslanie údajov. Predpokladajme, že napríklad užívateľ nahráva na vzdialenom stroji. Po zadaní príkazu a stlačil kláves ENTER, je dôležité, aby reťazec zadaný ho doručená do vzdialeného počítača okamžite a nie je umiestnený do vyrovnávacej pamäte, kým nebude zadaný nasledujúci riadok. Nútiť prenos údajov bez meškania, aplikácia môže nastaviť push príznak (push).

Niektoré staré aplikácie používali push príznak ako oddeľovač správ. Hoci tento trik niekedy spúšťa, nie všetky implementácia protokolu TCP prenášať push príznak na prijímajúcu aplikáciu. Okrem toho, ak sa pred prvým paketom s nainštalovaným flagom bude prenesený do riadku, subjekt TCP dostane niekoľko ďalších takýchto balíčkov (to znamená, že výstupná línia bude obsadená), nedostatok TCP bude mať právo odoslať Všetky tieto údaje vo forme jedného datagramu, ktoré ich nezdieľajú na samostatných častiach.

Posledná funkcia služby TCP, ktorá by mala byť uvedená, sú naliehavé údaje. Keď používateľ interakcia s programom v interaktívnom režime, stlačíte tlačidlo Delete alebo CTRL-C na prerušenie vzdialeného procesu, odosielanie aplikácie na výstupný tok informácií o regulácii dát a prenáša svoju službu TCP spolu s urgentnou vlajkou (naliehavo ). Táto vlajka spôsobí, že subjekt TCP zastaví akumuláciu údajov a bez oneskorenia, aby preniesol všetko, čo má pre toto pripojenie.

Keď sa naliehavé údaje prichádzajú do cieľa, prijímajúca žiadosť je prerušená (to znamená, "prijíma signál", v Terminológii UNIX), potom, čo si môže prečítať údaje z vstupného toku a nájsť naliehavé údaje medzi nimi. Koniec urýchlených údajov je označený, takže aplikácia môže rozpoznať, kde skončia. Začiatok urgentných údajov nie je označený. Aplikácia sa musí hádať. Takáto schéma je hrubý signalizačný mechanizmus, takže všetky ostatné aplikácie.

TCP Protocol

Táto časť zváži TCP protokol všeobecne. V ďalšej časti diskutujeme s hlavičkou protokolu, pole za pole.

Kľúč TCP definujúci celú štruktúru protokolu je, že v spojení TCP má každý bajt svoje vlastné 32-bitové poradové číslo. V prvých rokoch existencie internetu bola základná rýchlosť prenosu dát medzi smerovačmi nad vyhradenými riadkami 56 kbps. Hostiteľ, ktorý neustále vydá údaje s maximálnou rýchlosťou, by vyžadovalo viac ako týždeň, aby sa zabezpečilo, že ordinálne čísla vytvoria celý kruh. Pri aktuálnych rýchlostiach, ordinálne čísla môžu skončiť veľmi rýchlo, bude to stále hovorí neskôr. Samostatné 32-bitové poradové čísla sa používajú na potvrdenia a pre mechanizmus posuvného okna, ktorý bude tiež spomenutý neskôr.

Posielanie a prijímanie subjektov TCP výmenu údajov vo forme segmentov. Segment sa skladá z pevnej 20-bajtnej hlavičky (plus voliteľná časť), po ktorej nasledujú dátové bajty. Veľkosť segmentov je určená softvérom TCP. Môže sa zlúčiť do jedného segmentových údajov získaných v dôsledku niekoľkých záznamových operácií, alebo naopak, aby distribuovali výsledok jedného vstupu medzi niekoľkými segmentmi. Veľkosť segmentov je obmedzená na dve limity. Po prvé, každý segment, vrátane hlavičky TCP, by mal byť umiestnený v poli 65,515-bajt IP-paketové pole. Po druhé, každá sieť má maximálnu prenosovú jednotku (MTU, maximálna prenosová jednotka) a každý segment by mal byť umiestnený v MTU. V praxi je maximálna prevodovka zvyčajne 1500 bajtov (čo zodpovedá veľkosti poľa Ethernet užitočného zaťaženia), a teda určuje hornú hranicu veľkosti segmentu.

Hlavným protokolom používaným subjektmi TCP je protokol posuvného okna. Pri prenose segmentu odosielateľ obsahuje časovač. Keď segment prichádza do cieľa, prijímajúci subjekt TCP pošle segment späť (s údajmi, ak je niečo na odosielanie, alebo bez údajov) s číslom

potvrdenie rovné sekvenčnému číslu ďalšieho očakávaného segmentu. Ak uplynie čas čakania na potvrdenie, odosielateľ znova odosiela segment.

Hoci tento protokol sa zdá byť jednoduchý, obsahuje niekoľko častí, ktoré by sa mali brať do úvahy podrobnejšie. Segmenty môžu prísť v nesprávnom poradí. Napríklad situácia, v ktorej bajty z 3072. na 4095. The už prišiel, ale potvrdenie pre nich nemožno vylúčiť, pretože bajty od roku 2048 do 3071th neboli prijaté. Okrem toho, segmenty môžu byť pretrvávajúce v sieti tak dlho, že odosielateľ bude očakávať čas a opäť ich prenáša. Prenesený re-segment môže zahŕňať iné rozsahy fragmentov, takže bude trvať veľmi presné podávanie na určenie čísel bajtov, ktoré už boli prijaté správne. Avšak, pretože každý bajt v prúde je slobodný v jeho posunom, táto úloha sa ukáže, že je skutočná.

Protokol TCP by mal byť schopný vyrovnať sa s týmito problémami a efektívne ich riešiť. TCP prúdov boli vynaložené na optimalizáciu tokov TCP. V nasledujúcej časti diskutujeme niekoľko algoritmov používaných v rôznych implementáciách protokolu TCP.

Hlavička TCP segmentu

Každý segment začína 20-bajtovou hlavičkou pevného formátu. Dodatočné polia môžu nasledovať. Po ďalších poliach môže byť umiestnený do 65 535 - 20 - 20 \u003d 65 495 bajtov údajov, kde prvých 20 bajtov je IP Titul a druhá hlavička TCP. Segmenty nesmú obsahovať údaje. Takéto segmenty sa často používajú na prenos potvrdení a riadiacich správ.

Zvážte pole hlavičky TCP za pole. Oblasť prístavu prístavu a port odosielateľa sú identifikátory lokálnych koncových bodov spojenia. Číslo portu spolu s IP adresou hostiteľa tvorí jedinečný 48-bitový identifikátor koncového bodu. Dvojica identifikátorov týkajúcich sa zdroja a prijímača jedinečne určuje zlúčeninu.

Polia Číslo sekvencie a číslo potvrdenia vykonávajú vašu obvyklú funkciu. Poznámka: pole s potvrdením sa vzťahuje na ďalšie očakávané bajt, a nie posledný prijatý. Obaja sú 32-bitové, pretože každý bajt dát je očíslovaný v TCP-nite.

Pole Dĺžka hlavičky TCP obsahuje veľkosť hlavičky TCP vyjadrená v 32-bitových slovách. Tieto informácie sú potrebné, pretože pole je voliteľné polia a s ním celá hlavička, môže byť dĺžka premennej. V skutočnosti toto pole označuje posun od začiatku segmentu na dátové pole, merané v 32-bitových slovách. Toto je rovnaké ako dĺžka hlavičky.

Po nepoužívanom 6-bitovom poli. Skutočnosť, že toto pole prežilo za štvrťroku storočia, je dôkazom toho, ako dobre je myšlienka TCP dizajn.

Potom sledujte šesť 1-bitové vlajky. URG bit je nastavený na 1 v prípade použitia poľa ukazovateľ na urgentné údaje obsahujúce posun v bajtoch z aktuálnej sekvencie bajtov na umiestnenie termínových údajov. Správy prerušenia sa teda implementujú v protokole TCP. Ako už bolo uvedené, protokol TCP poskytuje príjemcovi užívateľskému signálu, ktorý nemá záujem o príčinu prerušenia.

Ak je bitový bit nastavený na 1, potom pole s potvrdením obsahuje zmysluplné údaje. V opačnom prípade tento segment neobsahuje potvrdenie a pole potvrdzujúceho čísla sa jednoducho ignoruje.

Bit PSH je v skutočnosti push príznak, s ktorým odosielateľ požiada príjemcu, aby doručil údaje ihneď po prijatí balíka, a nie ich uskladniť do vyrovnávacej pamäte, až kým nie je vyplnený. (Príjemca môže zapojiť do vyrovnávacej pamäte na dosiahnutie väčšej efektívnosti.)

RST bit sa používa na resetovanie stavu zlúčeniny, ktorý z dôvodu zlyhania hostiteľa alebo z iného dôvodu upadol do zablokovania. Okrem toho sa používa na zlyhanie z nesprávneho segmentu alebo z pokusu o vytvorenie pripojenia. Ak ste dostali segment s nastavenou RST bit, to znamená, že existuje nejaký problém.

Syn Bit sa používa na nastavenie pripojenia. V dotaze spojenia bitovej syn \u003d 1 a bitov opýtania \u003d 0, čo znamená, že potvrdzovacie pole sa nepoužíva. Reakcia na túto požiadavku obsahuje potvrdenie, takže hodnoty týchto bitov sú rovnaké v ňom: Syn \u003d 1, ACK- 1. Tak sa syn SYN) používa na označenie segmentov žiadosti o pripojenie a pripojenie akceptované, odlíšiť ich od seba.

Bitová plutva sa používa na prerušenie spojenia. Označuje, že odosielateľ už nemá údaje na prenos. Avšak, dokonca zatvorenie pripojenia, proces môže pokračovať v prijímaní údajov pre dobu neurčitú. Segmenty s plutvami a bitovými bitmi majú poradové čísla, ktoré zaručujú správny poriadok ich vykonávania.

Riadenie prietoku v protokole TCP sa vykonáva pomocou posuvného okna striedavej veľkosti. Pole Veľkosť boxu uvádza, koľko bajtov je možné odoslať po bajtovom, ktorý dostal potvrdenie. Hodnota poľa veľkosti okna môže byť nulová, čo znamená, že sa získajú všetky bajty až po potvrdenie číslo 1, ale v súčasnosti existujú niektoré problémy a zvyšok bajtov nie je možné prijať. Povolenie na ďalší prenos je možné získať odoslaním segmentu s rovnakými hodnotami poľa potvrdzovacieho čísla a ne-nulovej hodnoty poľa veľkosti okna.

V niektorých protokoloch sa potvrdenie personálneho recepcie týkajú povolenia na pokračovanie prenosu. Toto spojenie je dôsledkom pevne pevnej veľkosti posuvného okna v týchto protokoloch. Potvrdenie TCP je oddelené od povolení prenosu dát. V podstate môže prijímač povedať: "Mám bajty až do K-RO, ale nechcem pokračovať v prijímaní údajov." Takáto separácia (vyjadrená v posuvnom okne striedavej veľkosti) poskytuje dodatočnú flexibilitu protokolu. Ďalej budeme prediskutovať tento aspekt podrobnejšie.

Pole kontrolného súčtu slúži na zvýšenie spoľahlivosti. Obsahuje kontrolný súčet hlavičky, dát a pseudo-nadpis. Pri vykonávaní výpočtov je kontrolná suma nastavená na nulu a dátové pole je doplnené nulovým bajtom, ak je jeho dĺžka nepárne číslo. Algoritmus pre výpočet kontrolného súčtu jednoducho pridáva všetky 16-bitové slová do ďalšieho kódu a potom vypočítava pridanie pre celú sumu. V dôsledku toho, keď príjemca zvažuje kontrolný súčet celého segmentu, vrátane checksum pole, výsledok by mal byť 0.

Pseudo-nadpis obsahuje 32-bitové adresy odosielateľa a príjemcu, číslo protokolu pre TCP (6) a bajtový pult pre segment TCP (vrátane titulu). Zahrnutie pseudo-orientácie do kontrolného súčtu TCP pomáha zistiť nesprávne dodané pakety, aj keď porušuje hierarchiu protokolov, pretože IP adresy v nej patria do úrovne IP, a nie úroveň TCP. UDP pre kontrolný súčet používa rovnaký pseudo-nadpis.

Fieldické pole Fakulting poskytuje dodatočné funkcie, ktoré nie sú zahrnuté do štandardnej položky. S jedným z týchto polí môže každý hostiteľ určiť maximálnu veľkosť poľa užitočného zaťaženia, ktorú môže prijať. Čím väčšia je veľkosť použitých segmentov, tým vyššia je účinnosť, pretože znižuje podiel nad hlavou vo forme 20-bajtov, ale nie všetky hostitelia sú schopní užívať veľmi veľké segmenty. Hostitelia môžu navzájom rozprávať maximálne množstvo poľa užitočného zaťaženia počas pripojenia. V predvolenom nastavení je táto veľkosť 536 bajtov. Všetci hostitelia sú povinné užívanie TCP segmenty vo veľkosti 536 + 20 \u003d 556 bajtov. Pre každý z pokynov je možné nainštalovať maximálne množstvo poľa užitočného zaťaženia.

Pre riadky s vysokou prenosovou rýchlosťou a / alebo veľkou latenciou vo veľkosti 64 kB sa ukáže, že je príliš malé. Takže pre Line TK (44,736 MBIT / S) môže byť celé okno prenesené do riadku len na 12 ms. Ak hodnota času šírenia signálu na oboch koncoch je 50 ms (čo je typicky pre transkontinental optický kábel), 3/4 odosielateľa bude čakať na potvrdenie. Pri komunikácii cez satelit bude situácia ešte horšia. Väčšia veľkosť okna by mohla zlepšiť efektívnosť, ale 16-bitové okno veľkosti poľa neumožňuje. V RFC 1323 bola navrhnutá možnosť novej možnosti meradle okna, ktorej hodnota dvaja hostitelia by mohli usporiadať pri inštalácii pripojenia. Toto číslo vám umožňuje posunúť okno veľkosti okna na 14 číslic doľava, čo poskytuje rozšírenie veľkosti okna až 230 bajtov (1 GB). V súčasnosti podporuje väčšina implementácií protokolu TCP túto príležitosť.

Ďalšia možnosť navrhovaná v RFC 1106 a široko používané teraz je použitie selektívneho opakovaného protokolu namiesto návratu na P. Ak adresát dostane jeden zlý segment a nasleduje ho veľký počet dobrých, normálny protokol TCP nakoniec vyprší čas čakania času a Opäť prenesie všetky nekonfilné segmenty, vrátane tých, ktoré boli získané správne. V dokumente RFC 1106 sa navrhlo použiť negatívne potvrdenie (NAK), čo umožňuje príjemcovi požiadať o samostatný segment alebo niekoľko segmentov. Po prijatí, prijímajúca strana môže potvrdiť všetky údaje uložené v pufri, čím sa znižuje počet opätovne použitých údajov.