Transportní vrstva
- Transportní vrstva zprostředkovává komunikaci mezi procesy (aplikacemi), které běží na komunikujících uzlech.
- Poskytuje dvě základní služby
- Spojová spolehlivá služba
- Navazuje, udržuje a ukončuje spojení mezi dvěma aplikacemi
- Zajišťuje spolehlivé doručení dat
- Např. protokol TCP
- Nespojová nespolehlivá služba
- Nevytváří žádné spojení
- Nezajišťuje spolehlivé doručení dat
- Např. protokol UDP
- Spojová spolehlivá služba
Port
- Ve skutečnosti mezi sebou nekomunikují uzly, ale aplikace které na těchto uzlech běží.
- Komunikovali by dvě aplikace na jednom uzlu, jak rozlišíme, pro kterou aplikaci jsou data? - Pomocí portu
- Port je adresa na úrovni transportní vrstvy.
- Je to 2B adresa konkrétní aplikace.
- jsou privilegované. Vyhrazené pro standardní služby. Např. pro službu WWW.
- se označují jako klientské. Jsou určeny pro klientské aplikace.
- Porty mají nezávislý rozsah pro TCP a UDP.
Protokol TCP
- Spojová spolehlivá služba zajišťující spolehlivé doručení dat.
- V jeho kompetenci je:
- Potvrzování přijetí dat
- Zaručení správného pořadí dat
- Detekce ztráty dat
- Vyžádání opakování přenosu ztracených nebo poškozených dat
- Bajty z vyšší vrstvy jsou postupně ukládány do odesílacího bufferu.
- Z bufferu jsou v daném pořadí přenášeny do přijímacího bufferu příjemce, ze kterého jsou data postupně v daném pořadí předávána do vyšší vrstvy.
- Vyšší vrstva příjemce dostává bajty v pořadí, ve kterém byly vytvořeny vyšší vrstvou na odesílateli.
TPC segment
- Transportní vrstva přenáší data ve formě TCP segmentů
- Skládá se z:
- Hlavičky - B
- Datová část - data z vyšší vrstvy
- Celková velikost TCP segmentu je omezena velikostí IP paketu, do kterého se vkládá.
- Data jsou obvykle větší, dochází k rozdělení na menší segmenty segmentace dat.
- Data jsou obvykle větší, dochází k rozdělení na menší segmenty segmentace dat.
Navázání spojení
- Založeno na klient-server architektuře.
- Klient navazuje spojení, server přijímá/odmítá.
- Aby mohlo dojít k navázání spojení, musí mít klient i server otevřený port a poslouchat komunikaci.
- Navázání spojení probýhá technikou 3-fázového handshake
3-fázový handshake
- Klient posílá TCP segment (bez dat) s příznakem SYN a náhodně vygenerovaným číslem seq. Tento krok se označuje jako aktivní otevření.
- Server posílá segment (bez dat) s příznaky SYN a ACK a náhodně vygenerovaným číslem seq a číslem potvrzení ack.
- Klient posílá segment s přiznakem ACK a číslem potvrzení nastavení seq + 1. Již může nést data.
Přenos dat
- Po navázání spojení je možné posílat data oběma směry.
- Data jsou z odesílacího bufferu odstraněna v okamžiku potvrzení jejich přijetí.
Přenost dat
- Klient posílá segment obsahující B dat s příznakem ACK. První B odeslaných dat má číslo , poslední má tedy . Hodnota čísla potvrzení ack identifikuje, že jsou očekávána data začínající bajtem číslo .
- Klient posílá segment obsahující B dat s příznakem ACK. První B odeslaných dat má číslo , poslední . Hodnota čísla potvrzení je ack je stále . Server nic neposlal.
- Server posílá segment obsahující B dat s příznakem ACK. První B má číslo , poslední . Hodnota potvrzení ack je potvrzuje přejití segmentů z kroku a . Jsou očekávána data začinající .
- Klient posílá segment bez dat s příznakem ACK. Číslo sekvence se neměni a má hodnotu . Hodnota potvrzení ack je , potvrzuje přijetí segmentů z .
Ukončení spojení
- Je možné provést několika způsoby
3-fázové ukončení spojení
- Klient posílá segment (může obsahovat data) s příznakem FIN + ACK. Tento krok se označuje jako aktivní uzavření.
- Server posílá segment (může obsahovat data) s příznakem FIN + ACK.
- Klient posílá segment (bez dat) s příznakem ACK.
4-fázové ukončení spojení
- Tento způsob se využívá pokud pouze jedna strana chce provést ukončení spojení.
- Klient posílá segment (může obsahovat data) s příznaky FIN + ACK. Klient dále nemůže posílat data, může ale přijímat a musí posílat segmenty s ACK.
- Server posílá segment s příznakem ACK. Server může déle posílat data. Po dokončení tohoto kroku je pro server spojení polouzavřené.
- Server posílá segment (může obsahovat data) a příznaky ACK a FIN.
- Klient posílá segment s příznakem ACK.
Řízení toku dat
- Při komunikaci mezi uzly může nastat situace, kdy příjemce nestíhá zpracovávat přijímaná data. zahlcení příjemce
- Při zahlcování dochází k zaplnění přijímacího bufferu v jehož důsledku jsou další příchozí data ztracena.
Posuvné okénko
- Posuvné okénko vymezuje, jak velkou část odesílacího bufferu je možné poslat, aniž by došlo k zahlcení příjemce
- Strategie stop and wait je neefektivní.
- Po poslání dat se čeká na potvrzení
- Namísto toho se data v okně odesílají bez nutnosti čekání na potvrzení jejich přijetí. Jakmile je odeslaná část potvrzena, okno se posouvá.
Příklad posuvného okénka
- Posuvné okno má velikost a obsahuje bajty s čísly .
- Jsou odeslány bajty .
- Pokud dojde k odeslání bajtu a potvrzení bajtů posune se okénko následovně:
- Pokud budeme zmenšovat okno, nesmí dojít k situaci, kdy jsou již odeslané bajty mimo posuvní okénko
Pozitivní potvrzování
- TCP využívá komulativní potvrzování.
- To znamená, že je vždy potvrzováno přijetí souvislé sekvence bajtů.
- Potvrzení je generováno dle následujících pravidel:
- Při poslání dat je vždy segmentu nastaven příznak ACK a hodnota čísla potvrzení na číslo následující očekávané sekvence.
- Pokud příjemce nemá data k odeslání a obdrží očekávaný segment a předchozí segment byl potvrzen, pozdrží odeslání potvrzení dokud nepřijde další segment, maximálně ale 500 ms.
- Toto pravidlo snižuje celkový počet zaslaných potvrzení.
- Pokud příjemce obdrží očekávaný segment a předešlý segment nebyl potvrzen, je okamžitě odesláno potvrzení.
- Toto pravidlo zabraňuje zbytečnému opakovanému poslání již poslaného segmentu. V důsledku tohoto pravidla by neměly být více než dva nepotvrzené segmenty.
- Pokud příjemce obdrží neočekávaná segment, je okamžitě posláno potvrzení očekávaného segmentu.
- Tímto je protistrana informována o ztrátě segmentu
- Pokud příjemce obdrží chybějící segment, je posláno potvrzení očekávaného segmentu.
- Tímto je protistrana informována, že chybějící segment již přišel.
- Pokud příjemce obdrží duplicitní segment, zahodí jej a je posláno potvrzení očekávaného segmentu.
- Toto pravidlo slouží pro kompenzaci ztracených potvrzení.
Bezchybová komunikace
Ztracený segment
Zahlcení sítě
-
Protokol TCP umožňuje řízení toku dat nejen mezi odesílatelem a příjemcem, ale také na úrovni sítě (mezilehlých uzlů).
-
Kromě posuvného okénka má odesílatel ještě okno zahlcení, jehož velikost je určena stavem sítě.
-
Okno zahlcení udává, kolik dat je možné poslat, aby nedošlo k jejímu zahlcení.
-
Odesílatel vždy volí menší z okna zahlcení a posuvného okna.
-
Odesílatel řídí tok dat v síti dle četnosti opětovného zaslání segmentu následujícím způsobem:
- Fáze pomalého startu. Okno zahlcení se postupně zvětšuje až je dosaženo stanovené hodnoty limit. Tato hodnota se v průběhu spojení mění.
- Fáze vyhýbání se zahlcením. Pokud dojde k potvrzení všech dat v okně zahlcení, je toto okno zvětšeno o hodnotu 1.
- Fáze detekce zahlcení. V případě, že je detekována potřeba opětovného zaslání segmentu, je dle události, která odeslání spustila, upraveno okno zahlcení.
- Pokud vypršel RTO časovač: je nastaven limit na hodnotu okna zahlcení a velikost okna zahlcení je nastavena na . Je zahájena fáze pomalého startu.
- Pokud byl segment poslán na základě detekce tří duplicitních potvrzení: je nastaven limit na hodnotu okna zahlcení a velikost okna zahlcení je nastavena na hodnotu limit. Poté je zahájena fáze vyhýbaní se zahlcení.
Protokol UDP
-
UDP je oproti TCP výrazně jednodušší. Zajišťuje pouze nespojovou nespolehlivou službu a nedisponuje žádnými prostředky pro řízení toku dat.
-
UDP negarantuje doručení dat.
-
Při použití protokolu UDP se data přenášejí ve formě UDP datagramů.
-
Rozdělení do těchto datagramů je ponecháno na aplikační vrstvě.
-
Přenos dat je výrazně rychlejší než přenos dat pomocí TCP.
-
Jednotlivé UDP datagramy nejsou nijak potvrzovány a hlavička datagramu nemusí obsahovat tolik informací, jelikož není vytvářeno spojení a není řízen tok dat.
Navigace
Předchozí: Protokol IP - paket, adresy a podsítě, směrování Následující: Systém DNS Celý okruh: 2. Informační technologie