Číslování datagramů
Z MiS
				
				
				
				
																
				
				
								
				
| Obsah | 
Princip
- V datagramových sítích může dojít ke ztrátě či změně pořadí odesílaných datagramů.
- Tyto ztráty řeší transportní vrstva.
-  Aby bylo možné vůbec problémy řešit, je třeba:
- Očíslovat odesílané segmenty, abychom vůbec zjistili, že se nějaká data ztratila.
- Odesilatel si musí pamatovat odeslaná data až do okamžiku, kdy mu příjemce potvrdí, že data v pořádku dorazila.
- Příjemce musí odesílat potvrzení o tom, že data dorazila. (I potvrzení se přitom může ztratit.)
 
Realizace v TCP — pravidla
- Číslujeme odesílané oktety (byte), nikoli celé segmenty (pro případ, že by v rámci přenosu došlo k rozdělení segmentu na více datagramů — dnes nepravděpodobné, ale teoreticky to protokol IP v. 4 může udělat).
- Potvrzení jsou součástí segmentů, odesílaných opačným směrem (pokud nějaké opačným směrem jdou). (Piggy-backing)
- Číslování komunikace začíná náhodně zvoleným číslem (nikoli od jedničky), aby se zamezilo pravděpodobnosti záměny čísel při restartu komunikace či novém spojení.
- Oktet potvrzuji teprve tehdy, kdy jsem řádně obdržel všechny předchozí oktety.
Hlavička TCP
- Každý segment TCP má v hlavičce položky
- Sequence Number... pořadové číslo prvního oktetu tohoto segmentu.
- Acknowledgement Number... pořadové číslo posledního správně přijatého oktetu komunikace.
- Window... Počet oktetů, které lze odeslat předtím, než budou další data potvrzena
Příklad
- Sequence Number
-  Předpokládejme délky segmentů:
- 1. segment: 856 oktetů,
- 2. segment: 377 oktetů,
- 3. segment: ...
 
- Náhodné číslo, kterým začneme číslování oktetů, bude 15326.
-  Čísla Sequence Number pro jednotlivé oktety budou
-  1. segment: SeqNum = 15327 = 15326+1... začínáme prvním oktetem komunikace, přičteme zvolené startovní číslo.
-  2. segment: SeqNum = 16183 = 15326+856+1... 856 oktetů jsme již odeslali, nyní odesíláme 857. oktet a další oktety až do délky segmentu,
-  2. segment: SeqNum = 16560 = 15326+856+377+1... 16559 oktetů jsme již odeslali, nyní odesíláme další oktety až do délky segmentu,
 
-  1. segment: 
Úkoly
- Vypište posloupnost čísel segmentů
- Velikost segmentů je 2000 B (předpokládejme, že u všech stejná), parametr Window je 16 KB.
- 4. segment posloupnosti se ztratí.
- 2. potvrzení v řadě se ztratí.
- Jaké bude pořadí odeslaných čísel Sequence Number a Acknowledgement Number.

