Číslování datagramů

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Příklad: Přidán druhý příklad.)
(Opraveno vysvětlení Acknowledgement Number.)
 
Řádka 13: Řádka 13:
 
* Čí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).
 
* Čí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'')
 
* 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í.
+
* Čí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í. Toto číslo se označuje ISN (Initial Sequence Number).
 
* Oktet potvrzuji teprve tehdy, kdy jsem řádně obdržel '''všechny''' předchozí oktety.
 
* Oktet potvrzuji teprve tehdy, kdy jsem řádně obdržel '''všechny''' předchozí oktety.
  
Řádka 20: Řádka 20:
 
; Každý segment TCP má v hlavičce položky
 
; Každý segment TCP má v hlavičce položky
 
* <tt>Sequence Number</tt>... pořadové číslo prvního oktetu tohoto segmentu.
 
* <tt>Sequence Number</tt>... pořadové číslo prvního oktetu tohoto segmentu.
* <tt>Acknowledgement Number</tt>... pořadové číslo posledního správně přijatého oktetu komunikace.
+
* <tt>Acknowledgement Number</tt>... pořadové číslo dalšího oktetu, který očekávám od partnera.
* <tt>Window</tt>... Počet oktetů, které lze odeslat předtím, než budou další data potvrzena
+
** Například pokud pošlu číslo <code>1320</code>, pak tím říkám, že všechny oktety až po oktet <code>1319</code> již mám v&nbsp;pořádku a&nbsp;nyní od partnera požaduji oktet číslo <code>1320</code>.
 +
** Může se stát, že při výpadku datagramu příjemce obdrží všechny oktety až po číslo 2500 a následně ještě segment s&nbsp;oktety 3001-3500. V&nbsp;takovém případě musí příjemce nastavit <code>Acknowledgement Number = 2501</code>. Oktety 3001-3500 tak dostane podruhé. Nicméně kdyby uvedl <code>Acknowledgement Number = 3501</code>, pak by mu odesilatel nikdy neposlal znovu oktety 2501-3000.  
 +
* <tt>Window</tt>... Počet oktetů, které lze odeslat předtím, než budou další data potvrzena.
  
  
 
== Příklady ==
 
== Příklady ==
=== Příklad 1 ===
+
=== Příklad 1 &mdash; <tt>Sequence Number</tt> ===
; <tt>Sequence Number</tt>
+
; Zadání
 
* Předpokládejme délky segmentů:
 
* Předpokládejme délky segmentů:
 
** 1. segment: 856 oktetů,  
 
** 1. segment: 856 oktetů,  
 
** 2. segment: 377 oktetů,
 
** 2. segment: 377 oktetů,
 
** 3. segment: ...
 
** 3. segment: ...
* Náhodné číslo, kterým začneme číslování oktetů, bude 15326.
+
* Náhodné číslo, kterým začneme číslování oktetů, bude ISN&nbsp;=&nbsp;15326.
  
 
* Čísla <tt>Sequence Number</tt> pro jednotlivé oktety budou
 
* Čísla <tt>Sequence Number</tt> pro jednotlivé oktety budou
Řádka 51: Řádka 53:
 
; Pořadí odeslaných datagramů
 
; Pořadí odeslaných datagramů
 
[[File:seq_num-komunikace.png]]
 
[[File:seq_num-komunikace.png]]
 +
  
 
== Úkoly ==
 
== Úkoly ==
Řádka 60: Řádka 63:
 
* Jaké bude pořadí odeslaných čísel Sequence Number a Acknowledgement Number.
 
* Jaké bude pořadí odeslaných čísel Sequence Number a Acknowledgement Number.
 
</div>
 
</div>
 +
 +
 +
== Zdroje ==
 +
* [https://jameshfisher.com/2018/02/24/what-are-tcp-sequence-numbers/ JamesHFisher.com &rarr; What are TCP Sequence Numbers]

Aktuální verze z 31. 5. 2019, 10:58


Obsah

Princip


Realizace v TCP — pravidla


Hlavička TCP

Každý segment TCP má v hlavičce položky


Příklady

Příklad 1 — Sequence Number

Zadání

Seq num.png

Příklad 2

Zadání

Zapište postupně hodnoty Sequence Number a Acknowledgement Number pro jednotlivé odesílané segmenty.

Pořadí odeslaných datagramů

Seq num-komunikace.png


Ú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.


Zdroje

Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje