Počítačové sítě/Transport dat

Transportní vrstva TCP/IP modelu odpovídá Transportní vrstvě ISO/OSI modelu. Účelem této vrstvy je identifikace komunikujících aplikací na koncových zařízeních, vytváření a správa virtuálních spojení mezi těmito aplikacemi a segmentace dat předaných z vyšší vrstvy.

Identifikace aplikace

editovat

O komunikaci koncových zařízení v Internetu se stará IP - je-li nastaven správně, koncové zařízení je v Internetu dostupné. Koncové zařízení, ať už server, notebook či smartphone, komunikuje přes Internet různými způsoby - prohlížení webových stránek, email, videokonference, chat nebo internetové telefonování, k čemuž využívá různých aplikací (programů) - webový prohlížeč, emailový klient, aplikaci pro VoIP[1]. Tyto způsoby komunikace je třeba odlišit a potřebná data doručit vždy nejen správnému koncovému zařízení (o to se stará IP), ale také správné aplikaci.

K odlišení aplikací používá Transportní vrstva 16 bit dlouhý identifikátor nazývaný port[2][3][4].

Dobře známé porty

editovat

Anglicky well-known, rozsah 0 - 1023, slouží k identifikaci dobře známých síťových aplikací (služeb). Například webové stránky jsou zpravidla dostupné na portu 80 (www), emaily se posílají přes port 25 (smtp)[5] a stahují se přes porty 110 (pop3) nebo 143 (imap)[6]. Přenos souborů funguje přes porty 20 a 21 (ftp).

Registrované porty

editovat

Anglicky registered, rozsah 1024 - 49151. Tyto porty jsou přiřazené odborem IANA neziskové organizace ICANN. Slouží k méně častým aplikacím, jako chat na portu 5222 (xmpp)[7], iniciace internetového hovoru přes port 5060 (sip)[8] nebo virtuální privátní síť (VPN) přes port 1194 (OpenVPN). Tyto aplikace nejsou tak časté jako aplikace sídlící na portech 0-1024, pokud je však registrovaný port otevřený, předpokládá se na něm aplikace ze seznamu IANA.

Dynamické porty

editovat

Anglicky dynamic, rozsah 49152 - 65535. Dynamické porty jsou přiřazovány automaticky aplikaci, která je v danou chvíli potřebuje. Třeba když se klient připojuje k webovému serveru. Zadá adresu do prohlížeče a prohlížeč sestaví spojení na cílovou IP adresu serveru a cílový port (pro webové služby nejčastěji 80). Zdrojová IP adresa je IP adresa klienta, zdrojový port je pak přidělen automaticky z dynamického rozsahu.

Na transportní vrstvě se udržují virtuální spojení, kterým se říká socket. Socket lze definovat jako pětici údajů Zdrojová IP adresa, Cílová IP adresa, Zdrojový port, Cílový port, Protokol.

Správa socketu je většinou řešena přes knihovny operačního systému. Pro programátora programujícího síťovou aplikaci to znamená, že na dvou strojích otevře socket se specifikovanými parametry a ten pak používá jako virtuální spojení stylem "co do socketu na jedné straně nacpu, to na druhé straně vypadne".

Segmentace

editovat

Při přenosu souboru hraje roli jeho velikost. Pro nejznámější protokoly - IP pojme maximálně 64kB, Ethernet maximálně 1500B. Segmentace na Transportní vrstvě znamená, že přenášený soubor je rozdělen na části, které odpovídají maximální velikosti (MTU[9]), kterou je možno přenést přes protokoly použité při komunikaci. Je nutné zmínit, že pro komunikaci v Internetu je třeba IP a jeho MTU, nicméně jsou potřeba i protokoly nižších vrstev - v lokální síti Ethernet nebo Wifi, v mobilní síti GPRS, HSPA nebo LTE a jejich MTU. Je vhodné použít nejmenší MTU z celé komunikační cesty.

V případě, že je použita například MTU zdrojového rozhraní a na komunikační cestě se vyskytne médium s nižším MTU, je třeba provést fragmentaci. Tento proces rozdělí přenášená data tak, aby odpovídala MTU přenosového média. Fragmentaci je vhodné se vyhnout (například v IPv6 se před odesláním dat provede průzkum komunikační cesty a nalezne se nejnižší MTU, které se použije), protože případná fragmentace vytěžuje zařízení, které ji musí provádět. Navíc je nutné již "hotový" packet rozložit, jednotlivé části znovu identifikovat a na cílovém zařízení nejprve tyto části sestavit, čímž narůstá složitost.

Anglicky User Datagram Protocol[10], je protokol Transportní vrstvy.

UDP je nespolehlivý - data, která odešle, nemusí dorazit do cíle, protože UDP žádným způsobem neověřuje doručení dat cílové aplikaci. Neověřuje také pořadí doručení datagramů, které mohou dorazit jinak, než byly odeslány. Protože je UDP nespolehlivý, jeho hlavička je menší (obsahuje méně informací) a jeho provoz je méně náročný (je třeba méně kontrolního provozu - dat, která jsou potřeba pro správu spojení).

Z výše uvedených vlastností vyplývá, že UDP se hodí pro časově náročné aplikace, u kterých nezáleží na tom, zda všechna data dorazí do cíle, ale je důležité zpoždění přenosu těchto dat. Příkladem je komunikace v reálném čase - VoIP, videokonference, internetové rádio, internetová televize a streamování videa. Například pro videokonferenci může být přenos obrazu 30fps - 30 snímků za sekundu. V případě výpadku dvou nebo tří snímků problém nebude ani poznat, ale pokud hovor bude mít 3 sekundy zpoždění, bude to nepříjemné.

Anglicky Transmission Control Protocol[11] je protokol Transportní vrstvy.

TCP je spolehlivý - před přenosem dat sestaví spojení, jednotlivé segmenty dat opatří sekvenčním číslem a odešle. Při přijímání seřadí jednotlivé segmenty podle sekvenčního čísla a po přijetí předem definovaného počtu segmentů přijetí potvrzuje odesílateli. Hlavička TCP je větší a nároky na provoz jsou vyšší, zato je jisté, že poslaná data dorazí do cíle a to ve správném pořadí.

Z výše uvedených vlastností vyplývá, že TCP se hodí pro aplikace vyžadující spolehlivost, kde příliš nezáleží na zpoždění přenosu dat. Příkladem je komunikace přes email, prohlížení webových stránek nebo přenos souborů. Nebude ani poznat, když email dorazí o několik sekund později, naopak ale bude velmi nepříjemné, pokud se z emailu ztratí odstavec.

Reference

editovat
  1. VoIP = Voice over Internet Protocol, tj. telefonování přes Internet
  2. https://en.wikipedia.org/wiki/Port_%28computer_networking%29
  3. https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers
  4. https://cs.wikipedia.org/wiki/Seznam_%C4%8D%C3%ADsel_port%C5%AF_TCP_a_UDP
  5. Zabezpečeně port 465, 587.
  6. Zabezpečeně porty 995 nebo 993.
  7. Další druhy chatu (tj. chat přes jiné protokoly) používají další porty, např. IRC porty 6665–6669, ICQ a AOL port 5190.
  8. https://en.wikipedia.org/wiki/Session_Initiation_Protocol
  9. https://en.wikipedia.org/wiki/Maximum_transmission_unit
  10. https://en.wikipedia.org/wiki/User_Datagram_Protocol
  11. https://cs.wikipedia.org/wiki/Transmission_Control_Protocol