Temat
Protokoły warstwy transportu
typu host-host: TCP, UDP
Transmission Control
Transmission Control
Connection-Oriented
Application
Protocol (TCP)
Protocol (TCP)
Transport
User Datagram
User Datagram
Connectionless
Protocol (UDP)
Protocol (UDP)
Internet
Data Link
Physical
http://jkrygier.wel.wat.edu.pl
1
J. Krygier
Przeznaczenie i charakterystyka
TCP:
Przeznaczenie:
Umo\liwia niezawodny transfer wiadomości pomiędzy parą węzłów w
sieci
Charakterystyka:
Transfer danych strumieniowych (TCP dzieli je na segmenty i
niezawodnie przekazuje)
Niezawodność (wymagane potwierdzenie)
Sterowanie przepływem (dostosowanie szybkości do mo\liwości
odbioru)
Multipleksowanie (korzystanie z ró\nych portów)
Połączenia logiczne (mo\liwe kilka sesji
o ró\nych
parametrach)
Pełny dupleks
2
J. Krygier
Koncepcja okna w protokole transportowym
Koncepcja okna:
Najprostszy protokół transportowy:
yródło wysyła x pakietów zanim otrzyma
1
Pakiet danych
potwierdzenie
Potwierdzenie
Okno
Pakiet danych
5
Potwierdzenie
Pakiet danych 1 1 1
Pakiety
1 2 3 4 5 6 7 8 9 ..
0 1 2
Host A
Mo\liwe przesłanie
Host B 2
4
3
1 jeszcze jednego
Potwierdzenia po ka\dym pakiecie
pakietu
Odbiornik musi potwierdzić otrzymanie ka\dego
Przykład:
2 pakietu wskazujÄ…c w odpowiedzi na ostatni
Pakiet danych
poprawnie odebrany pakiet
1
2
3
yródło po ka\dym otrzymanym potwierdzeniu
3
4
przesuwa okno
5
Potwierdzenie
BÅ‚Ä…d
1
6
Potwierdzenie dla pakietu 1 przesunięcie okna o jeden pakiet
1
Nadal brakuje pakietu kolejnego (2), potwierdzenie dla 1
1
1
Pakiet 2 w końcu dotarł
2
5 Potwierdzenie wszystkich 5 pakietów przesunięcie okna o 4
3
J. Krygier
Timeout
Okno w TCP
W protokole TCP wykorzystano koncepcję okna z następującymi modyfikacjami:
Numery sekwencyjne nie są przyporządkowane do przesyłanych pakietów
ale do bajtów potwierdzana jest więc ilość danych w bajtach
Rozmiar okna podawany jest w bajtach
Rozmiar okna definiowane jest przez odbiornik podczas nawiÄ…zywania
połączenia i zmienia się dynamicznie w czasie trwania połączenia
Okno (w bajtach)
1 1 1 1 1 1 1 1 1
bajty
1 2 3 4 5 6 7 8 9 ..
0 1 2 3 4 5 6 7 8
A B C D
A bajty, które zostały wysłane i zostały potwierdzone
B bajty, które zostały wysłane, ale jeszcze niepotwierdzone
C bajty, które mogą jeszcze być wysłane
D bajty, które jeszcze nie mogą być przesłane
4
J. Krygier
Powolny start i unikanie przeciÄ…\enia
AWND Advertised window
CWND Congestion Window
ss_threshold próg fazy unikania przecią\enia
5
J. Krygier
Powolny start
Nadawca
Odbiorca
Okno = 1MSS
Okno nadawcze
Dane
zwiększane o
ACK
1*MSS po
Okno = 1+1=2
ka\dym
odbiorze
potwierdzenia
Okno = 2+1=3
Okno = 3+1=4
Efekt
Okno = 4+1=5
Okno = 5+1=6
Okno
Okno = 6+1=7
Okno = 7+1=8
" RFC2581 dopuszcza początkowe okno równe 2 MSS
Okno =16
" RFC2414 zaleca początkowe okno nie większe ni\:
32
4*MSS gdy MSS<=1095B
czas
64
4380B gdy 1095B2*MSS gdy MSS>=2190B
... 6
J. Krygier
Unikanie przecią\eń zwiększanie okna liniowo
Nadawca
Odbiorca
Okno nadawcze
Dane
Okno =2MSS
zwiększane o
1/cwnd po
ACK
ka\dym
Okno = 2+1/2=2.5
Okno = 2.5+1/2=3 odbiorze
potwierdzenia
Okno = 3+1/3=3.3
Efekt
Okno = 3.3+1/3=3.6
Okno = 3.6+1/3=4
Okno
Okno =5
6
7
...
W rzeczywistości: okno zwiększane jest o 1MSS
czas
po odebraniu wszystkich potwierdzeń
segmentów z okna nadawczego
7
J. Krygier
Powolny start wykrycie straty segmentu timeout powrót do
szybkiego startu
Nadawca
Odbiorca
Okno nadawcze
Dane
Okno =2MSS
zwiększane o
1*MSS po
ACK
ka\dym
Okno = 2+1/2=2.5
Okno = 2.5+1/2=3 odbiorze
potwierdzenia
Okno = 3+1/3=3.3
Okno = 3.3+1/3=3.6 Efekt
Okno = 3.6+1/3=4
Okno
timeout
Dane
Okno = 1MSS
ACK
Okno = 1+1=2
czas
Okno = 2+1=3
8
Okno = 3+1=4
J. Krygier
TCP Fast retransmit, fast recovery
Nadawca
Dane
Okno =2MSS
ACK
Okno = 2+1/2=2.5
Okno = 2.5+1/2=3
Okno = 3+1/3=3.3
Okno = 3.3+1/3=3.6
Okno = 3.6+1/3=4
Stacja nadawcza nie 3 zduplikowane
czeka na timeout potwierdzania
Okno = ssthresh+3MSS
Dane
Zmiana ssthersh
timeout
ssthersh = max(FS,
2MSS)
FS ilość danych
pozostajÄ…cych w sieci
po otrzymaniu trzech
zduplikowanych ACK
9
J. Krygier
TCP - zegary
" Zegar retransmisji
" timeout -> wzór
" Zegar milczenia
" zegar uruchomiony po zakończeniu połączenia TCP TCP odrzuca wszystkie
docierajÄ…ce do niego segmenty (standardowo = 30s)
" Zegar uporczywy (persist)
" uruchamiany po otrzymaniu zerowego okna (wstrzymaniu transmisji), po czasie
odmierzonym przez ten zegar wysyłany jest jednobajtowy segment do stacji
docelowej w celu przypomnienia siÄ™
" Zegar keepalive
" uruchamiany przez odbiorcę, odmierza czas, w którym odbiorca spodziewa się
otrzymania kolejnego segmentu; po czasie keepalive odbiorca przesyła puste
segmenty oczekujÄ…c ich potwierdzenia; brak potwierdzenia oznacza zerwanie
połączenia; otrzymanie potwierdzania oznacza brak danych do przesłania przez
stacje zródłową.
10
J. Krygier
Retransmisje - Timeout
Metroda 1
² rekomandowane 2
Metroda 2
11
J. Krygier
Implementacje TCP - Tahoe
1. Slow start
2. Congestion avoidance
3. Fast retransmit
AWND Advertised window
CWND Congestion Window
ss_threshold próg fazy unikania przecią\enia
SR szybka retransmisja (fast retransmision)
12
J. Krygier
Implementacje TCP - Reno
LW1: cwnd = ss_thresh + 3MSS
1. Slow start
ss_thresh = max(FS, (2MSS))
2. Congestion avoidance
3. Fast retransmit
4. Fast recovery
Otrzymanie
potwierdzenia nowego
LW1
segmentu (nie
retransmitowanego)
LW2
retransmisja wszystkich segmentów
poczÄ…wszy od straconego
AWND Advertised window
cwndi = cwndi-1 + MSS
CWND Congestion Window
ss_threshold próg fazy unikania przecią\enia
LW2: cwnd = ss_thresh
SR szybka retransmisja (fast retransmision)
SOP szybkie odtwarzanie połączeń (fast recovery)
13
FS Liczba bajtów wysłanych a nie potwierdzonych (Flight size)
J. Krygier
Implementacje TCP Sack (Selective acknowledgement)
Retransmitowane sÄ… 1. Slow start
tylko zgubione segmenty 2. Congestion avoidance
(SACK) 3. Fast retransmit
4. Fast recovery
Przesłanie wszystkich
zgubionych segmentów
LW1
LW2
AWND Advertised window
CWND Congestion Window
ss_threshold próg fazy unikania przecią\enia
SR szybka retransmisja (fast retransmision)
SOP szybkie odtwarzanie połączeń (fast recovery)
14
FS Liczba bajtów wysłanych a nie potwierdzonych (Flight size)
J. Krygier
Numery portów TCP i UDP
T
F S S
H D
T
E
R
T M N
T N
F
L
I
P T M
T S
T
Warstwa
N
P
P P
P
P
Aplikacji
E
Numery
T
portów
53 520 69
21 23 25 80 161
53 520 69
21 23 25 80 161
Warstwa
UDP
TCP
Transportowa
6 17
6 17
Identyfikator
Warstwa
IP
protokołu
Sieciowa
Uwaga: IstniejÄ… tzw. porty dobrze znane oraz porty tymczasowe
" dobrze znane: od 1 do 1023 (przykład powy\ej)
" tymczasowe: od 1024 (określane zwykle przez klienta, np. w architekturze klient
serwer )
15
J. Krygier
Format nagłówka TCP, UDP
TCP:
Bit 1
Bit 16 Bit 17 Bit 32
Port docelowy (16)
Port zródłowy (16)
20
Bajtów
Numer sekwencji (32)
Numer potwierdzenia (32)
Zarezerwowa
Dł. nagł. w 4B
Flagi (6)
Rozmiar okna (16)
słowach (4)
ne - zera (6)
Suma kontrolna (16) Wskaznik wa\ności (16)
......
Dopełnienie
Opcje (zmienna długość) - opcjonalnie
Dane (zmienna długość: max 64kB)
16
J. Krygier
TCP: Format nagłówka
Kolejny numer pierwszego bajtu segmentu TCP
Numer sekwencji
(Liczba ta wskazuje na kolejne bajty, a nie kolejne pakiety, np. jeśli dwa
(32 bitów)
kolejne pakiety przenoszą po 1460 bajtów strumienia danych nagłówkiem TCP>, to w pierwszym pakiecie numer sekwencji ustawiony
jest np. na x a w drugim na x+1460) Uwaga: Gdy ustawiony jest
bit SYN w polu tym ustawiana jest sekwencja inicjacyjna
Numer potwierdzenia
Numer potwierdzenia
(Zawiera sekwencyjny numer segmentu, którego nadawca spodziewa się
(32 bitów)
odebrać od węzła przeznaczenia jeśli bit ACK jest ustawiony, to numer
ten jest spodziewanym numerem potwierdzenia)
Długość nagłówka w 32 bitowych słowach wskazuje miejsce
Długość nagłówka
(4 bity)
rozpoczęcia danych aplikacji (standardowo 0x05 = 20B)
Flagi URG ACK PSH RST SYN FIN
(6 bitów) (1) (1) (1) (1) (1) (1)
URG
Flaga wskazująca, \e nale\y odczytać pole wskaznika wa\ności (Urgent)
(1)
ACK
Flaga wskazująca, \e nale\y odczytać pole numeru potwierdzenia
(1)
(Acknowledgment)
17
J. Krygier
TCP: Format nagłówka
Flagi URG ACK PSH RST SYN FIN
(6 bitów) (1) (1) (1) (1) (1) (1)
Ustawienie tego bitu oznacza, \e odbiorca musi powiadomić
PSH
(1)
niezwłocznie aplikację o danych, które nadeszły i które mają nadejść
(Push natychmiastowe przepchnięcie danych)
RST
Znacznik resetowania połączenia (np. w przypadku nieosiągalności portu
(1)
zamiast wysyłania wiadomości ICMP: Uwaga: w przypadku UDP trzeba wysłać ICMP)
Znacznik inicjalizacji połączenia i synchronizacji numerów
SYN
(1)
sekwencyjnych
Znacznik oznaczający, \e wysyłający kończy wysyłanie danych
FIN
(1)
kończy połączenie TCP (połączenie zostanie zakończone, gdy obie strony wyślą
znaczniki FIN)
Liczba bajtów, które węzeł nadający mo\e przyjąć bez
Rozmiar okna
(16 bitów)
potwierdzenia od węzła docelowego (określa wielkość buforu
wydzielonego dla danego połączenia TCP) Uwaga: liczba ta dotyczy
danych + nagłówek TCP (nie dotyczy nagłówków IP i łącza danych)
18
J. Krygier
TCP: Format nagłówka
Suma kontrolna
Suma kontrolna obliczana z pól pseudonagłówka IP
(16 bitów)
nagłówka TCP oraz danych (pola sumy kontrolnej w nagłówku TCP
sÄ… wtedy zerowane)
Pseudonagłówek
Adres zródłowy IP
Długość TCP dotyczy długości
(32)
nagłówka TCP + dane (określana
w bajtach) Adres docelowy IP
(32)
Uwaga: Nie jest to wartość
przepisana z \adnego innego pola
Nr prot.
Zera Długość segmentu TCP
transp.
innych nagłówków, lecz obliczona
(4) (8)
(4)
Wskaznik wa\ności Wskaznik ten dodawany jest do numeru sekwencji segmentu TCP i
(16 bitów)
wskazuje na ostatni wa\ny bajt w tym segmencie.
Rozpatrywany jest gdy ustawiona jest flaga URG
Przykład: W Telnecie flaga i wskaznik wa\ności ustawiany jest w
segmencie, gdy u\ytkownik naciśnie klawisz przerwania
19
J. Krygier
TCP: Format nagłówka
Typ Długość Opis
Opcje
(zmienna długość) 0 - End of option list
1 - No-operation
2 4 Maximum Segment Size (MSS)
Typ Długość opcji Dane opcji
3 3 Window Scale
(8 bitów) (8 bitów)
4 2 Sack-Permitted (selective
acknowledgment permited)
5 x Sack (selective acknowledgment)
Przykład:
8 10 Time Stamps
Opcja Maximum Segment Size
Wykorzystywane w czasie
MSS
2 4
ustanawiania połączenie flaga
(8 bitów) (8 bitów) (8 bitów) (8 bitów)
SYN = 1 do negocjacji
maksymalnej długości segmentu
4 oktety
TCP
Opcja Window Scale
Window scale Opcja wykorzystywana do poszerzenia pola
3 3
definicji okna zatem równie\ i samego
(8 bitów) (8 bitów) (8 bitów)
okna
20
J. Krygier
Diagram stanów TCP
CLOSED
Active open/SYN
Passive open Close
Close
LISTEN
SYN/SYN + ACK Send/SYN
SYN/SYN + ACK
SYN_RCVD SYN_SENT
ACK SYN + ACK/ACK
Close/FIN ESTABLISHED
Close/FIN FIN/ACK
FIN_WAIT_1
CLOSE_WAIT
FIN/ACK
ACK Close/FIN
FIN_WAIT_2
CLOSING LAST_ACK
Timeout after two
ACK
ACK
segment lifetimes
FIN/ACK
TIME_WAIT CLOSED
21
J. Krygier
A
C
K
+
F
I
N
/
A
C
K
Diagram stanów TCP nawiązanie połączenia
1
CLOSED
Klient
Active open/SYN
Serwer Passive open Close
Close
2
1
LISTEN
3
SYN/SYN + ACK Send/SYN
SYN/SYN + ACK
SYN_RCVD SYN_SENT
ACK SYN + ACK/ACK
5 4
Close/FIN ESTABLISHED
Close/FIN FIN/ACK
FIN_WAIT_1
CLOSE_WAIT
FIN/ACK
ACK Close/FIN
FIN_WAIT_2
CLOSING LAST_ACK
Timeout after two
ACK
ACK
segment lifetimes
FIN/ACK
TIME_WAIT CLOSED
22
J. Krygier
A
C
K
+
F
I
N
/
A
C
K
Diagram stanów TCP nawiązanie połączenia przez obie strony
1
CLOSED
Klient, serwer
Active open/SYN
Jednoczesne
Passive open Close
nawiÄ…zanie
Close
2
połączenia przez
LISTEN
klienta i serwera
SYN/SYN + ACK 3 Send/SYN
SYN/SYN + ACK
SYN_RCVD SYN_SENT
ACK SYN + ACK/ACK
4
Close/FIN ESTABLISHED
Close/FIN FIN/ACK
FIN_WAIT_1
CLOSE_WAIT
FIN/ACK
ACK Close/FIN
FIN_WAIT_2
CLOSING LAST_ACK
Timeout after two
ACK
ACK
segment lifetimes
FIN/ACK
TIME_WAIT CLOSED
23
J. Krygier
A
C
K
+
F
I
N
/
A
C
K
Diagram stanów TCP zakończenie połączenia
CLOSED
Klient
Active open/SYN
Serwer Passive open Close
Close
LISTEN
SYN/SYN + ACK Send/SYN
SYN/SYN + ACK
SYN_RCVD SYN_SENT
ACK SYN + ACK/ACK
Close/FIN ESTABLISHED
1 2
Close/FIN FIN/ACK
FIN_WAIT_1
CLOSE_WAIT
FIN/ACK
3 ACK Close/FIN 4
FIN_WAIT_2
CLOSING LAST_ACK
Timeout after two
ACK
ACK
6
segment lifetimes
FIN/ACK
5
TIME_WAIT CLOSED
7
24
J. Krygier
A
C
K
+
F
I
N
/
A
C
K
TCP Ustanowienie połączenia Three Way Handshake
Host A Host B
Internet
SYN
SYN, ACK
ACK
25
J. Krygier
-
n
u
m
e
r
p
o
r
t
u
d
o
k
t
ó
r
e
g
o
c
h
c
Ä™
s
i
Ä™
p
r
z
y
Å‚
Ä…
c
z
y
ć
-
p
o
c
z
Ä…
t
k
o
w
y
n
u
m
e
r
s
e
k
w
e
n
c
j
i
(
I
S
N
)
h
o
s
t
a
A
-
m
a
k
s
y
m
a
l
n
y
m
o
\
l
i
w
y
r
o
z
m
i
a
r
s
e
g
m
e
n
t
u
w
y
s
y
Å‚
a
n
e
g
o
z
H
o
s
t
a
A
P
r
z
y
k
Å‚
a
d
:
I
S
N
=
1
0
0
,
S
Y
N
=
1
,
M
S
S
=
1
6
4
0
B
a
t
s
o
h
)
N
S
I
(
i
j
c
n
e
w
k
e
s
r
e
m
u
n
y
w
o
k
t
Ä…
z
c
o
)
p
1
-
+
A
a
t
s
o
h
N
S
I
(
a
c
Ä…
j
a
z
d
r
e
i
B
w
t
t
s
o
o
p
h
a
j
z
c
e
n
z
r
e
p
w
k
o
e
g
s
e
-
n
a
Å‚
y
s
e
z
r
p
u
t
n
e
m
g
e
s
r
a
i
m
z
o
r
y
n
l
a
m
y
s
k
a
0
4
m
6
-
1
=
S
S
M
,
1
=
K
C
A
,
1
=
N
Y
S
,
1
0
1
=
.
w
t
o
p
.
w
k
e
s
,
0
0
3
=
.
B
N
S
I
-
k
o
l
e
j
n
y
n
u
m
e
r
s
e
k
w
e
n
c
j
i
h
o
s
t
a
A
(
I
S
N
A
+
1
)
-
s
e
k
w
e
n
c
j
a
p
o
t
w
i
e
r
d
z
a
j
Ä…
c
a
(
I
S
N
h
o
s
t
a
B
+
1
)
P
r
z
y
k
Å‚
a
d
:
s
e
k
w
=
1
0
1
,
p
o
t
w
=
3
0
1
,
A
C
K
=
1
,
TCP Three Way Handshake handshake 1 - przykład
A B
SYN
IP: 10.2.7.103 IP: 62.44.10.4
Port zródłowy (tymczasowy)
Port docelowy (dobrze znany=80 )
ISN stacji A: 3931661217
Flaga SYN
Rozmiar okna oferowany
MSS
Uwaga: Pole Acknowledgment number = 0x00
26
J. Krygier
TCP Three Way Handshake handshake 2 - przykład
A B
SYN, ACK
IP: 10.2.7.103 IP: 62.44.10.4
Port zródłowy (dobrze znany=80 )
Port docelowy (z SYN)
ISN stacji B
Numer potwierdzenia:
ISN stacji A +1 =3931661217 +1
Flagi SYN i ACK
MSS
Rozmiar okna dla stacji B
27
J. Krygier
TCP Three Way Handshake handshake 3 - przykład
A B
ACK
IP: 10.2.7.103 IP: 62.44.10.4
Numer sekwencji (dokładnie numer
potwierdzenia z SYN, ACK):
ISN stacji A +1 =3931661217 +1
Numer potwierdzenia:
ISN stacji B +1 =3039176547 +1
Uwaga: Teraz połączenie między hostem A i B zostało ustanowione.
Host A wie \e: rozmiar początkowy okna = 65535 bajtów, mo\e spodziewać się MSS = 1460 B,
mo\e transmitować dane z kolejnym numerem sekwencyjnym = 3931661217 +1+1
Podobne dane posiada host B.
28
J. Krygier
Zakończenie połączenia TCP
29
J. Krygier
Przeznaczenie i charakterystyka
UDP:
Przeznaczenie:
Umo\liwia transfer wiadomości pomiędzy parą węzłów w sieci. Pracuje
jak multiplekser/demultiplekser przesyłając dane z/do portów.
Charakterystyka:
Transfer danych strumieniowych (UDP dzieli je na segmenty
podczas nadawania i łączy w węzle docelowym)
Szybkość przesyłania wiadomości
Multipleksowanie (korzystanie z ró\nych portów)
Pełny dupleks
Nie gwarantuje niezawodnej transmisji danych
30
J. Krygier
UDP format nagłówka
UDP:
Bit 0
Bit 15 Bit 16 Bit 31
Port docelowy (16)
Port zródłowy (16)
8
Bajtów
Długość (nagłówek TCP + dane) (16) Suma kontrolna (16)
Dane (zmienna długość)
31
J. Krygier
Wyszukiwarka
Podobne podstrony:
WST?zpieczenstwo sieci IP v2 ppt
WST Organizacja globalnej sieci teleinf ppt
Modyfikacje Win Xp Jak Wykryć, Który Program Korzysta Z Danego Portu Tcp Udp
Lista portów TCP i UDP używanych przez Apple
WST IPv6?resacja ppt
WST icmp arp igmp ppt
UDP vs TCP opis
WST IPv4 ppt
Using LabVIEW with TCP IP and UDP
WST Routing i RIP ppt
WST RoutingBGP ppt
Sieci UDP TCP
WST Kompresja naglowskow v1 ppt
Ster Proc Dyskret 6 [tryb zgodności]
udp c (2)
wst gi
Konspek2t regulator przep
więcej podobnych podstron