Základy transportního protokolu TCP

Transkript

Základy transportního protokolu TCP
Základy transportního
protokolu TCP
Leoš Boháč
Autor: Leoš Boháč
Název díla: Základy transportního protokolu TCP
Zpracoval(a): České vysoké učení technické v Praze
Fakulta elektrotechnická
Kontaktní adresa: Technická 2, Praha 6
Inovace předmětů a studijních materiálů pro
e-learningovou výuku v prezenční a kombinované
formě studia
Evropský sociální fond
Praha & EU: Investujeme do vaší budoucnosti
VYSVĚTLIVKY
Definice
Zajímavost
Poznámka
Příklad
Shrnutí
Výhody
Nevýhody
ANOTACE
V architektuře TCP/IP plní nezastupitelnou funkci transportní protokoly, které poskytují
programátorům síťových aplikací nezbytné služby. Protokol TCP patří v architektuře TCP/IP
do skupiny nesložitějších a zároveň nejčastěji v praxi používaných transportních protokolů.
TCP je schopen programátorům garantovat spolehlivý přenos libovolně dlouhé datové zprávy.
Zároveň je schopen se vypořádat s případným vznikem přetížení datové cesty v síti
a regulovat rychlost přenosu dat mezi vysílačem a přijímačem.
CÍLE
Cílem modulu je poskytnout studentům základní znalosti týkající se smyslu použití a funkce
transportního protokolu TCP.
LITERATURA
[1]
STEVENS, W. Richard. TCP/IP Illustrated : Vol. 1: The Protocols. [s.l.] : AddisonWesley Professional, 1994. 562 s. ISBN 0-201-63346-9
[2]
KOZIEROK, Charles M. The TCP/IP Guide : A Comprehensive, Illustrated Internet
Protocols Reference. San Francisco : No Starch Press, 2005. 1648 s. ISBN 978-159327-047-6
[3]
DOYLE, Jeff; CARROLL, Jennifer. Routing TCP-IP : Volume I. 2nd ed. [s.l.] : Cisco
Press, 2005. 936 s. ISBN 1-58705-202-4
[4]
ZININ, Alex. Cisco IP Routing : Packet Forwarding and Intra-domain Routing
Protocols . [s.l.] : Addison Wesley Professional, 2001. 656 s. ISBN 0-201-60473-6
Obsah
1 Smysl a použití transportních protokolů v architektuře TCP/IP .................................... 6
1.1
Přehled architektury TCP/IP ...................................................................................... 6
1.2
Základy transportního protokoly UDP ....................................................................... 8
1.3
Vlastnosti a smysl použití UDP protokolu ................................................................. 9
1.4
Základní vlastnosti transportního protokolu TCP .................................................... 11
2 Programovací primitivy pro přístup k transportním službám architektury TCP/IP . 13
2.1
Aplikační prostor a princip transportních soketů ..................................................... 13
2.2
Princip soketové komunikace pro TCP protokol ..................................................... 15
3 Popis funkce transportního protokolu ............................................................................. 16
3.1
Sekvenční čísla ......................................................................................................... 16
3.2
Formát TCP záhlaví.................................................................................................. 18
3.3
Fáze navázání TCP spojení ...................................................................................... 20
3.4
Fáze přenosu dat ....................................................................................................... 22
3.5
Princip přenosu pomocí okna ................................................................................... 23
3.6
Použití okna pro regulaci přenosu dat – řízení toku ................................................. 24
3.7
Metoda multiplikativního potvrzování doručených segmentů ................................. 25
3.8
Fáze ukončení spojení .............................................................................................. 26
4 Metody řízení přetížení sítě u protokolu TCP ................................................................. 27
4.1
Smysl řízení přetížení ............................................................................................... 27
4.2
Metoda aditivního zvětšení a multiplikativního zmenšení okna přetížení ............... 29
4.3
Indikace přetížení u TCP přenosu ............................................................................ 31
4.4
Fáze pomalého růstu okna ........................................................................................ 32
4.5
Fáze vyhýbání se přetížení ....................................................................................... 33
4.6
Závěrečný test........................................................................................................... 34
1 Smysl a použití transportních protokolů
v architektuře TCP/IP
1.1 Přehled architektury TCP/IP
Na obrázku je nakreslen model architektury TCP/IP (Transmission Control
Protocol/Internet Protocol) a jeho srovnání s modelem RM OSI (Reference
Model – Open System Interconnection).
Jak je patrné, jsou si oba modely velice podobné, avšak nejsou totožné. Vzhledem
k tomu, že primárním úkolem Internetu a tedy s ním souvisejícím modelem
TCP/IP bylo spíše propojení na úrovni sítí, než na úrovni koncových zařízení
lokálně, nezabývá se TCP/IP problematikou definice dvou spodních vrstev RM
OSI (fyzické a spojové).
Původně se totiž předpokládalo, že TCP/IP bude nadstavbou nad již existujícími
lokálními sítěmi v jednotlivých lokalitách a umožní jejich efektivní globální
propojení mezi sebou. Cílem tedy nebylo definovat a „vnucovat“ určitou
konkrétní technologii LAN jednotlivým organizacím, ale jen vytvořit „most“,
který by umožnil připojit do Internetu koncová zařízení různých lokálních
technologií (např. Ethernet, Token Ring apod.)
Architektura TCP/IP
Sjednocujícím prvkem se stal jednotný formát IP paketu a taktéž principy, podle
nichž se měly pakety přenášet mezi technologicky různými sítěmi od zdroje k cíli.
V architektuře TCP/IP byla pro datový přenos zvolena metoda s negarantovaným
doručením paketů bez nutnosti sestavovat spojení před přenosem dat.
Tento princip byl zvolen s ohledem na technické možnosti technologií, které byly
dostupné v době vzniku Internetu. Nikdo tehdy netušil, do jakých rozměrů se
Internet vyvine v průběhu dalších 40–50 let. TCP/IP architektura staví v první
řadě na standardu IP protokolu, který dle RM OSI patří do vrstvy síťové.
Když se celý model podíváme jinak než jen technicky, tak je vidět, že je vše jedno
velké „logo“, kde si návrhář sítě hraje s kostkami dílčích komponent, aby postavil
jeden velký dům se jménem datová sít. V celé lego stavbě má vše svá jasná
a opodstatněná místa, tak aby stavba nespadla a držela na pevných základech.
Hrajme si, protože hraní je svobodným a nenuceným projevem lidské kreativnosti.
7
1.2 Základy transportního protokoly UDP
Úkolem UDP (User datagram protokol) transportního protokolu je zajistit
negarantovaný přenos dat, stejně jak je tomu při přenosu IP paketů. UDP však
umožňuje použít jednu IP adresu cíle a zdroje pro přenos dat mezi více aplikacemi
běžícími na koncových stanicích. Tuto možnost IP protokol v sobě integrovanou
nemá. Tato vlastnost je velice důležitá u dnešních moderních koncových zařízení,
která většinou pracují ve víceúlohovém režimu, kdy současně běží na stroji více
aplikací současně.
Aby bylo možné odlišit od sebe datové bloky patřící té či oné aplikaci/procesu, je
nutné s nimi spojit identifikační informaci a tu přenášet společně v odpovídajících
datových blocích sítí. Na protější straně lze díky ní snadno rozeznat, které aplikaci
se mají data předat. Výše zmíněná informace může mít různou reprezentaci,
nicméně v modelu TCP/IP bylo pro tento účel zavedené 16 bitové číslo. Aby bylo
možné identifikovat i zdrojovou úlohu na straně vysílače, používá se toto číslo
i pro zdrojovou aplikaci.
V terminologii TCP/IP se tomuto číslu neřekne dnes jinak než číslo portu, viz
obrázek
Koncepce portů u transportních protokolů UDP a TCP
8
1.3 Vlastnosti a smysl použití UDP protokolu
UDP protokol, kromě výše zmiňované identifikace portů, umožňuje:
•
ověřit, zdali doručené datové segmenty jsou správně dlouhé, tj. zda nedošlo
při přenosu k jejich zkrácení. UDP protokol k tomu používá pole „délka“, do
něhož se na straně vysílací doplní celkové délka UDP segmentu, těsně před
tím, než se segment pošle ke zpracování vrstvě IP
•
umožňuje detekovat případný vznik chyb v rozšířeném záhlaví UDP
segmentu, včetně uživatelských dat. Toto rozšířené záhlaví zahrnuje některá
v průběhu přenosu neměnící se pole z IP paketu, jako je např. cílová
a zdrojová adresa a některá další pole. Toto je vlastnost, která odlišuje UDP
protokol od IP protokolu a posouvá komunikaci o další stupeň výše
•
zasílat datové segmenty více koncovým stanicím současně. Tuto vlastnost
dědí UDP od IP protokolu, který ji má také. Zde toto uvádíme pro úplnost,
protože později zmiňovaný druhý transportní protokol TCP tuto vlastnost
postrádá
Důležité je se zmínit o tom, jaké služby UDP protokol poskytuje. Vzhledem
k tomu, že většinu vlastností dědí po protokolu IP, neposkytuje stejně jako IP
garantovaný přenos dat k protější cílové stanici. Pokud tedy programátor aplikace
použije UDP protokol pro přenos dat své aplikace, musí být srozuměn s tím, že
některá přenášená data ve formě UDP segmentů nemusí do cílové stanice dorazit.
Důvodů nedoručitelnosti je několik, např. může dojít při přenosu k chybě nebo
v některém z průběžných směrovačů, vzhledem k dočasnému přetížená, mohlo
dojít k zahození paketů.
UDP protokol je transportním protokolem síťové architektury TCP/IP, který
poskytuje uživateli negarantovaný přenos dat globální sítí (typicky Internet)
s možností identifikace aplikací pomocí čísel portů. Na rozdíl od IP umožňuje
navíc provést na straně přijímače detekci případných chyb vzniklých při přenosu
v záhlaví nebo i datové uživatelské části segmentu pomocí začleněného
mechanismu kontrolního součtu.
Otázkou ovšem je, zda mělo smysl navrhovat nespolehlivý protokol a k čemu je
vlastně vhodný? Výhoda použití UDP pro přenos dat spočívá v jeho
jednoduchosti. Pokud je cílem garantovat přenos dat, uvidíme později
v souvislosti s transportním protokolem TCP, je nutné zajistit mnohem složitější
funkci, včetně potvrzování přijatých datových segmentů přijímačem. Tato zpětná
vazba průběžného potvrzování zvětšuje zpoždění přenosu dat a vnáší do
komunikace zpoždění, které u některých aplikací může být více na škodu, než
k užitku. U interaktivních služeb, jako je např. VoIP (telefonní služba s přenosem
v datových sítích) je důležitější zachovat minimální zpoždění, než garantovat
bezchybovost přenášených dat (digitalizovaný a většinou komprimovaný hlasový
signál). Sporadická, chybná data se totiž v komunikaci většinou téměř slyšitelně
neprojeví (třeba jen jako prasknutí) a jsou tedy méně významná, než velké
9
zpoždění, které výrazně ovlivní kvalitu této interaktivní služby – uživatelé by si
totiž při velkém zpoždění vzájemně skákali do konverzace a výrazně by toto
chápali jako sníženou kvalitu hovoru.
Vidíme tedy, že absolutní garance přenesených dat není vždy za každou cenu
nezbytná u všech služeb. Uveďme nyní pravý opak. Služba přenosu souborů
(např. FTP). Lze si snadno představit, k čemu by došlo, pokud bychom přenesli
spustitelný soubor ze vzdáleného serveru s chybami a následně jej spustili. Vedlo
by to určitě k nesprávné funkci programu. V tomto případě stahování datového
spustitelného souboru je nám v zásadě lhostejné, jestli data budou mít při přenosu
zpoždění místo 20 ms 200 ms, protože to na kvalitě služby (stažení souboru)
prostě téměř nebo vůbec nepoznáme.
Z výše uvedeného jednoduchého příkladu vyplývá, že každá aplikace nebo služba
vyžaduje různé kvality transportu svých dat. Toto je jedním z důvodů, proč
vývojáři architektury TCP/IP kdysi začlenili do standardů místo jednoho
transportního protokolu rovnou dva. Tím druhým je TCP, který si vysvětlíme
blíže v následující kapitole.
10
1.4 Základní vlastnosti transportního protokolu
TCP
Druhým v praxi velice často používaným protokolem z architektury TCP/IP je
protokol TCP (Transmission Control Protocol). Hlavní motivací pro zavedení
tohoto protokolu bylo zajistit spolehlivý přenos dat, tak aby programátor aplikace
již nemusel řešit následující problémy, které při přenosu IP paketů mohou nastat:
některé pakety nemusí do cílové stanice vůbec dorazit, protože protokol IP je
koncipován od základu tak, že se data přenáší způsobem, kterému se v angličtině
říká „best effort“, což lze volně přeložit, jako „snaž se doručit, ale když se to
z nějakého důvodu není možné, tak paket zahoď“. Zde se jedná o zahození paketů
v důsledku chyb v nich vzniklých vlivem fyzikálních podmínek přenosu. Žádný
fyzický kanál není totiž za všech podmínek bezchybový
•
protější stanice nemusí být schopna v daném okamžiku zpracovat velký objem
generovaných dat stranou vysílací
•
síť je přetížena a není schopna dočasně pakety přijímací stanici doručit, a tak
je zahazuje někde podél (v uzlu sítě) cesty kcíli
Z programátorského hlediska je toto velice významné, protože programátor
aplikace se nemusí zabývat konkrétními otázkami systému přenosu v síti, pouze
stačí předat TCP vrstvě ukazatel a délku dat v bajtech, které mají být předány
cílové aplikaci. O vše ostatní se již postará protokol TCP. Připomeňme ještě jeden
důležitý detail. U většiny dnešních operačních systémů programátor nepřistupuje
k TCP vrstvě přímo, ale prostřednictvím softwarového rozhraní, kterému se říká
sokety (sockets).
I když se může na první pohled zdát, že je řešení výše uvedených problému
triviální, není tomu tak. Protokol TCP je jedním z nejsložitějších protokolů
z architektury TCP/IP. V průběhu let byl neustále vylepšován a jako celek je
standardizován v mnoha dokumentech. Základní charakteristiky TCP protokolu
jsou shrnuté na následujícím obrázku.
Jedním z prvních a nejdůležitějších úkolů protokolu TCP je zajištění spolehlivého
přenosu datového bloku konkrétní aplikace k aplikaci cílové.
TCP protokol pracuje na 4. vrstvě RM OSI modelu a používá pro transport pakety
níže v RM OSI modelu položeného protokolu IP, který nezaručuje jejich
přenesení do cílové stanice. V případě nedoručení určitého počtu paketů
k přijímací koncové stanici, není úkolem IP vrstvy tato data obnovit, naopak se
předpokládá, že tuto funkci bude plnit protokol TCP.
11
Základní charakteristiky TCP protokolu
Aby bylo možné garantovat bezchybný a ucelený přenos bloku dat dané aplikace,
je nutné tento blok nejprve rozdělit do menších částí - segmentů, které musí být
tak dlouhé, aby se každý z nich, včetně servisních informací, vešel do
odpovídajícího IP paketu. Pro opětovné sestavení datového bloku na straně
přijímače je zapotřebí znát, které ze segmentů nebyly doručené a které naopak
ano. Je tedy nezbytné, aby každý vyslaný segment obsahoval kromě části dat
aplikačního bloku ještě další identifikátor, který by jej jednoznačně odlišil od
ostatních. Přijímací strana takto pozná, který segment z bloku dat chybí, podle
chybějícího identifikátoru segmentu.
12
2 Programovací primitivy pro přístup
k transportním službám architektury
TCP/IP
2.1 Aplikační prostor a princip transportních
soketů
Služby transportních protokolů jako je TCP nebo UDP (není to však vázané jen na
tyto protokoly) jsou dnes v moderních operačních systémech dostupné aplikacím
prostřednictvím specializovaného programového rozhraní. Toto rozhraní používá
představu transportních síťových zásuvek, zvaných sokety. Jedna transportní
síťová zásuvka umožňuje přenos dat mezi danou aplikací a aplikacemi jinými
a představuje jeden koncový bod komunikace. Způsob přenosu dat sítí skrze
danou zásuvku je dán jejím typem, který úzce souvisí s protokolem, který se
používá pro přenos. Zásuvka, či soket, může předávat data mezi aplikacemi, či
procesy v rámci lokálního operačního systému nebo mezi vzdálenými operačními
systémy přes datovou síť. Z pohledu soketu a daného procesu, který jej využívá,
je lhostejné, jestli protější zásuvka komunikace je místní nebo vzdálená.
Z obecného pohledu jsou sokety součástí aplikačního prostoru, který je vyznačen
na následujícím obrázku.
Aplikační prostor
Soket je v rámci TCP/IP rodiny protokolů jednoznačně určen identifikátorem
soketu, který je tvořen zřetězením následujícím údajů:
13
Indetifikátor soketu
Komunikační okruh pro případ TCP protokolu je poté určen párem dvou
koncových soketů/zásuvek, tak jak je naznačeno na následujícím obrázku.
Párování soketů
14
2.2 Princip soketové komunikace pro TCP
protokol
Komunikace prostřednictvím TCP soketu je založena většinou na modelu
komunikace klient/server. V tomto ohledu je vždy jedna TCP zásuvka pasivní
a naslouchá na příchozí TCP spojení (viz další kapitoly) přicházející od TCP
zásuvky aktivní. Většinou je tento princip spojený s aplikací využívají taktéž
princip klient/server, např. služba WWW. V tomto případě WEB server naslouchá
na příchozí spojení na pasivní zásuvce a daném portu (většinou 80) a klienti se
k této zásuvce připojují. Způsob komunikace je naznačen na obrázku.
Princip soketové komunikace
Pokud má být zásuvka v pasivním, naslouchacím režimu, je nutné ji do tohoto
stavu uvést sekvenčním voláním funkcí listen() a následně accept(), viz bod 3.
Dlužno podotknout, že je nutné nejprve zásuvku datově vytvořit voláním funkce
socket(), která vrátí referenci na tuto zásuvku ve formě čísla. Toto číslo se
následně používá jako odkaz na zásuvku, pokud s ní chceme pracovat v dalších
funkcích. Zásuvka, která bude hrát aktivní roli (na obrázku na levé straně) se spojí
s pasivní zásuvkou pomocí funkce connect(), jejímiž parametry je referenční číslo
na předem vytvořenou zásuvku a IP adresa s cílovým portem protější pasivní
zásuvky. Po příchodu požadavku o navázání spojení na stranu pasivní se vrátí
serverovému procesu přes funkci accept() referenční číslo na nově vytvořenou
zásuvku (v našem případě 300), jíž použije proces na straně serveru ke
komunikaci s aktivní stranou ve funkcích zápisu a čtení dat (write() a recv()).
Původní zásuvka (reference 100) se používá jen pro příjem požadavků, nikoliv
pro samotný přenos dat.
15
3 Popis funkce transportního protokolu
3.1 Sekvenční čísla
Aby bylo možné garantovat bezchybný a ucelený přenos bloku dat dané aplikace,
je nutné tento blok nejprve rozdělit do menších částí - segmentů, které musí být
tak dlouhé, aby se každý z nich, včetně servisních informací, vešel do
odpovídajícího IP paketu. Pro opětovné sestavení datového bloku na straně
přijímače je zapotřebí znát, které ze segmentů nebyly doručené a které naopak
ano. Je tedy nezbytné, aby každý vyslaný segment obsahoval kromě části dat
aplikačního bloku ještě další identifikátor, který by jej jednoznačně odlišil od
ostatních. Přijímací strana takto pozná, který segment z bloku dat chybí, podle
chybějícího identifikátoru segmentu.
TCP protokol pro identifikaci vysílaných datových segmentů standardně používá
celé binární 32 bitové číslo, které se průběžně mění u každého vysílaného
segmentu. Mějme však na paměti, že toto číslo není pořadovým číslem vyslaného
segmentu, tak jak je tomu u některých jiných protokolů, ale přímo ukazatel místa
v datovém bloku aplikace, jehož součástí segment je. To je také důvod, proč se
mu říká sekvenční číslo (pro další výklad budeme toto číslo označovat jako
„sek“). Tuto situace se snaží přiblížit následující obrázek. Upřesněme, že
zmiňované sekvenční číslo (ukazatel) ukazuje na bajty v datovém bloku aplikace,
nikoliv na jednotlivé bity.
Sekvenční číslo u TCP protokolu udává, jakou má relativní pozici první bajt
daného segmentu vzhledem k počátku datového bloku aplikace, jež má TCP
vrstva za úkol přenést. Relativností je zde míněno to, že první bajt datového bloku
aplikace nemusí začínat číslem nula, ale číslem libovolným (viz obrázek, číslo
ISN+1), k němuž se začátek vztahuje.
Vztah datového bloku aplikace a vysílaných segmentů
16
Jak již bylo řečeno, aby byl přijímač schopen rozpoznat, který ze segmentů chybí
v bloku aplikačních dat nebo dokonce, které byly přijaté duplicitně (viz dále),
musí být každý segment doplněn jednoznačným sekvenčním číslem. Zásadní
otázkou však je, od jakého sekvenčního čísla se začnou jednotlivé segmenty bloku
dat počítat. Vzhledem k tomu, že je přenos TCP plně duplexní, je nutné mít
k dispozici tyto informace na obou komunikujících stranách. Obě strany si proto
ve fázi navázání TCP spojení musí vzájemně vyměnit mezi sebou počáteční
sekvenční čísla ISN pro jednu a druhou stranu přenosu.
17
3.2 Formát TCP záhlaví
TCP protokol používá pro zajištění své transportní role řídicí informace přenášené
v záhlaví TCP segmentů. Na následujícím obrázku jsou naznačena jednotlivá pole
v záhlaví TCP segmentu. Popíšeme si nyní jen některé z nich. Použití cílového
a zdrojového pole portu je zřejmé. Koncept portů umožňuje vícenásobné použití
jedné implementace TCP protokolu pro více procesů na jednom zařízení (nebo
operačním systému) s jednou IP adresou. Tato pole jsou 16 bitová, což znamená,
že teoreticky lze na jedné IP adrese vytvořit až 65 536 vzájemně nezávislých TCP
zásuvek. Spodní rozsah portů od nuly do 1024 je však rezervován pro specifické
serverové služby (taková TCP zásuvka je ve většině případů pasivní) a za
normálních okolností se tento rozsah nevyskytuje v poli zdrojový port (jsou však
určité výjimky). Pro aktivní zásuvky (klientská část TCP) se volí dočasný
dynamicky vytvořený rozsah počínaje většinou hodnotou 1025 a výše (rozsah
však závisí na použitém operačním systému). Po ukončení spojení lze tato čísla
použít pro jiná spojení, nejsou tedy napevno přiřazená, tak jak je tomu typicky
u TCP portů služeb, na nichž se typicky naslouchá.
Záhlaví TCP segmentů
Pole sekvenční a potvrzovací číslo se používá pro číslování TCP segmentů na
straně vysílací a pro potvrzení přijatých segmentů stranou přijímací.
Důležitou roli v záhlaví TCP hrají bitové příznaky, které plní různorodé funkce.
Nejdůležitější jsou tyto příznaky:
•
SYN – používá se při navázání spojení. Samotný příznak používá TCP strana
aktivní, informuje TCP přijímač o příchozím požadavku na navázání spojení
a o nastaveném počátečním sekvenčním čísle (ISN) v sekvenčním poli záhlaví
•
ACK – tento příznak se používá vždy, když segment nese potvrzovací číslo.
Současné nastavení příznaků SYN a ACK je potvrzením od pasivní strany
TCP spojení, že byl přijat požadavek na navázání spojení stranou aktivní
a zároveň, že segment v záhlaví nese počáteční sekvenční číslo ISN pro
číslování segmentů v opačném směru přenosu od strany pasivní ke straně
aktivní
18
•
FIN – používá se při požadavku libovolné strany TCP spojení na ukončení
probíhající spojení
•
RST – používá se pro obnovu spojení TCP (reset) pokud dojde
k nekonzistenci řídících dat spojení nebo když na daném portu není připojená
žádná aplikace, nebo je daný port zakázán
•
PSH – tento příznak se používá, pokud vysílací část aplikace vyžaduje
okamžité předání všech dat ve vyrovnávací paměti přijímací strany TCP
protější aplikaci.
Pole okno se používá pro řízení toku a pole kontrolní součet slouží pro účely
kontroly chyb, přičemž se hodnota v tomto poli získá výpočtem kontrolního
součtu přes celý TCP segment s přidáním některých dalších polí ze záhlaví IP
datagramu (tzv. pseudohlavička).
19
3.3 Fáze navázání TCP spojení
Prvotní výměně kontrolních dat (např. hodnoty počátečních sekvenčních čísel)
mezi oběma komunikujícími stranami TCP se říká navázání spojení.
Teprve po bezprostředním navázání spojení probíhá fáze přenosu dat. TCP
protokol byl navržen tak, že používá třífázový systém navázání spojení. Před
vlastním popisem procesu navázaní spojení se věnujme otázce, jakým způsobem
reaguje TCP přijímací strana při příjmu datového segmentu. Jak již bylo řečeno,
TCP zajišťuje spolehlivý přenos dat v tom smyslu, že všechna aplikační data jsou
doručena beze změn protější aplikaci.
Fáze navázaní spojení u TCP protokolu
Při vysílání datových segmentů však nelze předem určit, zdali bude daný segment
správně doručen, protože je přenášen v IP paketu a ten nemusí být vůbec doručen.
Aby toto mohlo správně fungovat, je zapotřebí určitá součinnost vysílací TCP
strany s přijímací, konkrétně zajištění průběžného potvrzování o doručení
segmentů.
Navázání spojení, viz obrázek, se uskutečňuje výměnou tří řídicích zpráv (three
way handshake). Tyto zprávy se přenáší doplněním odpovídajících informací do
záhlaví TCP segmentů. V záhlaví TCP segmentu se nachází kromě 32 bitového
sekvenčního (na obrázku označené jako „sek“) a potvrzovacího čísla (na obrázku
označené jako „ack“) i pole jednobitových bitových příznaků (SYN, ACK, URG,
PSH, FIN, RST). Dva z těchto příznaků v různé kombinaci jsou použity ve fázi
navázání TCP spojení, konkrétně SYN a ACK. Při navázaní TCP spojení je ve
většině případů aktivní jedna strana spojení (typicky klient v modelu klient/server)
a druhá strana pasivní (strana serveru), viz dříve.
Aktivní strana vyšle první TCP segment s nastaveným příznakem SYN, který
indikuje počáteční sekvenční číslo ISN (Initial Sequence Number) v poli „sek“ (v
našem případě se jedná o hodnotu ISNA) pro směr A-B. Tímto sděluje aktivní
strana TCP, že svá data bude číslovat počínaje hodnotou ISNA+1. Pokud tato
zpráva dojde k pasivní straně TCP, tak ta, pokud je spojení akceptovatelné, odešle
aktivní straně odpověď v TCP segmentu v jehož záhlaví nastaví bitový příznaky
20
SYN a ACK a do pole sekvenčního čísla „sek“ dosadí své ISN číslo pro opačný
směr přenosu dat B-A (v našem případě to bude hodnota ISNB). Nastavením
příznaku SYN v TCP záhlaví odpovědi signalizuje aktivní straně, že v tomto
segmentu se nachází platné počáteční číslo pro obráceny směr přenosu. Příznak
ACK signalizuje potvrzení přijetí zprávy od A ve směru od pasivní (server) strany
TCP spojení k aktivní straně (klient). Pokud aktivní strana tuto odpověď přijme,
má potvrzeno, že je spojení obousměrně funkční a také, že protější strana
akceptovala její, tedy klientské počáteční sekvenční číslo. Stále ale chybí toto
potvrzení straně pasivní. Z tohoto důvodu má aktivní strana TCP ještě za
povinnost poslat v rámci procesu navázání spojení poslední, v pořadí třetí, zprávu,
která potvrdí, že i aktivní strana akceptovala počáteční sekvenční číslo strany
opačné (server). Výměnou výše uvedených tří řídicích segmentů je provedeno
navázání TCP spojení, které tak přechází do další fáze přenosu dat, viz dále.
21
3.4 Fáze přenosu dat
Po navázání spojení přejde TCP protokol do fáze přenosu dat. V této fázi probíhá
oboustranná komunikace mezi oběma TCP stranami. Vysílací strana TCP dělí
data předaná od aplikace do bloků zvaných TCP segmenty, které označí
sekvenčním číslem. Nečíslují se ale segmenty jako takové, ale bajty v rámci bloku
dat předaného aplikací. První bajt datového bloku aplikace má sekvenční ISN+1.
Jestliže TCP protokol dělí data do segmentů délky např. 100 bajtů, bude mít N-tý
segment sekvenční číslo ISN+(N-1)*100+1. Zároveň v procesu přenosu dat
dochází k průběžnému potvrzování přijatých segmentů.
Přijímací strana může regulovat rychlost vysílání TCP segmentů do sítě
prostřednictvím okna. Význam použití okna bude probrán v následující kapitole.
Zároveň se musí ve fázi přenosu dat přizpůsobovat TCP vysílací strana
podmínkám zatížení datové cesty a regulovat tak rychlost přenosu. Rychlost
vysílání segmentů je tedy řízena dvěma okny, přičemž podstatné je vždy to z nich,
které je menší. První okno (WS) slouží pro řízení toku jen mezi TCP vysílačem
a přijímačem a druhé (cwdn) pro řízení přetížení v síti. TCP vysílač bere v úvahu
to okno, které splňuje co do velikosti následující podmínku:
aktuální_okno = min (WS, cwnd)
22
3.5 Princip přenosu pomocí okna
TCP protokol je navržen tak, aby v plné míře využil kapacitu komunikačního
kanálu, kterým se TCP segmenty přenáší. Pro vysokorychlostní kanály s velkým
zpožděním přenosu dat mezi vysílačem a přijímačem by nebyl jednoduchý systém
vyslání segmentu a čekání na jeho potvrzení před odesláním dalšího vůbec
efektivní. Efektivita využití kanálu by byla velice nízká. Proto se u TCP používá
princip vysílacího okna, pro další výklad budeme pro jeho velikost používat
proměnnou „WS“.
TCP segmenty dat se vysílají bez toho, aniž by bylo nutné nejprve přijmout
potvrzení o přijatých segmentech předchozích. Toto se ovšem děje pouze a jen do
vyčerpání maximální velikosti vysílacího okna. Abychom toto uvedli na
konkrétním případě, předpokládejme, že byla stanovena velikost vysílacího okna
„win“ pro právě probíhající TCP spojení na 10 000. V tomto případě může
vysílací TCP strana vyslat okamžitě 10 000 bajtů aplikačního bloku dat ve formě
několika za sebou jdoucích TCP segmentů, aniž by musela čekat na jejich
individuální potvrzení stranou přijímací. Po odvysílání všech 10 000 bajtů musí
ale vysílací strana bezpodmínečně zastavit vysílání, a to i v případě, že jsou stále
ještě data, která je nutné odvysílat. TCP umožňuje měnit velikost okna v průběhu
spojení, čímž lze ovlivnit rychlost přenosu dat.
Princip metody klouzavého okna u TCP
23
3.6 Použití okna pro regulaci přenosu dat –
řízení toku
Změnu okna řídí TCP přijímací strana, která může okno jak otevřít, tj. zvětšit, tak
i uzavřít, tj. zmenšit. Zvětšením okna se zrychluje průměrná rychlost přenosu dat
TCP spojením (maximální rychlost je stále omezena maximální rychlostí přenosu
IP paketů sítí) a naopak uzavřením okna se tato rychlost zmenšuje. Okno lze
dokonce nastavit na hodnotu nula, čímž se zakazuje vysílači přenášet data. Princip
klouzavého okna je znázorněn na obrázku.
Princip metody klouzavého okna u TCP
Propustnost TCP spojení P je dána aktuální velikostí TCP okna WS (Window
Size) a dvoucestným zpožděním RTT (Round Trip Time), které je definováno
jako doba potřebná pro odeslání segmentu a příjmu potvrzení o jeho správném
doručení. Pro výpočet existuje tento jednoduchý vztah:
P=
8 WS
RTT
[bit/s]
kde:
WS – aktuální velikost TCP okna [bajt]
RTT – aktuální dvoucestné zpoždění v [s]
Dynamická změna okna umožňuje i řízení toku (flow control). Pokud dočasně
aplikace nebo TCP protokol není schopen přijímat data, informuje o této
skutečnosti vysílač zmenšením okna nebo jeho úplným uzavřením. V okamžiku,
kdy už je přijímač schopen opět data přijímat, okno se opět otevře. Důležité je se
také zmínit, co se stane, když přijímací strana podle předchozího příkladu potvrdí
vysílací TCP straně správný příjem např. 3 000 bajtů. V tomto okamžiku se okno
automaticky otevře o velikost právě potvrzených dat a lze opět vyslat dalších
3 000 bajtů bez potvrzení. Kdybychom si toto nakreslili graficky, zjistili bychom,
že se okno pomyslně pohybuje směrem k vyšším sekvenčním číslům v průběhu
TCP spojení. Proto se tomuto principu často říká metoda klouzavého okna
(moving window).
24
3.7 Metoda multiplikativního potvrzování
doručených segmentů
Způsobů jak provádět toto potvrzení je více a obecně všechny spadají do
kategorie, která se nazývá automatické opakované vyslání dat – ARQ (Automatic
Repeat-reQuest). Jednoduše řečeno, přijímací strana TCP vždy informuje vysílací
stranu o příjmu neporušeného segmentu(ů). To se děje tak, že se kromě
sekvenčního čísla přenáší v každém segmentu ještě potvrzovací číslo
(acknowledgment), pro další výklad budeme toto číslo označovat jako „ack“, které
informuje vysílací stranu TCP, že byla na straně přijímače v pořádku přijata data
až do sekvenčního čísla rovnému číslu potvrzovacímu minus jedna, tj. „ack-1“.
Jinými slovy, přijímací strana vysláním např. potvrzovacího čísla „ack“=11 000
očekává, že jí vysílací strana TCP vyšle segment se sekvenčním číslem 11 000
a de facto tímto aktem automaticky potvrzuje bezchybné přijetí všech segmentů
aplikačního bloku dat od jeho samého počátku, daného počátečním sekvenčním
číslem ISN+1 (Initional Sequnce Number), až po sekvenční číslo 10 999. Tomuto
procesu se říká obecně kumulativní potvrzování, viz obrázek
Kumulativní potvrzování
25
3.8 Fáze ukončení spojení
Vzhledem k tomu, že s každým TCP spojením souvisí určité množství rezervové
paměti, je nutné ji uvolnit, pokud sestavené TCP spojení není již potřeba. Pro
ukončení spojení nelze použít dobu nečinnosti, protože TCP spojení může být
teoreticky navázané, aniž by se v daném okamžiku přenášela určitá data.
Teoreticky může být TCP spojení nekonečně dlouhé a přitom se jím mohou
přenášet data jen po velice krátkou dobu, nebo interval. Nemáme tedy jinou
možnost, jak nepotřebné spojení deaktivovat, než přímou indikací ukončení
spojení. Tento princip u TCP musí existovat, protože by časem nerozpojená
a nepotřebná TCP spojení vyčerpala většinu prostředků v koncovém systému
(paměť, ale i CPU). Je to stejné, jako když v programu programátor uvolňuje již
nepotřebné dynamicky alokované prostředky.
Ukončení TCP spojení
Explicitní metoda ukončení TCP spojení je založena na výměně zpráv mezi
oběma TCP stranami, podobně jako se realizuje navázání TCP spojení. Ukončení
spojení je však poněkud složitější. Pokud totiž jedna strana TCP žádá o ukončení
spojení, protože v tomto směru již není zapotřebí data předávat, nemusí stejné
podmínky platit i v opačném směru, kdy protější strana ještě určitá data
potenciálně k přenosu mít může. Z tohoto důvodu je fáze ukončení spojení
dvoustupňová. Nezávisle na sobě se ukončuje spojení nejprve v jednom a potom
i v druhém směru. Pro každý směr jsou k tomu zapotřebí dvě zprávy, tj. celkově
pro úplné ukončení TCP spojení jsou zapotřebí zprávy čtyři (4 way handshake),
viz obrázek. Ukončení spojení v daném směru TCP přenosu se signalizuje protější
straně nastavením příznaku FIN v záhlaví posledního datového segmentu. Protější
strana odpoví na tento segment klasickým potvrzením ACK, čímž se v tomto
směru tok data ukončí. Následuje ukončení spojení ve druhém směru podle
stejných pravidel. Spojení TCP je plně ukončené pokud je ukončené v obou
směrech.
26
4 Metody řízení přetížení sítě u protokolu
TCP
4.1 Smysl řízení přetížení
Důležitou funkcí při přenosu datových segmentů TCP protokolem je schopnost
reagovat na aktuální zatížení v síti. Pokud by TCP spojení nebralo v úvahu
aktuální zatížení sítě, docházelo by k lavinovému přetížení síťové cesty, podél níž
se TCP segmenty přenášejí v IP paketech, což by vedlo k významnému snížení
propustnosti.
Tento stav byl skutečně v počátcích u TCP přenosu zpozorován a bylo proto nutné
do TCP protokolu doplnit funkci vyhýbání se přetížení (viz dále). Po navázání
TCP spojení se začnou datové segmenty do sítě vysílat relativně pomalu, aby se
otestovala aktuální propustnost datové cesty. V okamžiku, kdy se zjistí, že
dochází k zahazování paketů, se zmenší okno přetížení na jednu polovinu
a postupně se začíná opět zvětšovat. Množství přenášených dat v čase vykazuje
pilovitou funkci, jejíž střední hodnota udává průměrnou rychlost přenosu dat.
Chování sítě z hlediska datové propustnosti při zvětšující se intenzitě nabídky
paketů lze vidět na následujícím obrázku
Chování sítě při zátěži
Jak je patrné, při malé nabídce roste propustnost lineárně až do jistého bodu, který
se nazývá „koleno“. V tomto bodě dochází postupně k saturaci propustnosti.
Pokud bude však nabídka nadále růst, dojde k velmi nepříjemné situaci, kdy se
propustnost začne velice strmě snižovat. Toto je dáno primárně tím, že většina
paketů bude zahazována. Zároveň se také výrazně zvýší zpoždění přenosu.
27
Z výše uvedeného chování je zřejmé, že nesmí dojít k situaci, kdy bude vysílač
generovat pakety do sítě rychleji, než odpovídá zhruba oblasti „kolena“ na výše
uvedeném obrázku. Je nutné si uvědomit, že cesta v sítě může být obecně
využívána (je sdílena) velkým počtem relací, které se musí vzájemně o maximální
kapacitu dané cesty vzájemně podělit. Klíčovým požadavkem však je, aby
rozdělení dostupné kapacity proběhlo rovnoměrným způsobem tak, aby se nestalo,
že některé relace budou z hlediska přenosové kapacity upřednostňované před
jinými. V tomto případě bereme všechny pakety ze všech relací se stejnou
prioritou, tj. neuvažujeme QoS. Dalším požadavkem je, aby při řízeném
generování paketů do sítě nedocházelo k nevytížení datového spoje.
28
4.2 Metoda aditivního zvětšení
a multiplikativního zmenšení okna přetížení
Problém s řízením přetížení lze zařadit do třídy problémů, kde je zapotřebí
dynamicky reagovat na aktuální stav zatížení datové cesty v síti zavedením zpětné
vazby, která informuje vysílač, zdali může či nemůže vysílat pakety do sítě.
Obecně vzato lze tuto zpětnou vazbu rozšířit o více informací, jako je např.
aktuální výše zatížení datové cesty vyjádřená číselně. Toto se však v praxi
vzhledem ke složitosti implementace u TCP protokolu zatím nepoužívá.
Přetížení v síti a je jeho regulace
TCP používá dvoustavový systém indikace přetížení, která je ještě kombinovaná
s principem pomalého startu, který bude probrán v jedné z následujících kapitol.
Princip řízeného přetížení je naznačen na výše uvedeném obrázku. Zde je celkem
n koncových zařízení, které generujíc datový tok s odpovídajícími nabídkami.
Pokud dojde k převýšení dostupné kapacity ve sdílené cestě, bude tento stav sítě
indikován prostřednictvím zpětnovazebního dvoustavového signálu y.
Pokud v daném okamžiku t1 je stav signálu y(t1)=0, znamená to, že síť disponuje
volnou přenosovou kapacitou, není tedy přetížena a stanice mohou zvýšit intenzitu
generování paketů. Pokud dojde k přetížení (např. v čase t2), je tento stav
indikován v daném časovém okamžiku hodnotou signálu y(t2)=0. V tomto případě
musí všechny stanice snížit intenzitu nabízených paketů do sítě.
Otázkou však zůstává, podle jakého algoritmu snižovat nebo zvyšovat nabízený
tok do sítě podle aktuálního stavu zpětnovazebního signálu y(t). Nejjednodušším
principem je použití lineárního algoritmu podle následujícího vzorce:
a + b x (t )
xi (t + 1) = { 1 1 i
aD + bD xi (t )
pokud
y(t ) = 0
pokud
y(t ) = 1
,
Koeficienty a a b (pro indexy D a I) jsou nastaveny jako konstanty. U TCP je
konstanta bI=1 a aD=0, což znamená, že se zvyšování toku děje aditivním
29
způsobem, vždy se přičte konstanta aI k předchozí hodnotě toku a snižování se
děje multiplikativním způsobem, vždy se současná hodnota násobí číslem bD,
které je menší než jedna. Jak již bylo řečeno, regulace toku se u TCP děje
prostřednictvím zvětšování nebo zmenšování vysílacího okna. Ve výsledku tedy
TCP používá metodu řízení toku zvanou jako AIMD, tj. aditivní navýšení toku
a multiplikativní snížení toku. Tato metoda zaručuje spravedlivé rozdělené
dostupné kapacity cesty mezi více toků a zároveň i nejlepší vytížení cesty.
30
4.3 Indikace přetížení u TCP přenosu
U TCP protokolu a metody vyhýbání se přetížení zvané jako „New Reno“ se
uplatňují dva způsoby indikace přetížení. První, “tvrdá indikace přetížení” je
signalizována vypršením časovače pro opakované vyslání TCP segmentu.
V tomto případě dochází v datové cestě k hraničnímu zaplnění odbavovacích front
a směrovače musí dané segmenty nemilosrdně zahodit, není prostě na ně ve frontě
volné místo, kam by je bylo možné uložit.
Poněkud méně naléhající situaci indikuje druhý typ signalizace přetížení, “měkká
indikace přetížení”, která je reprezentována vícenásobným požadavkem na
opětovné vyslání stejného segmentu (3 duplikované žádosti o opětovné zaslání
stejného TCP segmentu). Tato indikace znamená, že sice došlo v datové cestě
k zahození zmiňovaného segmentu, avšak další segmenty za ním následující sítí
prošly (jinak by nemohla přijít tato indikace). Znamená to tedy, že datová cesta
sice není ještě zcela přetížena, ale pomalu se k této situaci blížíme.
TCP protokol (přesněji vysílací část TCP) reaguje na obě zmíněné indikace
přetížené odlišně, což si nyní probereme podrobněji. TCP spojení obecně přechází
v průběhu přenosu dat mezi fází pomalého startu a fází vyhýbání se přetížení.
Fáze vyhýbání se přetížení se vesměs řídí algoritmem AIMD, který byl probrán
v předchozí kapitole. Otázkou však je, podle čeho TCP pozná, v jaké fázi se
nachází? K tomuto účelu slouží jednak typ indikátoru přetížení (tvrdý nebo
měkký) a také proměnná “ssthresh”, jejíž velikost se nastavuje dynamicky
v průběhu TCP datového spojení. Pokud je aktuální velikost vysílacího okna
(cwdn) menší nebo rovná hodnotě výše uvedené proměnná, bude se TCP protokol
nacházet ve fázi pomalého startu. Pokud naopak bude velikost okna větší, přejde
do fáze vyhýbání se přetížení.
TCP spojení v procesu regulované zátěže sítě
31
4.4 Fáze pomalého růstu okna
Jak již bylo řečeno dříve, po fázi navázání spojení přejde TCP protokol do fáze
přenosu dat, kdy se v obou směrech předávají datové segmenty označené vždy
patřičným sekvenčním číslem. Otázkou však zůstává, jak rychle má bezprostředně
po navázání spojení začít TCP vysílač vysílat data, když vůbec nezná aktuální
zatížení datové cesty. Pokud by začal vysílat data maximální rychlostí s plně
otevřeným vysílacím oknem určeným protější přijímací stranou TCP v době
navázání spojení, je dosti pravděpodobné, že by mohlo dojít k výraznému
přetížení cesty v síti (oblast “propasti” na jednom z předchozích obrázků). Tento
stav je nutné eliminovat.
TCP protokol toto řeší tak, že začne vysílat data s velice malým počátečním
oknem (1 segment TCP) a pokud nedojde k přetížení, bude se toto okno velice
rychle, téměř exponenciálně, zvětšovat. Této fázi exponenciálního růstu velikosti
vysílacího okna se říká “pomalý start” (slow start), což je poněkud zvláštní,
protože se o pomalý start a růst okna vlastně vůbec nejedná. Tento název však
nevznikl podle charakteru zvětšování okna, jak by se mohlo zdát, ale spíše byl
vztažen k původní metodě, která umožňovala TCP vysílači vysílat segmenty do
sítě plnou rychlostí danou velikostí okna předaného TCP vysílači stranou
přijímací. Metoda, či fáze pomalého startu končí při první indikaci přetížení sítě.
Do fáze pomalého startu (začne se vysílat s oknem nastaveným jen na 1 TCP
segment) se přechází vždy, pokud došlo k vypršení časovače opětovného vysílání
(tvrdá indikace přetížení). Zároveň se ale také modifikuje velikost proměnné
“ssthresh” tak, že se nastaví na polovinu velikosti aktuálního vysílacího okna
(cwnd).
TCP spojení v procesu regulované zátěže sítě
32
4.5 Fáze vyhýbání se přetížení
Pokud dojde v průběhu TCP přenosu k indikaci měkkého přetížení, sníží se sice
hodnota proměnné “ssthresh“ na polovinu, ale aktuální okno se nezmění.
Výsledkem je tedy ponechání TCP vysílače ve fázi vyhýbání se přetížení.
Ve fázi pomalého startu roste velikost vysílacího okna vždy o počet právě
přijatých potvrzených segmentů stranou přijímací, kdežto ve fázi vyhýbání se
přetížení roste vždy jen o jeden TCP segment za dobu trvání RTT (Round Trip
Time). Výsledkem je tak exponenciální nárůst velikosti okna v čase pro pomalý
start, ale jen lineární nárůst ve fázi vyhýbání se přetížení.
Fáze vyhýbání se přetížení u metody Reno ještě prochází procesem, kterému se
říká rychlé zotavení. Při příjmu tří duplikovaných žádostí (3_DUP_ACK)
o zaslání stejného TCP segmentu, se tento segment bezprostředně ihned bez
čekání na vypršení jeho časovače RTO vyšle přijímači a čeká se na kumulativní
potvrzení všech odeslaných segmentů z celého okna před navrácením se do fáze
vyhýbání se přetížení. Pokud toto potvrzení nepřijde do doby uplynutí časovače
RTO, přejde se do fáze pomalého startu.
Střídání fází pomalého startu a vyhýbání se přetížení
33
4.6 Závěrečný test
1. V rácmi architektury sítí TCP/IP jsou jednolitvé koncové body
komunikace jednozančně určené
a) zdrojovou a cílovou IP adresou
b) zdrojová IP adresa/zdrojový port a cílová IP adresa/cílový port
c) zdrojová IP adresa/zdrojový port nebo cílová IP adresa/cílový port
d) zdrojová IP adresa/zdrojový port a cílová IP adresa/cílový port a použitý
transportní protokol
správné řešení: d
2. Programátorský koncept komunikace v síti TCP/IP se u většiny OS
nazývá
a) soket(socket)
b) sorets
c) buket
d) puret
správné řešení: a
3. V socketové TCP/IP komunikace je vždy prvním voláním funkce
a) socket()
b) write()
c) connect()
d) listen()
správné řešení: a
4. Klientský proces se spojí se serverovým procesem prostřednictvím volání
funkce
a) write()
b) listen()
c) connect()
d) accept()
správné řešení: c
34
5. U serverového socketu je po volání funkce socket() nutné zavolat funkci
a) write()
b) listen()
c) bind()
d) accept()
správné řešení: c
6. TCP protokol pracuje s datovými jednotkami, kterým se říká
a) pakety
b) segmenty
c) rámce
d) datagramy
správné řešení: b
7. Lze TCP protokol použít pro spojení bod/vícebod
a) lze, ale s podporou UDP
b) jen pokud je v síti OSPF protokol
c) jen pokud je v síti nakonfigurován IGMP protokol
d) nelze v žádném případě, TCP nemí pro tento typ komunikace navržen
správné řešení: d
8. Aktivní strana TCP v prvním segmentu navázání spojení s pasivní
stranou TCP nastavuje příznak
a) ACK
b) SYN a ACK
c) jen SYN
d) ACK a FIN
správné řešení: c
35
9. Pasivní strana TCP spojení odpovídá na požadavke navázání spojení
nastavením těchto příznaků v odesílaném segmentu odpovědi
a) jen ACK
b) SYN a ACK
c) jen SYN
d) ACK a FIN
správné řešení: b
10. Fáze navázání TCP spojení se sestává z výměny
a) 2 TCP segmentů
b) 4 TCP segmentů
c) 3 TCP segmentů
d) 6 TCP segmentů
správné řešení: c
11. Jak řeší TCP případné nedoručení bloků dat
a) TCP vysílač neustále vysílá s periodou 1ms data do sítě, než dostaně kladné
potvrzení od TCP přijímače, že všechna data byla již v pořádku přijata
b) TCP strana pro každý vyslaný segment nastaví časovač na 1 ms, a pokud po
jeho vypršení nepřijde kladné potvrzení, zašle tento segment znovu
c) TCP strana pro každý vyslaný segment nastaví časovač na průměrnou hodnotu
zpoždění v síti, a pokud po jeho vypršení nepřijde kladné potvrzení, zašle
tento segment znovu
d) TCP strana pro každý vyslaný segment nastaví časovač na dvojnásobnou
aktuální hodnoty zpoždění v síti, a pokud po jeho vypršení nepřijde kladné
potvrzení, zašle tento segment znovu
správné řešení: c
12. Přijímací okno TCP je rovno 30000 bajtům a RTT je 20 ms, jaká je
maximální propustnost spojení v Mbit/s, pokud neuvažujeme dynamiku
sítě a algoritmus vyhýbání se přetížení?
a) 150
b) 12
c) 15
d) 24
správné řešení: b
36
13. TCP používá ve fázi vyhýbání se přetížení metodu
a) AIMD
b) MIMD
c) AIAD
d) MIAD
správné řešení: a
14. Ve fázi vyhýbání se přetížení (congestion avoidance), TCP protokol
zvětšuje okno přetížená (cwd)
a) vždy o jeden bajt za uplynutí aktuální platné hodnoty zprůměrované doby
zpoždění RTO
b) vždy o jeden celý segment za fixní dobu 1 ms
c) vždy o jeden celý segment za uplynutí aktuální platné hodnoty zprůměrované
doby zpoždění RTO
d) vždy o počet bajtů právě potvrzených segmentů
správné řešení: c
15. Ve fázi pomalého startu (slow start) TCP protokol zvětšuje okno
přetížená (cwd)
a) vždy o jeden bajt za uplynutí aktuální platné hodnoty zprůměrované doby
zpoždění RTO
b) vždy o jeden celý segment za fixní dobu 1 ms
c) vždy o jeden celý segment za uplynutí aktuální platné hodnoty zprůměrované
doby zpoždění RTO
d) vždy o počet bajtů právě potvrzených segmentů
správné řešení: d
16. Co je rozhodující pro přechod TCP z režimu „slow start“ do režimu
„congestion avoidance“
a) velikost proměnné ssthresh
b) počet právě nepotrzených segmentů
c) velikost TCP vyrovnávací paměti
d) velikost RTO
správné řešení: a
37
17. Pokud třikrát za sebou dojde k TCP vysílači opakované potvrzení
určitého segmentu (triple duplicate), provede New RENO TCP vysílač
a) zmenší aktuální hodnotu cwd na polovinu a dosadí ji do ssthresh, dále přejde
do fáze „congestion avoidance“
b) zmenší ssthresh==cwnd/2 a přejde do fáze „slow start“
c) zvětší ssthresh==2*cwnd a přejde do fáze „congestion avoidance“
d) nic z uvedeného
správné řešení: a
18. Pokud u TCP vysílače dojde k vypršení časovače (nedojde tedy včas
potvrzení o příjmu), provede New RENO TCP vysílač
a) zmenší aktuální hodnotu cwd na polovinu a dosadí ji do ssthresh, dále přejde
do fáze „congestion avoidance“
b) zmenší ssthresh==cwnd/2 a přejde do fáze „slow start“
c) zvětší ssthresh==2*cwnd a přejde do fáze „congestion avoidance“
d) nic z uvedeného
správné řešení: b
19. První segment datové spojení má sekvenční číslo
a) ISN-1
b) ISN
c) ISN+1
d) ISN+2
správné řešení: c
20. Úplné ukončení spojení TCP se děje prostřednictvím
a) dvou zpráv
b) jedné zprávy
c) čtyř zpráv
d) tří zpráv
správné řešení: c
38

Podobné dokumenty

řízení výrobních procesů - Personalizace výuky prostřednictvím e

řízení výrobních procesů - Personalizace výuky prostřednictvím e je seznámení se základními pojmy oboru řízení orientovaného na výrobní procesy Po prostudování modulu by měl student být schopen orientovat se v oboru, definovat a prakticky vysvětlit základní téze...

Více

Skripta - Databáze nejlepších praktik

Skripta - Databáze nejlepších praktik banku k pokusu vybrat své zlato dříve, než to udělají ostatní, a proto byla daná banka také osvobozena od nutnosti na požádání vydat zlato (bylo tím tedy odvráceno nebezpečí bankrotu). Až do začátk...

Více

Mám RS - RS Kompas

Mám RS - RS Kompas Buďte k sobě laskaví RS je autoimunní i autoagresivní a autodestruktivní onemocnění, a to jak po fyzické, tak i po psychické stránce. Imunitním buňkám (především T lymfocytům) rozkázat neumíme, al...

Více

Prezentace aplikace PowerPoint

Prezentace aplikace PowerPoint - virtuální spoj - vyznačení cesty s přenosem paketů po této cestě - datagramová služba - každý paket přenášen individuální cestou

Více

Informace a Internet

Informace a Internet vhodné komunikační sítě. RAND Corporation přišla s řešením, které bylo v roce 1964 zveřejněno. Je založeno na následujících dvou principech: • síť nebude mít žádnou centrální složku • síť bude od z...

Více

Úvod Motivační příklad komečního využití Postup uživatele

Úvod Motivační příklad komečního využití Postup uživatele bencode je to list dvojic(vnořený list): IP/DNS jméno a UDP naslouchací port. Algoritmem a implementací je Kademila. V DHT jsou uloženy všechny torrenty a jsou indexované pomocí SHA1 hashe info čás...

Více

PKO-vypisky ke zkousce

PKO-vypisky ke zkousce mechanické vlastnosti rozhraní. Na fyzické vrstvě je vytvořen tzv. fyzický okruh. Na fyzický okruh mezi 2 počítače bývají často vkládána další zařízení jako modemy atd. Příklad: Ethernet 10BaseT, R...

Více