CZ 
06.10.2024 Hanuš VÍTEJTE V MÉM SVĚTĚ

An English translation is available for this article. Pro tento článek je dostupný anglický překlad.
TCP/IP - model, encapsulation, packet vs. frame

TCP/IP - model, encapsulace, paket vs. rámec

| Petr Bouška - Samuraj |
V pátém díle seriálu o počítačových sítích stručně sepisuji základní informace o nejpoužívanějším protokolu TCP/IP. Je zde zmíněn TCP/IP model a princip encapsulace při odesílání dat. Pokouším se popsat rozdíly mezi běžnými termíny paket (packet) a rámec (frame). A nakonec je zobrazen formát rámce.
zobrazeno: 76 880x (76 850 CZ, 30 EN) | Komentáře [8]

Internet protocol suite, bežně označovaná jako TCP/IP, je sada komunikačních protokolů, kde hlavními jsou protokoly Transmission Control Protocol (TCP) a Internet Protocol (IP).

TCP/IP model

Klasický čtyřvrstvý TCP/IP model, někdy zvaný také Internet Reference Model, vychází z OSI modelu, ale více se blíží praxi.

vrstva jméno CZ jméno EN příklady aplikací dané vrtsvy
layer 4 Aplikační Application Telnet, FTP, POP3, HTTP, DNS, SNMP
layer 3 Transportní Transport TCP, UDP
layer 2 Síťová Network (Internetwork/Internet) IP, ICMP, IGMP, ARP, STP
layer 1 Síťové rozhranní (přístupová) Network Interface (Access) ovladač síťové karty (Ethernet, Frame Relay)

Někdy se nejnižší vrstva rozděluje na dvě části. Na vrstvu fyzickou (Physical Layer) a vrstvu linkovou (Data link).

Encapsulace při odesílání dat

Při odesílání dat se provádí encapsulace (zapouzdřování - zabalování) od nejvyšší vrstvy dolů. Probíhá to tak, že aplikace vezme data (aplikační vrstva), která chce zaslat jiné stanici a doplní je o aplikační hlavičku. Tato data zašle nižší vrstvě (transportní), která odesílaná data rozdělí na segmenty, zabalí a přidá TCP (nebo UDP) hlavičku a vytvoří TCP segment. Další vrstva (síťová) doplní IP hlavičku a takto vznikne IP paket (někdy označovaný jako IP datagram). V poslední vrstvě (přístupové) se k paketu přidá ethernetová hlavička na začátek a trailer na konec, ten obsahuje FCS (Frame Check Sequence) - kontrolní součet (často se pro jeho výpočet používá CRC - cyclic redundancy check). Takto v posledním kroku vznikne ethernetový rámec (ethernet frame), který se vysílá na komunikační médium.

Pozn.: Výše uvedený popis se týkal protokolu IP, pokud se jedná o nějaký pomocný protokol (třeba ARP, ICMP), tak je situace obdobná.

Když cílové zařízení přijme data, provádí se obrácený postup deencapsulace (rozbalování) od nejnižší vrstvy nahoru a cílová aplikace dostane odesílaná data.

Paket vs. rámec

V souvislosti s daty a jejich přenosem po síti se používají dva důležité termíny, jsou to paket a rámec. Tyto termíny jsou hojně používány v literatuře, na internetu, i v praxi. Bohužel v literatuře existuje několik odlišných vysvětlení a také používání těchto výrazů je různé. Navíc záleží na technologii, u které se používají (podobné termíny se používají třeba i u sériové komunikace). Uvádím zde vysvětlení těchto termínů, které se mi zdá nejsprávnější.

Paket (packet) v překladu znamená balíček a jedná se o formátovaný blok dat, který se přenáší v počítačové síti. O paketech se mluví v souvislosti se síťovou vrstvou. Paket obsahuje IP adresu, další atributy a data. Zabalí se do rámce a následně putuje sítí.

Rámec (frame) je to, co skutečně putuje v síti. Rámce vznikají až na fyzického vrstvě síťového rozhranní. Název naznačuje, že se spíše než o objekt jedná o časový úsek. Rámců existuje více typů, nejpoužívanější je Ethernet II, který umí přepravovat TCP/IP i IPX/SPX.

Maximální velikost dat přenášených v rámci (tedy velikost paketu) je dána pomocí MTU (Maximum transmission unit) a váže se k linkové vrstvě. Standardní velikost MTU v ethernetu je 46 - 1500 bytů. Na začátku komunikace se zařízení pomocí ICMP domluví na velikosti MTU. Pokud vyžaduje druhá strana menší MTU, může se provést fragmentace - rozdělení rámce do více menších. Fragmentaci je možno zakázat příznakem v hlavičce paketu. Pokud je fragmentace zakázána a druhá strana akceptuje pouze menší MTU, tak odpoví chybou ICMP.

V obecné terminologii se používá označení Protocol Data Unit (PDU), což je datová jednotka na libovolné vrstvě (IP paket, rámec .). Když se PDU předá na nižší vrstvu, tak se označuje jako Service Data Unit (SDU), tam se doplní o Protocol Control Information (PCI), tedy hlavičku, a vznikne nové PDU.

Formát paketu - rámce

Základní tvar rámce je hlavička (header), data (payload) a zakončení (trailer). Data jsou složena ze zapouzdřených dat vyšších vrstev. Následující obrázek zobrazuje čtyři vrstvy TCP/IP modelu spolu s hrubým formátem dat, jak jsou zapouzdřována odshora dolů. Uvedený příklad je pro protokol TCP, ale obecný model je shodný.

            jméno PDU vrstva
      appl header user dat   message Application
               
    TCP header application data   TCP segment Transport
               
  IP header TCP header application data   IP packet Network
               
ethernet header IP header TCP header application data ethernet trailer Ethernet frame Data-Link

Ethernetová hlavička

Ethernetová hlavička obsahuje zdrojovou a cílovou MAC adresu (fyzickou adresu od hopu k hopu) a typ/délku. Typ v hlavičce určuje jaký protokol je použit na vyšší vrstvě (IP, ARP, atp.). Pro rozlišení jednotlivých rámců se na začátku vysílá speciální úvod (preamble) složený ze sekvence střídajících se jedniček a nul a SFD - oddělovač začátku rámce.

úvod SFD cílová MAC adresa zdrojová MAC adresa typ / délka data (payload) CRC
7B 1B 6B 6B 2B 46-1500B 4B

IP hlavička

IP hlavička obsahuje zdrojovou a cílovou IP adresu (logickou adresu komunikujících stran), dále určení protokolu pro další vrstvu (TCP, UDP, ICMP, apod.), kontrolní součet hlavičky a další hodnoty. Standardní velikost IP hlavičky je 20B, ale může ještě obsahovat volitelné vlastnosti. Tvar IP hlavičky záleží na použitém protokolu, následující příklad je pro IPv4.

bits 0-3 4-7 8-15 16-18 19-31
0 4 header length Type of Service total length (header + data)
32 identification flags fragment offset
64 TTL protocol header checksum
96 source IP
128 destination IP
160 options (if any)
160/192+ DATA

TCP hlavička

TCP hlavička obsahuje zdrojový a cílový port, číslo sekvence a odpovědi (pro zajištění spolehlivosti), příznaky (kam patří SYN a ACK pro navázání spojení), velikost potvrzovacího okna a další. Standardní velikost je opět 20B.

bits 0-3 4-7 8-15 16-31
0 Source Port Destination Port
32 Sequence Number
64 Acknowledgment Number
96 Data Offset Reserved Flags Window
128 Checksum Urgent Pointer
160 Options (optional)
160/192+ DATA

Související články:

Počítačové sítě - Computer networks

Tento seriál se věnuje základům počítačových sítí. Jsou zde stručně popsány důležité praktické aspekty, které by měl znát každý, kdo se o sítě zajímá. Obsahuje jedny z nejčtenějších článků na tomto webu. Je využíváno pro výuku na školách.

Pokud se chcete vyjádřit k tomuto článku, využijte komentáře níže.

Komentáře
  1. [1] tomfi

    Tak opět něco, určitě to neberte jako že si nevážím Vaší práce, spíš mi jde o vylepšení již dobrého ;)

    Určitě není správné uvádět Internet Reference model jako 4 vrstvý ... IP pracuje na 3. vrstvě a tak by se to mělo uvádět vždy (sám velice často uvádím právě na "3. vrstvě" místo na "síťové vrstvě").

    Zůstaňme na zdrojích cisca ;)

    Ať se to vezme z hlediska IP:

    http://www.cisco.com/en/US/tech/tk1330/tsd_technology_support_technical_reference_chapter09186a0080759807.html

    Nebo z hlediska Ethernetu:

    http://www.cisco.com/en/US/tech/tk1330/tsd_technology_support_technical_reference_chapter09186a008075974f.html

    Vždy se mluví o tom že ethernet se dělí (na 2 vrstvy, celkem na 3 díly)... a ip začíná na 3. vrstvě ... zbytek vyplývá z toho prvního dokumentu...

    2. příklad encapsulace jako jpeg headeru taky není správně.

    Středa, 22.08.2007 20:51 | odpovědět
  2. [2] Samuraj

    odpověď na [1]tomfi: No já si o sobě rozhodně nemyslím, že bych byl vševědoucí a opravy či doplnění vítám. Navíc některé věci uvádím pouze pro doplnění celku (a nemám s nimi takové zkušenosti), takže čerpám z různých materiálů.

    Co se týče, zda je TCP/IP model čtyř či pěti vrstvý, tak to je asi těžká otázka, i když jsem se nedíval do specifikace. Na netu jsou obě varianty popsány, tak 50 na 50, třeba i u Cisca

    http://www.cisco.com/en/US/products/sw/secursw/ps743/products_user_guide_chapter09186a008007f2df.html

    http://en.wikipedia.org/wiki/Tcp_ip_model

    Jinak také radši používám označování vrstev číslem (a většinou doplňuji, že jde o ISO/OSI model) a pak je to dost matoucí (ten počet vrstev).

    Co se týče toho JPGu, tak nevím na co jsem myslel, je to samozřejmě hloupost. Obrázek mohou být data, ta se zapouzdří do aplikačního protokolu (např. HTTP), takže na aplikační vrstvě je hlavička HTTP.

    Čtvrtek, 23.08.2007 11:47 | odpovědět
  3. [3] tomfi

    Mate pravdu... člověk se každý den něco přiučí ;)

    DoD model je 4 vrstvý(rfc760 a rfc761)... přesně jak říkáte. Omlouvám se.

    Ještě na tom textu na cisco.com koukněte na "Figure A-3" jak mají naznačené obalování dat.

    Čtvrtek, 23.08.2007 14:11 | odpovědět
  4. [4] Anonym

    Chtěl bych spáááát!! Spáááát!:-O

    Fakt obdivuju lidi, kterým dávají tyhle řádky smysl :-) Bez takových jako vy bysme se určitě neobešli ;-)

    Pondělí, 06.12.2010 11:28 | odpovědět
  5. [5] Zmije

    Zdravim, píšu těď velmi zjednodušený TCP stack do embeded a zdá se mi, že v TCP hlavičce neodpovídá počet bitu dataoffset, který je 8bit a reserved + flags, které se naopak dělí o 1B, tedy 4b a 4b.

    Čtvrtek, 10.03.2011 15:16 | odpovědět
  6. [6] Tomáš

    Článek pro mě jako víceméně laika zajímavý, dovolím si jen jazykovou poznámku, píše se rozhraní, nikoli rozhranní.

    Středa, 28.12.2011 21:57 | odpovědět
  7. [7] retriever

    odpověď na [4]Anonym: A prečo teda vňbec čítaš tieto stránky? Či treba špehovať?

    Čtvrtek, 02.02.2017 17:51 | odpovědět
  8. [8] Viktor dyk

    dekuji za pochopeni

    Čtvrtek, 25.05.2023 18:45 | odpovědět
Přidat komentář

Vložit tag: strong em link

Vložit smajlík: :-) ;-) :-( :-O

Nápověda:
  • maximální délka komentáře je 2000 znaků
  • HTML tagy nejsou povoleny (budou odstraněny), použít se mohou pouze speciální tagy (jsou uvedeny nad vstupním polem)
  • nový řádek (ENTER) ukončí odstavec a začne nový
  • pokud odpovídáte na jiný komentář, vložte na začátek odstavce (řádku) číslo komentáře v hranatých závorkách