Dnes se začneme zaměřením na TCP. V kapitole o vrstvení jsme se dříve zmínili o důležitém bodu. Na síťové vrstvě a níže se jedná spíše o připojení mezi hostiteli, což znamená, že váš počítač potřebuje vědět, kde se jiný počítač nachází, aby se k němu mohl připojit. Komunikace v síti je však často spíše komunikací mezi procesy než mezi stroji. Proto protokol TCP zavádí koncept portu. Port může být obsazen pouze jedním procesem, což zajišťuje přímou komunikaci mezi aplikačními procesy běžícími na různých hostitelích.
Úkolem transportní vrstvy je poskytovat přímé komunikační služby mezi aplikačními procesy běžícími na různých hostitelích, proto je také známá jako end-to-end protokol. Transportní vrstva skrývá základní detaily sítě, což umožňuje aplikačnímu procesu vidět, jako by mezi dvěma entitami transportní vrstvy existoval logický end-to-end komunikační kanál.
TCP je zkratka pro Transmission Control Protocol a je známý jako protokol orientovaný na spojení. To znamená, že než jedna aplikace může začít odesílat data druhé, musí se oba procesy navázat handshake. Handshake je logicky propojený proces, který zajišťuje spolehlivý přenos a řádný příjem dat. Během handshake se naváže spojení mezi zdrojovým a cílovým hostitelem výměnou série řídicích paketů a dohodou na některých parametrech a pravidlech pro zajištění úspěšného přenosu dat.
Co je TCP? (MylinkingSíťový klepnutíaZprostředkovatel síťových paketůmohl zpracovávat jak TCP, tak UDP pakety)
TCP (Transmission Control Protocol) je spojově orientovaný, spolehlivý komunikační protokol transportní vrstvy založený na bajtovém toku.
orientovaný na spojeníSpojově orientované spojení znamená, že komunikace TCP je typu jeden k jednomu, tj. komunikace typu bod-bod mezi koncovými body, na rozdíl od UDP, které může odesílat zprávy více hostitelům současně, takže komunikace jeden k mnoha nelze dosáhnout.
SpolehlivýSpolehlivost TCP zajišťuje, že pakety jsou spolehlivě doručovány příjemci bez ohledu na změny v síťovém spojení, což činí formát paketů protokolu TCP složitějším než u UDP.
Založené na bajtovém prouduProtokol TCP založený na bajtovém toku umožňuje přenos zpráv libovolné velikosti a zaručuje pořadí zpráv: i když předchozí zpráva nebyla zcela přijata a i když byly přijaty následující bajty, TCP je nedoručí do aplikační vrstvy ke zpracování a automaticky zahodí duplicitní pakety.
Jakmile hostitel A a hostitel B navážou spojení, aplikace potřebuje pouze virtuální komunikační linku k odesílání a přijímání dat, čímž zajišťuje přenos dat. Protokol TCP je zodpovědný za řízení úloh, jako je navazování, odpojování a udržování spojení. Je třeba poznamenat, že zde virtuální linka znamená pouze navázání spojení, zatímco spojení protokolem TCP pouze indikuje, že obě strany mohou zahájit přenos dat a zajistit spolehlivost dat. Síťová zařízení spravují směrovací a transportní uzly; samotný protokol TCP se těmito detaily nezabývá.
TCP spojení je plně duplexní služba, což znamená, že hostitel A a hostitel B mohou v TCP spojení přenášet data oběma směry. To znamená, že data lze přenášet mezi hostitelem A a hostitelem B obousměrně.
TCP dočasně ukládá data do vyrovnávací paměti pro odesílání (Send buffer) připojení. Tato vyrovnávací paměť pro odesílání je jednou z mezipamětí nastavených během třícestného navazování spojení (handshake). Následně TCP odešle data z vyrovnávací paměti pro odesílání do vyrovnávací paměti pro příjem cílového hostitele v příslušném čase. V praxi bude mít každý peer vyrovnávací paměť pro odesílání a vyrovnávací paměť pro příjem, jak je znázorněno zde:
Vyrovnávací paměť pro odesílání je oblast paměti udržovaná implementací TCP na straně odesílatele, která se používá k dočasnému ukládání odesílaných dat. Když se provede třícestné navázání spojení, nastaví se vyrovnávací paměť pro odesílání a použije se k ukládání dat. Vyrovnávací paměť pro odesílání se dynamicky upravuje podle přetížení sítě a zpětné vazby od příjemce.
Přijímací vyrovnávací paměť je oblast paměti spravovaná implementací TCP na přijímací straně, která slouží k dočasnému ukládání přijatých dat. TCP ukládá přijatá data do přijímací vyrovnávací paměti a čeká na jejich přečtení nadřazenou aplikací.
Upozorňujeme, že velikost mezipaměti pro odesílání a příjem je omezená. Když je mezipaměť plná, může TCP přijmout určité strategie, jako je řízení přetížení, řízení toku atd., aby zajistil spolehlivý přenos dat a stabilitu sítě.
V počítačových sítích se přenos dat mezi hostiteli provádí pomocí segmentů. Co je tedy paketový segment?
TCP vytváří segment TCP neboli paketový segment rozdělením příchozího proudu na části a přidáním TCP záhlaví ke každé části. Každý segment lze přenášet pouze po omezenou dobu a nesmí překročit maximální velikost segmentu (MSS). Na cestě dolů prochází paketový segment linkovou vrstvou. Linková vrstva má maximální přenosovou jednotku (MTU), což je maximální velikost paketu, která může projít datovou linkovou vrstvou. Maximální přenosová jednotka obvykle souvisí s komunikačním rozhraním.
Jaký je tedy rozdíl mezi MSS a MTU?
V počítačových sítích je hierarchická architektura velmi důležitá, protože zohledňuje rozdíly mezi různými úrovněmi. Každá vrstva má jiný název; v transportní vrstvě se data nazývají segment a v síťové vrstvě se data nazývají IP paket. Proto lze maximální přenosovou jednotku (MTU) chápat jako maximální velikost IP paketu, kterou může síťová vrstva přenést, zatímco maximální velikost segmentu (MSS) je koncept transportní vrstvy, který odkazuje na maximální množství dat, která může TCP paket přenést najednou.
Všimněte si, že pokud je maximální velikost segmentu (MSS) větší než maximální přenosová jednotka (MTU), fragmentace IP bude provedena na síťové vrstvě a TCP nebude rozdělovat větší data na segmenty vhodné pro velikost MTU. Na síťové vrstvě bude sekce vyhrazená pro vrstvu IP.
Struktura segmentů TCP paketu
Pojďme se podívat na formát a obsah TCP hlaviček.
Pořadové číslo: Náhodné číslo generované počítačem při navázání spojení jako jeho počáteční hodnota při navázání TCP spojení a pořadové číslo je odesláno příjemci prostřednictvím SYN paketu. Během přenosu dat odesílatel zvyšuje pořadové číslo podle množství odeslaných dat. Přijímač posuzuje pořadí dat podle přijatého pořadového čísla. Pokud se zjistí, že data nejsou v pořadí, příjemce je znovu uspořádá, aby zajistil správné pořadí dat.
Číslo potvrzení: Toto je pořadové číslo používané v TCP k potvrzení přijetí dat. Označuje pořadové číslo dalších dat, která odesílatel očekává. V TCP spojení přijímač určuje, která data byla úspěšně přijata, na základě pořadového čísla segmentu přijatého datového paketu. Když přijímač úspěšně přijme data, odešle odesílateli paket ACK, který obsahuje potvrzovací číslo. Po přijetí paketu ACK může odesílatel potvrdit, že data byla úspěšně přijata, a to před potvrzením čísla odpovědi.
Řídicí bity segmentu TCP zahrnují následující:
ACK bitPokud je tento bit nastaven na 1, znamená to, že pole potvrzovací odpovědi je platné. TCP specifikuje, že tento bit musí být nastaven na 1, s výjimkou SYN paketů při počátečním navázání spojení.
RST bitPokud je tento bit nastaven na 1, znamená to, že v TCP připojení došlo k výjimce a je nutné vynutit jeho ukončení.
SYN bit: Pokud je tento bit nastaven na 1, znamená to, že má být navázáno spojení a v poli pořadového čísla je nastavena počáteční hodnota pořadového čísla.
bit FINPokud je tento bit nastaven na 1, znamená to, že v budoucnu nebudou odeslána žádná další data a je žádoucí připojení.
Různé funkce a vlastnosti protokolu TCP jsou ztělesněny strukturou segmentů paketů TCP.
Co je UDP? (MyLinking)Síťový klepnutíaZprostředkovatel síťových paketůmohl zpracovávat pakety TCP i UDP)
Protokol UDP (User Datagram Protocol) je bezspojový komunikační protokol. Ve srovnání s TCP neposkytuje UDP složité řídicí mechanismy. Protokol UDP umožňuje aplikacím přímo odesílat zapouzdřené IP pakety bez navazování spojení. Pokud se vývojář rozhodne použít UDP místo TCP, aplikace komunikuje přímo s IP adresou.
Celý název protokolu UDP je User Datagram Protocol a jeho záhlaví má pouze osm bajtů (64 bitů), což je velmi stručné. Formát záhlaví UDP je následující:
Cílové a zdrojové portyJejich hlavním účelem je indikovat, kterému procesu má UDP odesílat pakety.
Velikost paketuPole velikosti paketu obsahuje velikost záhlaví UDP a velikost dat.
Kontrolní součetNavrženo k zajištění spolehlivého doručování hlaviček a dat UDP. Úlohou kontrolního součtu je detekovat, zda během přenosu paketu UDP došlo k chybě nebo poškození, a zajistit tak integritu dat.
Rozdíly mezi TCP a UDP v MyLinkinguSíťový klepnutíaZprostředkovatel síťových paketůmohl zpracovávat jak TCP, tak UDP pakety
TCP a UDP se liší v následujících aspektech:
SpojeníTCP je spojově orientovaný transportní protokol, který vyžaduje navázání spojení před přenosem dat. UDP naproti tomu spojení nevyžaduje a může data přenášet okamžitě.
Servisní objektTCP je dvoubodová služba typu jeden k jednomu, což znamená, že spojení má pouze dva koncové body, které spolu komunikují. UDP však podporuje interaktivní komunikaci jeden k jednomu, jeden k mnoha a mnoho k mnoha, takže může komunikovat s více hostiteli současně.
SpolehlivostTCP poskytuje službu spolehlivého doručování dat a zajišťuje, že data jsou bezchybná, bezztrátová, neduplicitní a doručují se na vyžádání. UDP se naopak snaží maximálně doručit a nezaručuje spolehlivé doručení. UDP může během přenosu docházet ke ztrátě dat a dalším problémům.
Řízení přetížení, řízení tokuTCP má mechanismy pro řízení přetížení a řízení toku, které dokáží upravit rychlost přenosu dat podle podmínek v síti, aby byla zajištěna bezpečnost a stabilita přenosu dat. UDP nemá mechanismy pro řízení přetížení a řízení toku, a i když je síť velmi přetížená, neprovede úpravy rychlosti odesílání UDP.
Nadzemní záhlavíTCP má dlouhou délku záhlaví, obvykle 20 bajtů, která se zvětšuje při použití volitelných polí. UDP má naopak pevnou délku záhlaví pouze 8 bajtů, takže UDP má nižší režijní náklady na záhlaví.
Scénáře aplikací TCP a UDP:
TCP a UDP jsou dva různé protokoly transportní vrstvy a v různých aplikačních scénářích se mezi nimi vyskytují určité rozdíly.
Protože TCP je protokol orientovaný na spojení, používá se primárně v situacích, kdy je vyžadován spolehlivý přenos dat. Mezi běžné případy použití patří:
Přenos souborů přes FTPTCP dokáže zajistit, aby se soubory během přenosu neztratily ani nepoškodily.
HTTP/HTTPSTCP zajišťuje integritu a správnost webového obsahu.
Protože UDP je bezspojkový protokol, neposkytuje záruku spolehlivosti, ale má vlastnosti efektivity a práce v reálném čase. UDP je vhodný pro následující scénáře:
Nízkopaketový provoz, jako například DNS (Domain Name System)DNS dotazy jsou obvykle krátké pakety a UDP je dokáže zpracovat rychleji.
Multimediální komunikace, jako je video a audioPro multimediální přenos s vysokými požadavky na přenos v reálném čase může UDP poskytnout nižší latenci, aby se zajistilo, že data mohou být přenesena včas.
Vysílací komunikaceUDP podporuje komunikaci typu jeden k mnoha a mnoho k mnoha a lze jej použít pro přenos vysílání zpráv.
Shrnutí
Dnes jsme se učili o TCP. TCP je spojově orientovaný, spolehlivý komunikační protokol transportní vrstvy založený na bajtovém toku. Zajišťuje spolehlivý přenos a řádný příjem dat navázáním spojení, handshake a potvrzením. Protokol TCP používá porty k realizaci komunikace mezi procesy a poskytuje přímé komunikační služby pro aplikační procesy běžící na různých hostitelích. Spojení TCP jsou plně duplexní, což umožňuje simultánní obousměrný přenos dat. Naproti tomu UDP je komunikační protokol bez spojování, který neposkytuje záruky spolehlivosti a je vhodný pro některé scénáře s vysokými požadavky na reálný čas. TCP a UDP se liší v režimu připojení, servisním objektu, spolehlivosti, řízení přetížení, řízení toku a dalších aspektech a liší se i jejich aplikační scénáře.
Čas zveřejnění: 3. prosince 2024