www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 1
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 2
Warstwa transportowa� Warstwa 4 modelu OSI
warstwa aplikacji
warstwa sesji
warstwa prezentacji
warstwa transportowa
warstwa sieci
warstwa łącza danych
warstwa fizyczna
� Warstwa 3 modelu TCP/IP
warstwa aplikacji
warstwa sieci
warstwa transportowa
warstwa łącza
API APIAPI
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 3
Warstwa transportowa� Zapewnienie niezawodnego przesyłania
danych /wg ISO/� Transmisja połączeniowa
� nawiązywanie połączenia� uzgadnianie parametrów połączenia� wysyłanie danych wysokopriorytetowych
� Transmisja bezpołączeniowa
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 4
Enkapsulacja
nagłówekramki
nagłówekpakietu
nagłówek w. transportowej
dane ramkidane pakietu
dane w. trans.
nagłówekEthernet
nagłówekIP nagłówek TCP
dane ramkidane pakietu
dane TCP
14 B20 B
20 B
4 B
ogon
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 5
Enkapsulacja� Narzut enkapsulacji może mieć duży wpływ na
wielkość generowanego strumienia danych� Przykładowo dla enkapsulacji Ethernet/IP/TCP oraz
strumienia danych 64 kb/s:
ogon
nagłówek TCPnagłówek IPnagłówek Ethernet
ogon
nagłówek TCPnagłówek IPnagłówek
Ethernet dane (58 B)
dane (1460B)
Rozmiar segmentu TCP
1 B
58 B
1460 B
Narzut nagłówków
5800%
100%
~ 4%
Wymagane pasmo dla sieci
~ 3,8 Mb/s
128 kb/s
~ 66 kb/s
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 6
Porty� Właściwie każdy współczesny komputer jest (może być)
wyposażony w system operacyjny pozwalający na uruchamianie wielu zadań jednocześnie
� Identyfikacja procesów: numery� problemy:
� numery procesów zmieniają się np. przy restarcie,� zmiana numerów punktów docelowych musiałaby być sygnalizowana
innym hostom,� ...
� rozwiązanie: schemat adresacji procesów wewnątrz każdego hosta
Port: abstrakcyjny punkt docelowy identyfikowany za pomocą dodatniej liczby całkowitej
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 7
Porty� Multipleksacja / demultipleksacja segmentów
Port 1 Port 2 Port 3 Port 4
Protokół warstwy 4
Protokół warstwy 3
Proces AProces B
Proces C Proces D
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 8
Porty� Dostęp do portów może być:
� synchroniczny: przetwarzanie jest wstrzymane na czas komunikacji,� asynchroniczny: bez przerywania przetwarzania
� Zazwyczaj dane przychodzące na dany port są buforowane. Dzięki temu:� dane przychodzące na port zanim proces obsługujący może je
przetworzyć nie są tracone,� czas oczekiwania procesu na dane może zostać skrócony.
� UWAGA! Bufory mają ograniczoną długość!
Numery portów dla różnych protokołów warstwy 4 mogą się powtarzać.
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 9
Porty - programowanie� Asocjacja jest to piątka:
(protokół, adres lokalny, proces lokalny, adres obcy, proces obcy)
� Półasocjacja inaczej gniazdo (socket) to trójka:
(protokół, adres lokalny, proces lokalny)
lub(protokół, adres obcy, proces obcy)
� W przypadku protokołów TCP i UDP procesy identyfikowane są przez numery portów określone w nagłówku
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 10
Porty� Zestaw dobrze znanych portów określa
porty, z którymi mogą łączyć się klienci (RFC 1700) np.:� 21 FTP� 23 Telnet� 25 Mail (SMTP)� 80 HTTP
� Porty efemeryczne � krótkotrwałe, określane przez moduł warstwy transportowej klienta na czas połączenia
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 11
Porty� Możliwe jest więcej, niż jedno połączenie na
port... np. trudno sobie wyobrazić, by serwer SMTP zmieniał port dla każdego połączenia
Usługa docelowa może obsługiwać jednocześnie wielu klientów, gdyż dialog między nimi (połączenie) jest
identyfikowany przez końce połączeń (ang. endpoints).
Pozwala to różnym klientom na jednoczesne łączenie się na ten sam port serwera realizującego daną usługę.
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 12
Proc. zd.Adr. zd.Proc. lok.Adr. lok.Protokół
Porty a połączenia
100.100.100.100 (1029)
150.150.150.150 (1920)
200.200.200.200 (80)SERWER
Połączenie 1: (TCP, 200.200.200.200, 80, 100.100.100.100, 1029)
Połączenie 2: (TCP, 200.200.200.200, 80, 150.150.150.150, 1920)
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 13
Interfejs programisty� Interfejsy niskiego poziomu
� gniazda BSD (UNIX, Linux)� Transport Layer Interface � TLI (UNIX, Linux) � winsock (Microsoft)
� Interfejsy wysokiego poziomu� java.net (Sun)� biblioteka MFC (Microsoft)
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 14
Gniazda BSD� socket� bind
� listen� accept� connect� send[to]� recv[from]
� tworzy gniazdo; serw./kli.� wiąże adres i proces z gniazdem;
serw.[/kli.]� tworzy kolejkę zgłoszeń; serw.� oczekuje na zgłoszenie; serw.� ustanawia połączenie; kli.� wysyła dane; serw./kli.� pobiera dane; serw./kli.
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 15
Gniazda BSD� socket� bind
� listen� accept� connect
� tworzy gniazdo; serw./kli.� wiąże adres i proces z gniazdem;
serw.[/kli.]� tworzy kolejkę zgłoszeń; serw.� oczekuje na zgłoszenie; serw.� ustanawia połączenie; kli.
int socket(int family, int type, int protocol)
Rodzina adresów:AF_UNIX � protokoły wewnętrzne UnixaAF_INET � protokoły InternetuAF_NS � protokoły Xeroxa NSAF_IMPLINK � warstwa kanałowa IMP
Rodzaj gniazda:SOCK_STREAM � gniazdo strumienioweSOCK_DGRAM � gniazdo datagramoweSOCK_RAW � gniazdo suroweSOCK_SEQPACKET � gniazdo surowe
Rodzaj protokołu, np. dla AF_INET:IPPROTO_UDP � protokół UDPIPPROTO_TCP � protokół TCPIPPROTO_ICMP � protokół ICMPIPPROTO_RAW � protokół IP
int socket(int family, int type, int protocol)int socket(int family, int type, int protocol)int socket(int family, int type, int protocol)
Deskryptor gniazda sockfd
int socket(int family, int type, int protocol)
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 16
Gniazda BSD� socket� bind
� listen� accept� connect
� tworzy gniazdo; serw./kli.� wiąże adres i proces z gniazdem;
serw.[/kli.]� tworzy kolejkę zgłoszeń; serw.� oczekuje na zgłoszenie; serw.� ustanawia połączenie; kli.
int bind(int sockfd, struct sockaddr *myaddr, int addrlen)
int bind(int sockfd, struct sockaddr *myaddr, int addrlen)
Deskryptor gniazdaOkreśla rozmiar struktury myaddr
int bind(int sockfd, struct sockaddr *myaddr, int addrlen)
Struktura zawierająca adres, właściwy danemu protokołowiZero lub kod błędu
int bind(int sockfd, struct sockaddr *myaddr, int addrlen)
int bind(int sockfd, struct sockaddr *myaddr, int addrlen)
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 17
Gniazda BSD� socket� bind
� listen� accept� connect
� tworzy gniazdo; serw./kli.� wiąże adres i proces z gniazdem;
serw.[/kli.]� tworzy kolejkę zgłoszeń; serw.� oczekuje na zgłoszenie; serw.� ustanawia połączenie; kli.
int listen(int sockfd, int backlog)int listen(int sockfd, int backlog)int listen(int sockfd, int backlog)int listen(int sockfd, int backlog)
Deskryptor gniazdaRozmiar kolejki żądań połączenia � maks. 5Zero lub kod błędu
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 18
Gniazda BSD� socket� bind
� listen� accept� connect
� tworzy gniazdo; serw./kli.� wiąże adres i proces z gniazdem;
serw.[/kli.]� tworzy kolejkę zgłoszeń; serw.� oczekuje na zgłoszenie; serw.� ustanawia połączenie; kli.
int accept(int sockfd, struct sockaddr *peer,int *addrlen)
int accept(int sockfd, struct sockaddr *peer,int *addrlen)
int accept(int sockfd, struct sockaddr *peer,int *addrlen)
Adres klienta, którego żądanie zostało przyjęteDeskryptor gniazda klienta
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 19
Gniazda BSD� socket� bind
� listen� accept� connect
� tworzy gniazdo; serw./kli.� wiąże adres i proces z gniazdem;
serw.[/kli.]� tworzy kolejkę zgłoszeń; serw.� oczekuje na zgłoszenie; serw.� ustanawia połączenie; kli.int connect(int sockfd, struct sockaddr *servaddr,
int addrlen)
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 20
Gniazda BSD� int write(int sockfd, char *buf, int nbytes)
� int send(int sockfd, char *buf, int nbytes, int flags)
� int sendto(int sockfd, char *buf, int nbytes, int flags, struct sockaddr *to, int addrlen)
� int read(int sockfd, char *buf, int nbytes)
� int recv(int sockfd, char *buf, int nbytes, int flags)
� int recvfrom(int sockfd, char *buf, int nbytes, int flags, struct sockaddr *from, int *addrlen)
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 21
Użycie funkcji interfejsu gniazd
serwerpołączeniowy
socket
bind
listen
accept
recv
send
socket
connect
send
recv
ustanowienie połączenia
dane - żądanie
dane - odpowiedź
klientblokuje oczekując
na zgłoszenie
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 22
Użycie funkcji interfejsu gniazd
serwerbezpołączeniowy
socket
bind
recvfrom
sendto
socket
bind
sendto
recvfrom
dane - żądanie
dane - odpowiedź
klient
blokuje aż do otrzymania danych
blokuje aż do otrzymania danych
przetwarza dane
przetwarza dane
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 23
Interfejs wysokopoziomowy
import java.net.*;import java.io.*;
[...]ServerSocket s_s = new ServerSocket(port);
[...]Socket s = s_s.accept();OuptutStream out = s.getOutputStream();InputStream in = s.getInputStream();
[...]
Serwerimport java.net.*;import java.io.*;
[...]Socket s = new Socket(s_ip_addr,s_port);
[...]OuptutStream out = s.getOutputStream();InputStream in = s.getInputStream();
[...]
Klient
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 24
Rodzaje protokołów� Połączeniowy
� nawiązywanie połączenia� transmisja danych� zamykanie połączenia
� Bezpołączeniowy� tylko transmisja...
Większe możliwości(zapewnienie, że dane
dotrą do celu itp.)
Mniejsze narzuty na informacje kontrolne
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 25
Transmission Control Protocol
� Oczekiwanie warstw wyższych (i programistów :-) ):� możliwość przesyłania strumieni danych bez konieczności
wpisywania w każdy program obsługi błędów� na maszynie odbiorcy ma się pojawić dokładnie taki sam ciąg
oktetów, jak wysłany przez nadawcę
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 26
Transmission Control Protocol� Połączeniowy
� nawiązywanie połączenia (zestawienie obwodu wirtualnego)
� złudzenie istnienia obwodu jest realizowane za pomocą mechanizmów kontrolnych TCP
� zamykanie połączenia� każde połączenie ma dokładnie dwa końce� za pomocą połączenia możliwa jest transmisja
w obie strony (full-duplex)� przy okazji do danych da się �dokleić� informacje kontrolne
� połączenia są buforowane w sposób niewidoczny dla aplikacji (powód: narzuty enkapsulacji)
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 27
Transmission Control Protocol� Niezawodny
� potwierdzenia odbioru (ang. positive acknowledgement)� retransmisje� kontrola przepływu danych� suma kontrolna dla nagłówka i danych� porządkowanie kolejności segmentów� usuwanie segmentów zdublowanych
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 28
Transmission Control Protocol� Co specyfikuje protokół TCP?
� format danych,� procedury inicjalizacji i zamknięcia połączeń,� procedury upewnienia się, że dane dotarły,� sposób rozróżniania odbiorców,� sposoby reagowania na błędy
� Czego protokół TCP nie specyfikuje?� interfejsu programisty (API)
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 29
Nagłówek TCP� Nagłówek ma rozmiar 20 bajtów + opcje
numer portu źródła(16)
numer portu przeznaczenia(16)
numer sekwencyjny(32)
numer potwierdzenia(32)
długość (4)
zarezerw. (6)
rozmiar okna(16)
suma kontrolna(16)
wskaźnik ważności(16)
flagi(6)
opcje (?)
dane
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 30
Flagi TCP� SYN synchronizacja numerów sekwencyjnych
(ang. Initial Sequence Number � ISN)� ACK pole potwierdzenia (ang. acknowledgment)
zawiera aktualny numer potwierdzenia� FIN zakończenie (ang. finish) przesyłania danych� RST zresetowanie (ang. reset) połączenia� URG dane pilne (ang. urgent) począwszy od
wskaźnika ważności� PSH przekazanie danych do aplikacji najszybciej
jak to możliwe (ang. push)
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 31
Suma kontrolna
adres źródła(32)
adres przeznaczenia(32)
nieużywane = 0(8)
protokół = 6 (8)
długość segmentu TCP(16)
� Obliczanie sumy kontrolnej dla nagłówka, danych oraz pseudonagłówka
Nagłówek
Dane
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 32
Suma kontrolna� Do czego służy jeszcze jedna suma kontrolna?
� warstwa 2: poprawność ramki, ew. korekta,� warstwa 3: poprawność nagłówka pakietu,� warstwa 4: poprawność pseudonagłówka, nagłówka segmentu
oraz przesyłanych danych
� Pseudonagłówek pozwala na zweryfikowanie, czy ramka dostarczona przez warstwę 3 rzeczywiście jest adresowany do danego odbiorcy
� Uwaga: ten sposób obliczania sumy kontrolnej oznacza, że protokół warstwy 4 korzysta z danych warstwy 3, co nie do końca jest zgodne z modelem OSI
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 33
Opcje� Maksymalny rozmiar segmentu (ang.
Maximum Segment Size MSS)� im większe segmenty tym wydajniejsze
przesyłanie danych� należy unikać fragmentacji pakietów IP� duże segmenty mają niekorzystny wpływ np. na
transmisje danych w czasie rzeczywistym
� Skalowanie okna� Znacznik czasowy � określanie RTT
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 34
Przykład połączenia� Serwer tworzy gniazdo np. (tcp, *, 23)
i oczekuje na połączenie od klienta (pasywne otwarcie)
(tcp, *, 23)
Serwer123.45.67.89
Klient12.34.56.78
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 35
Przykład połączenia� Klient łączy się z serwerem, otwierając
połączenie poleceniem connect(aktywne otwarcie)
connect(123.45.67.89:23)
(tcp, *, 23)
Serwer123.45.67.89
Klient12.34.56.78
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 36
Przykład połączenia� Moduł TCP tworzy gniazdo klienta z
efemerycznym numerem portu np. 1234
(tcp, *, 23)
Serwer123.45.67.89
Klient12.34.56.78
(tcp, 12.34.56.78, 1234)
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 37
Przykład połączenia� Serwer otrzymuje zgłoszenie od klienta� Moduł TCP tworzy unikalną asocjację:
(tcp, 123.45.67.89, 23, 12.34.56.78, 1234)
(tcp, 123.45.67.89, 23)
Serwer123.45.67.89
Klient12.34.56.78
(tcp, 12.34.56.78, 1234)
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 38
Schemat stanów TCPCLOSED
LISTEN
SYN RCVD SYN SENT
ESTABLISHED
FIN WAIT 1
FIN WAIT 2 TIME WAIT
CLOSED
CLOSING CLOSE WAIT
LAST ACKactiv
e cl
ose passive close
typowe przejście klientatypowe przejście serweraprzejście nietypowe
CONNECT SYN»
LISTEN CLOSECLOSE
SEND SYN»
»SYN SYN+ACK»
»RST»SYN SYN+ACK»
»ACK »SYN+ACK ACK»CLOSE FIN»
CLOSE FIN» »FIN ACK»
CLOSE FIN»»ACK »FIN+ACK ACK»
»FIN ACK»
»ACK
timeout
»ACK
»FIN ACK»
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 39
Nawiązanie połączeniaCLOSED
LISTEN
SYN RCVD SYN SENT
ESTABLISHED
CONNECT SYN»
LISTEN CLOSECLOSE
SEND SYN»
»SYN SYN+ACK»
»RST»SYN SYN+ACK»
»ACK »SYN+ACK ACK»
klient serwerCLOSEDCLOSED
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 40
Nawiązanie połączeniaCLOSED
LISTEN
SYN RCVD SYN SENT
ESTABLISHED
CONNECT SYN»
LISTEN CLOSECLOSE
SEND SYN»
»SYN SYN+ACK»
»RST»SYN SYN+ACK»
»ACK »SYN+ACK ACK»
klient serwerCLOSEDCLOSED
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 41
Nawiązanie połączeniaCLOSED
LISTEN
SYN RCVD SYN SENT
ESTABLISHED
CONNECT SYN»
LISTEN CLOSECLOSE
SEND SYN»
»SYN SYN+ACK»
»RST»SYN SYN+ACK»
»ACK »SYN+ACK ACK»
klient serwerCLOSEDCLOSEDLISTEN
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 42
Nawiązanie połączeniaCLOSED
LISTEN
SYN RCVD SYN SENT
ESTABLISHED
CONNECT SYN»
LISTEN CLOSECLOSE
SEND SYN»
»SYN SYN+ACK»
»RST»SYN SYN+ACK»
»ACK »SYN+ACK ACK»
klient serwerCLOSEDCLOSEDLISTEN
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 43
Nawiązanie połączeniaCLOSED
LISTEN
SYN RCVD SYN SENT
ESTABLISHED
CONNECT SYN»
LISTEN CLOSECLOSE
SEND SYN»
»SYN SYN+ACK»
»RST»SYN SYN+ACK»
»ACK »SYN+ACK ACK»
klient serwerCLOSEDCLOSEDLISTENSYN n
SYN SENT
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 44
Nawiązanie połączeniaCLOSED
LISTEN
SYN RCVD SYN SENT
ESTABLISHED
CONNECT SYN»
LISTEN CLOSECLOSE
SEND SYN»
»SYN SYN+ACK»
»RST»SYN SYN+ACK»
»ACK »SYN+ACK ACK»
klient serwerCLOSEDCLOSEDLISTENSYN nSYN SENT
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 45
Nawiązanie połączeniaCLOSED
LISTEN
SYN RCVD SYN SENT
ESTABLISHED
CONNECT SYN»
LISTEN CLOSECLOSE
SEND SYN»
»SYN SYN+ACK»
»RST»SYN SYN+ACK»
»ACK »SYN+ACK ACK»
klient serwerCLOSEDCLOSEDLISTEN
SYN nSYN SENT
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 46
Nawiązanie połączeniaCLOSED
LISTEN
SYN RCVD SYN SENT
ESTABLISHED
CONNECT SYN»
LISTEN CLOSECLOSE
SEND SYN»
»SYN SYN+ACK»
»RST»SYN SYN+ACK»
»ACK »SYN+ACK ACK»
klient serwerCLOSEDCLOSEDLISTEN
SYN nSYN SENT
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 47
Nawiązanie połączeniaCLOSED
LISTEN
SYN RCVD SYN SENT
ESTABLISHED
CONNECT SYN»
LISTEN CLOSECLOSE
SEND SYN»
»SYN SYN+ACK»
»RST»SYN SYN+ACK»
»ACK »SYN+ACK ACK»
klient serwerCLOSEDCLOSEDLISTEN
SYN nSYN SENT
SYN RCVDSYN m + ACK
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 48
Nawiązanie połączeniaCLOSED
LISTEN
SYN RCVD SYN SENT
ESTABLISHED
CONNECT SYN»
LISTEN CLOSECLOSE
SEND SYN»
»SYN SYN+ACK»
»RST»SYN SYN+ACK»
»ACK »SYN+ACK ACK»
klient serwerCLOSEDCLOSEDLISTEN
SYN nSYN SENT
LISTENSYN m + ACK
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 49
Nawiązanie połączeniaCLOSED
LISTEN
SYN RCVD SYN SENT
ESTABLISHED
CONNECT SYN»
LISTEN CLOSECLOSE
SEND SYN»
»SYN SYN+ACK»
»RST»SYN SYN+ACK»
»ACK »SYN+ACK ACK»
klient serwerCLOSEDCLOSEDLISTEN
SYN nSYN SENT
LISTENSYN m + ACK
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 50
Nawiązanie połączeniaCLOSED
LISTEN
SYN RCVD SYN SENT
ESTABLISHED
CONNECT SYN»
LISTEN CLOSECLOSE
SEND SYN»
»SYN SYN+ACK»
»RST»SYN SYN+ACK»
»ACK »SYN+ACK ACK»
klient serwerCLOSEDCLOSEDLISTEN
SYN nSYN SENT
LISTENSYN m + ACK
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 51
Nawiązanie połączeniaCLOSED
LISTEN
SYN RCVD SYN SENT
ESTABLISHED
CONNECT SYN»
LISTEN CLOSECLOSE
SEND SYN»
»SYN SYN+ACK»
»RST»SYN SYN+ACK»
»ACK »SYN+ACK ACK»
klient serwerCLOSEDCLOSEDLISTEN
SYN nSYN SENT
LISTENSYN m + ACK
ESTABLISHED ACK
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 52
Nawiązanie połączeniaCLOSED
LISTEN
SYN RCVD SYN SENT
ESTABLISHED
CONNECT SYN»
LISTEN CLOSECLOSE
SEND SYN»
»SYN SYN+ACK»
»RST»SYN SYN+ACK»
»ACK »SYN+ACK ACK»
klient serwerCLOSEDCLOSEDLISTEN
SYN nSYN SENT
LISTENSYN m + ACK
ESTABLISHED ACK
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 53
Nawiązanie połączeniaCLOSED
LISTEN
SYN RCVD SYN SENT
ESTABLISHED
CONNECT SYN»
LISTEN CLOSECLOSE
SEND SYN»
»SYN SYN+ACK»
»RST»SYN SYN+ACK»
»ACK »SYN+ACK ACK»
klient serwerCLOSEDCLOSEDLISTEN
SYN nSYN SENT
LISTENSYN m + ACK
ESTABLISHED ACK
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 54
Nawiązanie połączeniaCLOSED
LISTEN
SYN RCVD SYN SENT
ESTABLISHED
CONNECT SYN»
LISTEN CLOSECLOSE
SEND SYN»
»SYN SYN+ACK»
»RST»SYN SYN+ACK»
»ACK »SYN+ACK ACK»
klient serwerCLOSEDCLOSEDLISTEN
SYN nSYN SENT
LISTENSYN m + ACK
ESTABLISHED ACK
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 55
Nawiązanie połączeniaCLOSED
LISTEN
SYN RCVD SYN SENT
ESTABLISHED
CONNECT SYN»
LISTEN CLOSECLOSE
SEND SYN»
»SYN SYN+ACK»
»RST»SYN SYN+ACK»
»ACK »SYN+ACK ACK»
klient serwerCLOSEDCLOSEDLISTEN
SYN nSYN SENT
LISTENSYN m + ACK
ESTABLISHED ACK
ESTABLISHED
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 56
Zamknięcie połączeniaESTABLISHED
FIN WAIT 1
FIN WAIT 2 TIME WAIT
CLOSED
CLOSING CLOSE WAIT
LAST ACKactiv
e cl
ose passive close
CLOSE FIN» »FIN ACK»
CLOSE FIN»»ACK »FIN+ACK ACK»
»FIN ACK»
»ACK
timeout
»ACK
»FIN ACK»
klient serwerESTABLISHEDESTABLISHED
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 57
Zamknięcie połączeniaESTABLISHED
FIN WAIT 1
FIN WAIT 2 TIME WAIT
CLOSED
CLOSING CLOSE WAIT
LAST ACKactiv
e cl
ose passive close
CLOSE FIN» »FIN ACK»
CLOSE FIN»»ACK »FIN+ACK ACK»
»FIN ACK»
»ACK
timeout
»ACK
»FIN ACK»
klient serwerESTABLISHEDESTABLISHED
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 58
Zamknięcie połączeniaESTABLISHED
FIN WAIT 1
FIN WAIT 2 TIME WAIT
CLOSED
CLOSING CLOSE WAIT
LAST ACKactiv
e cl
ose passive close
CLOSE FIN» »FIN ACK»
CLOSE FIN»»ACK »FIN+ACK ACK»
»FIN ACK»
»ACK
timeout
»ACK
»FIN ACK»
klient serwerESTABLISHEDESTABLISHED FIN
FIN WAIT 1
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 59
Zamknięcie połączeniaESTABLISHED
FIN WAIT 1
FIN WAIT 2 TIME WAIT
CLOSED
CLOSING CLOSE WAIT
LAST ACKactiv
e cl
ose passive close
CLOSE FIN» »FIN ACK»
CLOSE FIN»»ACK »FIN+ACK ACK»
»FIN ACK»
»ACK
timeout
»ACK
»FIN ACK»
klient serwerESTABLISHEDESTABLISHED FINFIN WAIT 1
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 60
Zamknięcie połączeniaESTABLISHED
FIN WAIT 1
FIN WAIT 2 TIME WAIT
CLOSED
CLOSING CLOSE WAIT
LAST ACKactiv
e cl
ose passive close
CLOSE FIN» »FIN ACK»
CLOSE FIN»»ACK »FIN+ACK ACK»
»FIN ACK»
»ACK
timeout
»ACK
»FIN ACK»
klient serwerESTABLISHEDESTABLISHED FINFIN WAIT 1CLOSE WAITACK
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 61
Zamknięcie połączeniaESTABLISHED
FIN WAIT 1
FIN WAIT 2 TIME WAIT
CLOSED
CLOSING CLOSE WAIT
LAST ACKactiv
e cl
ose passive close
CLOSE FIN» »FIN ACK»
CLOSE FIN»»ACK »FIN+ACK ACK»
»FIN ACK»
»ACK
timeout
»ACK
»FIN ACK»
klient serwerESTABLISHEDESTABLISHED FINFIN WAIT 1CLOSE WAITACK
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 62
Zamknięcie połączeniaESTABLISHED
FIN WAIT 1
FIN WAIT 2 TIME WAIT
CLOSED
CLOSING CLOSE WAIT
LAST ACKactiv
e cl
ose passive close
CLOSE FIN» »FIN ACK»
CLOSE FIN»»ACK »FIN+ACK ACK»
»FIN ACK»
»ACK
timeout
»ACK
»FIN ACK»
klient serwerESTABLISHEDESTABLISHED FINFIN WAIT 1CLOSE WAITACK
FIN WAIT 2
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 63
Zamknięcie połączeniaESTABLISHED
FIN WAIT 1
FIN WAIT 2 TIME WAIT
CLOSED
CLOSING CLOSE WAIT
LAST ACKactiv
e cl
ose passive close
CLOSE FIN» »FIN ACK»
CLOSE FIN»»ACK »FIN+ACK ACK»
»FIN ACK»
»ACK
timeout
»ACK
»FIN ACK»
klient serwerESTABLISHEDESTABLISHED FINFIN WAIT 1CLOSE WAITACK
FIN WAIT 2
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 64
Zamknięcie połączeniaESTABLISHED
FIN WAIT 1
FIN WAIT 2 TIME WAIT
CLOSED
CLOSING CLOSE WAIT
LAST ACKactiv
e cl
ose passive close
CLOSE FIN» »FIN ACK»
CLOSE FIN»»ACK »FIN+ACK ACK»
»FIN ACK»
»ACK
timeout
»ACK
»FIN ACK»
klient serwerESTABLISHEDESTABLISHED FINFIN WAIT 1CLOSE WAITACK
FIN WAIT 2
LAST ACKFIN
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 65
Zamknięcie połączeniaESTABLISHED
FIN WAIT 1
FIN WAIT 2 TIME WAIT
CLOSED
CLOSING CLOSE WAIT
LAST ACKactiv
e cl
ose passive close
CLOSE FIN» »FIN ACK»
CLOSE FIN»»ACK »FIN+ACK ACK»
»FIN ACK»
»ACK
timeout
»ACK
»FIN ACK»
klient serwerESTABLISHEDESTABLISHED FINFIN WAIT 1CLOSE WAITACK
FIN WAIT 2
LAST ACKFIN
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 66
Zamknięcie połączeniaESTABLISHED
FIN WAIT 1
FIN WAIT 2 TIME WAIT
CLOSED
CLOSING CLOSE WAIT
LAST ACKactiv
e cl
ose passive close
CLOSE FIN» »FIN ACK»
CLOSE FIN»»ACK »FIN+ACK ACK»
»FIN ACK»
»ACK
timeout
»ACK
»FIN ACK»
klient serwerESTABLISHEDESTABLISHED FINFIN WAIT 1CLOSE WAITACK
FIN WAIT 2
LAST ACKFIN
TIME WAIT ACK
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 67
Zamknięcie połączeniaESTABLISHED
FIN WAIT 1
FIN WAIT 2 TIME WAIT
CLOSED
CLOSING CLOSE WAIT
LAST ACKactiv
e cl
ose passive close
CLOSE FIN» »FIN ACK»
CLOSE FIN»»ACK »FIN+ACK ACK»
»FIN ACK»
»ACK
timeout
»ACK
»FIN ACK»
klient serwerESTABLISHEDESTABLISHED FINFIN WAIT 1CLOSE WAITACK
FIN WAIT 2
LAST ACKFIN
TIME WAIT ACK
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 68
Zamknięcie połączeniaESTABLISHED
FIN WAIT 1
FIN WAIT 2 TIME WAIT
CLOSED
CLOSING CLOSE WAIT
LAST ACKactiv
e cl
ose passive close
CLOSE FIN» »FIN ACK»
CLOSE FIN»»ACK »FIN+ACK ACK»
»FIN ACK»
»ACK
timeout
»ACK
»FIN ACK»
klient serwerESTABLISHEDESTABLISHED FINFIN WAIT 1CLOSE WAITACK
FIN WAIT 2
LAST ACKFIN
TIME WAIT ACK
CLOSED
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 69
Zamknięcie połączeniaESTABLISHED
FIN WAIT 1
FIN WAIT 2 TIME WAIT
CLOSED
CLOSING CLOSE WAIT
LAST ACKactiv
e cl
ose passive close
CLOSE FIN» »FIN ACK»
CLOSE FIN»»ACK »FIN+ACK ACK»
»FIN ACK»
»ACK
timeout
»ACK
»FIN ACK»
klient serwerESTABLISHEDESTABLISHED FINFIN WAIT 1CLOSE WAITACK
FIN WAIT 2
LAST ACKFIN
TIME WAIT ACK
CLOSED
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 70
Zamknięcie połączeniaESTABLISHED
FIN WAIT 1
FIN WAIT 2 TIME WAIT
CLOSED
CLOSING CLOSE WAIT
LAST ACKactiv
e cl
ose passive close
CLOSE FIN» »FIN ACK»
CLOSE FIN»»ACK »FIN+ACK ACK»
»FIN ACK»
»ACK
timeout
»ACK
»FIN ACK»
klient serwerESTABLISHEDESTABLISHED FINFIN WAIT 1CLOSE WAITACK
FIN WAIT 2
LAST ACKFIN
TIME WAIT ACK
CLOSEDCLOSED
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 71
Jednoczesne otwarcie
CLOSED
LISTEN
SYN RCVD SYN SENT
ESTABLISHED
CONNECT SYN»
LISTEN CLOSECLOSE
SEND SYN»
»SYN SYN+ACK»
»RST»SYN SYN+ACK»
»ACK »SYN+ACK ACK»
LISTEN
klient serwerLISTEN
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 72
Jednoczesne otwarcie
CLOSED
LISTEN
SYN RCVD SYN SENT
ESTABLISHED
CONNECT SYN»
LISTEN CLOSECLOSE
SEND SYN»
»SYN SYN+ACK»
»RST»SYN SYN+ACK»
»ACK »SYN+ACK ACK»
CONNECT SYN»
klient serwerLISTENSYN n
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 73
Jednoczesne otwarcie
CLOSED
LISTEN
SYN RCVD SYN SENT
ESTABLISHED
CONNECT SYN»
LISTEN CLOSECLOSE
SEND SYN»
»SYN SYN+ACK»
»RST»SYN SYN+ACK»
»ACK »SYN+ACK ACK»
SEND SYN»
klient serwerLISTENSYN n SYN m
SYN SENT
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 74
Jednoczesne otwarcie
CLOSED
LISTEN
SYN RCVD SYN SENT
ESTABLISHED
CONNECT SYN»
LISTEN CLOSECLOSE
SEND SYN»
»SYN SYN+ACK»
»RST»SYN SYN+ACK»
»ACK »SYN+ACK ACK»
klient serwerLISTENSYN n SYN mSYN SENT SYN SENT
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 75
Jednoczesne otwarcie
CLOSED
LISTEN
SYN RCVD SYN SENT
ESTABLISHED
CONNECT SYN»
LISTEN CLOSECLOSE
SEND SYN»
»SYN SYN+ACK»
»RST»SYN SYN+ACK»
»ACK »SYN+ACK ACK»
klient serwerLISTENSYN nSYN SENT SYN SENTSYN m
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 76
Jednoczesne otwarcie
CLOSED
LISTEN
SYN RCVD SYN SENT
ESTABLISHED
CONNECT SYN»
LISTEN CLOSECLOSE
SEND SYN»
»SYN SYN+ACK»
»RST»SYN SYN+ACK»
»ACK »SYN+ACK ACK»
»SYN SYN+ACK»
klient serwerLISTENSYN n
SYN mSYN SENT SYN SENT
SYN m, ACK n+1
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 77
Jednoczesne otwarcie
CLOSED
LISTEN
SYN RCVD SYN SENT
ESTABLISHED
CONNECT SYN»
LISTEN CLOSECLOSE
SEND SYN»
»SYN SYN+ACK»
»RST»SYN SYN+ACK»
»ACK »SYN+ACK ACK»
»SYN SYN+ACK»
klient serwerLISTENSYN n
SYN mSYN SENT SYN SENT
SYN RCVDSYN m, ACK n+1
SYN n, ACK m+1
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 78
Jednoczesne otwarcie
CLOSED
LISTEN
SYN RCVD SYN SENT
ESTABLISHED
CONNECT SYN»
LISTEN CLOSECLOSE
SEND SYN»
»SYN SYN+ACK»
»RST»SYN SYN+ACK»
»ACK »SYN+ACK ACK»
klient serwerLISTENSYN n
SYN mSYN SENT SYN SENT
SYN RCVD
SYN RCVD
SYN m, ACK n+1
SYN n, ACK m+1
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 79
Jednoczesne otwarcie
CLOSED
LISTEN
SYN RCVD SYN SENT
ESTABLISHED
CONNECT SYN»
LISTEN CLOSECLOSE
SEND SYN»
»SYN SYN+ACK»
»RST»SYN SYN+ACK»
»ACK »SYN+ACK ACK»
klient serwerLISTENSYN n
SYN mSYN SENT SYN SENT
SYN RCVD
SYN m, ACK n+1
SYN n, ACK m+1
SYN RCVD
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 80
Jednoczesne otwarcie
CLOSED
LISTEN
SYN RCVD SYN SENT
ESTABLISHED
CONNECT SYN»
LISTEN CLOSECLOSE
SEND SYN»
»SYN SYN+ACK»
»RST»SYN SYN+ACK»
»ACK »SYN+ACK ACK»»ACK
klient serwerLISTENSYN n
SYN mSYN SENT SYN SENT
SYN RCVD
SYN m, ACK n+1
SYN n, ACK m+1
SYN RCVD
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 81
Jednoczesne otwarcie
CLOSED
LISTEN
SYN RCVD SYN SENT
ESTABLISHED
CONNECT SYN»
LISTEN CLOSECLOSE
SEND SYN»
»SYN SYN+ACK»
»RST»SYN SYN+ACK»
»ACK »SYN+ACK ACK»»ACK
klient serwerLISTENSYN n
SYN mSYN SENT SYN SENT
SYN RCVD
SYN m, ACK n+1
SYN n, ACK m+1
ESTABLISHED
SYN RCVD
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 82
Jednoczesne otwarcie
CLOSED
LISTEN
SYN RCVD SYN SENT
ESTABLISHED
CONNECT SYN»
LISTEN CLOSECLOSE
SEND SYN»
»SYN SYN+ACK»
»RST»SYN SYN+ACK»
»ACK »SYN+ACK ACK»
klient serwerLISTENSYN n
SYN mSYN SENT SYN SENT
SYN RCVD
SYN m, ACK n+1
SYN n, ACK m+1
ESTABLISHED ESTABLISHED
SYN RCVD
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 83
Jednoczesne zamknięcieESTABLISHED
FIN WAIT 1
FIN WAIT 2 TIME WAIT
CLOSED
CLOSING
activ
e cl
ose
CLOSE FIN»
»ACK »FIN+ACK ACK»
»FIN ACK»
»ACK
timeout
»FIN ACK»
host A host BESTABLISHED ESTABLISHED
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 84
Jednoczesne zamknięcieESTABLISHED
FIN WAIT 1
FIN WAIT 2 TIME WAIT
CLOSED
CLOSING
activ
e cl
ose
CLOSE FIN»
»ACK »FIN+ACK ACK»
»FIN ACK»
»ACK
timeout
»FIN ACK»
host A host BESTABLISHED ESTABLISHEDFIN n
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 85
Jednoczesne zamknięcieESTABLISHED
FIN WAIT 1
FIN WAIT 2 TIME WAIT
CLOSED
CLOSING
activ
e cl
ose
CLOSE FIN»
»ACK »FIN+ACK ACK»
»FIN ACK»
»ACK
timeout
»FIN ACK»
host A host BESTABLISHED ESTABLISHEDFIN nFIN m
FIN WAIT 1
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 86
Jednoczesne zamknięcieESTABLISHED
FIN WAIT 1
FIN WAIT 2 TIME WAIT
CLOSED
CLOSING
activ
e cl
ose
CLOSE FIN»
»ACK »FIN+ACK ACK»
»FIN ACK»
»ACK
timeout
»FIN ACK»
host A host BESTABLISHED ESTABLISHEDFIN nFIN m FIN WAIT 1FIN WAIT 1
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 87
Jednoczesne zamknięcieESTABLISHED
FIN WAIT 1
FIN WAIT 2 TIME WAIT
CLOSED
CLOSING
activ
e cl
ose
CLOSE FIN»
»ACK »FIN+ACK ACK»
»FIN ACK»
»ACK
timeout
»FIN ACK»
host A host BESTABLISHED ESTABLISHEDFIN nFIN m FIN WAIT 1FIN WAIT 1
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 88
Jednoczesne zamknięcieESTABLISHED
FIN WAIT 1
FIN WAIT 2 TIME WAIT
CLOSED
CLOSING
activ
e cl
ose
CLOSE FIN»
»ACK »FIN+ACK ACK»
»FIN ACK»
»ACK
timeout
»FIN ACK»
host A host BESTABLISHED ESTABLISHEDFIN n FIN WAIT 1FIN WAIT 1
ACK n+1
FIN m
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 89
Jednoczesne zamknięcieESTABLISHED
FIN WAIT 1
FIN WAIT 2 TIME WAIT
CLOSED
CLOSING
activ
e cl
ose
CLOSE FIN»
»ACK »FIN+ACK ACK»
»FIN ACK»
»ACK
timeout
»FIN ACK»
host A host BESTABLISHED ESTABLISHEDFIN n FIN WAIT 1FIN WAIT 1
ACK n+1
FIN m
CLOSING ACK m+1
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 90
Jednoczesne zamknięcieESTABLISHED
FIN WAIT 1
FIN WAIT 2 TIME WAIT
CLOSED
CLOSING
activ
e cl
ose
CLOSE FIN»
»ACK »FIN+ACK ACK»
»FIN ACK»
»ACK
timeout
»FIN ACK»
host A host BESTABLISHED ESTABLISHEDFIN n FIN WAIT 1FIN WAIT 1
ACK n+1
FIN m
CLOSING ACK m+1 CLOSING
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 91
Jednoczesne zamknięcieESTABLISHED
FIN WAIT 1
FIN WAIT 2 TIME WAIT
CLOSED
CLOSING
activ
e cl
ose
CLOSE FIN»
»ACK »FIN+ACK ACK»
»FIN ACK»
»ACK
timeout
»FIN ACK»
host A host BESTABLISHED ESTABLISHEDFIN n FIN WAIT 1FIN WAIT 1
ACK n+1
FIN m
CLOSING ACK m+1 CLOSING
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 92
Jednoczesne zamknięcieESTABLISHED
FIN WAIT 1
FIN WAIT 2 TIME WAIT
CLOSED
CLOSING
activ
e cl
ose
CLOSE FIN»
»ACK »FIN+ACK ACK»
»FIN ACK»
»ACK
timeout
»FIN ACK»
host A host BESTABLISHED ESTABLISHEDFIN n FIN WAIT 1FIN WAIT 1
ACK n+1
FIN m
CLOSING ACK m+1 CLOSING
TIME WAIT
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 93
Jednoczesne zamknięcieESTABLISHED
FIN WAIT 1
FIN WAIT 2 TIME WAIT
CLOSED
CLOSING
activ
e cl
ose
CLOSE FIN»
»ACK »FIN+ACK ACK»
»FIN ACK»
»ACK
timeout
»FIN ACK»
host A host BESTABLISHED ESTABLISHEDFIN n FIN WAIT 1FIN WAIT 1
ACK n+1
FIN m
CLOSING ACK m+1 CLOSING
TIME WAITTIME WAIT
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 94
Jednoczesne zamknięcieESTABLISHED
FIN WAIT 1
FIN WAIT 2 TIME WAIT
CLOSED
CLOSING
activ
e cl
ose
CLOSE FIN»
»ACK »FIN+ACK ACK»
»FIN ACK»
»ACK
timeout
»FIN ACK»
host A host BESTABLISHED ESTABLISHEDFIN n FIN WAIT 1FIN WAIT 1
ACK n+1
FIN m
CLOSING ACK m+1 CLOSING
TIME WAITTIME WAIT CLOSED
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 95
Jednoczesne zamknięcieESTABLISHED
FIN WAIT 1
FIN WAIT 2 TIME WAIT
CLOSED
CLOSING
activ
e cl
ose
CLOSE FIN»
»ACK »FIN+ACK ACK»
»FIN ACK»
»ACK
timeout
»FIN ACK»
host A host BESTABLISHED ESTABLISHEDFIN n FIN WAIT 1FIN WAIT 1
ACK n+1
FIN m
CLOSING ACK m+1 CLOSING
TIME WAITTIME WAIT CLOSEDCLOSED
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 96
Przesyłanie danych� Przesyłanie danych masowych
� przesuwane okna� powolny start
� Przesyłanie danych interaktywnych� algorytm Nagle�a� opóźnione potwierdzenie
� Eliminacja syndromu głupiego okna
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 97
Przesuwane okno� Zapobiega przeciążeniu odbiorcy
� odbiorca określa ile danych jest w stanie przyjąć� szybki nadawca musi poczekać, aż odbiorca
otworzy dla niego okno
� Zasada działania� ogłoszenie okna� zamykanie (wysyłanie danych)� otwieranie (odbieranie danych)� kurczenie się (zabronione)
Rozmiar okna przesyłany jest w każdym potwierdzeniu i określa stan zapełnienia bufora odbiorcy
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 98
Przesuwane okno
okno 4096
1024 10241024 10241024 10241024 1024
nadawca odbiorcaSYN
SYN + ACK, win 4096
ACK
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 99
Przesuwane okno
1024 10241024 10241024 10241024 1024
nadawca odbiorcaSYN
SYN + ACK, win 4096
ACK 1
1:1024, ACK 1
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 100
Przesuwane okno
1024 10241024 10241024 10241024 1024
nadawca odbiorcaSYN
SYN + ACK, win 4096
ACK 1
1:1024, ACK 1
1025:2048, ACK 1
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 101
Przesuwane okno
1024 10241024 10241024 10241024 1024
nadawca odbiorcaSYN
SYN + ACK, win 4096
ACK 1
1:1024, ACK 1
1025:2048, ACK 1
2049:3072, ACK 1
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 102
Przesuwane okno
okno 4096
1024 10241024 10241024 10241024 1024
nadawca odbiorcaSYN
SYN + ACK, win 4096
ACK 1
1:1024, ACK 1
1025:2048, ACK 1
2049:3072, ACK 1
ACK 2049, win 4096
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 103
Przesuwane okno
1024 10241024 10241024 10241024 1024
okno 3072
nadawca odbiorcaSYN
SYN + ACK, win 4096
ACK 1
1:1024, ACK 1
1025:2048, ACK 1
2049:3072, ACK 1
ACK 2049, win 4096
ACK 3073, win 3072
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 104
Przesuwane okno
1024 10241024 10241024 10241024 1024
nadawca odbiorcaSYN
SYN + ACK, win 4096
ACK 1
1:1024, ACK 1
1025:2048, ACK 1
2049:3072, ACK 1
ACK 2049, win 4096
ACK 3073, win 3072
3073:4096, ACK 1
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 105
Przesuwane okno
1024 10241024 10241024 10241024 1024
okno 4096
nadawca odbiorcaSYN + ACK, win 4096
ACK 1
1:1024, ACK 1
1025:2048, ACK 1
2049:3072, ACK 1
ACK 2049, win 4096
ACK 3073, win 3072
3073:4096, ACK 1
ACK 4097, win 4096
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 106
Przesuwane okno
1024 10241024 10241024 10241024 1024
nadawca odbiorcaACK 1
1:1024, ACK 1
1025:2048, ACK 1
2049:3072, ACK 1
ACK 2049, win 4096
ACK 3073, win 3072
3073:4096, ACK 1
ACK 4097, win 4096
4097:5120, ACK 1
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 107
Przesuwane okno
1024 10241024 10241024 10241024 1024
nadawca odbiorca
1:1024, ACK 1
1025:2048, ACK 1
2049:3072, ACK 1
ACK 2049, win 4096
ACK 3073, win 3072
3073:4096, ACK 1
ACK 4097, win 4096
4097:5120, ACK 1
5121:6144, ACK 1
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 108
Przesuwane okno
1024 10241024 10241024 10241024 1024
nadawca odbiorca
1025:2048, ACK 1
2049:3072, ACK 1
ACK 2049, win 4096
ACK 3073, win 3072
3073:4096, ACK 1
ACK 4097, win 4096
4097:5120, ACK 1
5121:6144, ACK 1
6145:7168, ACK 1
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 109
Przesuwane okno
1024 10241024 10241024 10241024 1024
okno 4096
nadawca odbiorca2049:3072, ACK 1
ACK 2049, win 4096
ACK 3073, win 3072
3073:4096, ACK 1
ACK 4097, win 4096
4097:5120, ACK 1
5121:6144, ACK 1
6145:7168, ACK 1
ACK 6145, win 4096
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 110
Przesuwane okno
1024 10241024 10241024 10241024 1024
nadawca odbiorcaACK 2049, win 4096
ACK 3073, win 3072
3073:4097, ACK 1
ACK 4097, win 4096
4097:5121, ACK 1
5121:6145, ACK 1
6145:7169, ACK 1
ACK 6145, win 4096
7169:8192, ACK 1
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 111
Przesuwane okno
1024 10241024 10241024 10241024 1024
nadawca odbiorcaACK 3073, win 3072
3073:4097, ACK 1
ACK 4097, win 4096
4097:5121, ACK 1
5121:6145, ACK 1
6145:7169, ACK 1
ACK 6145, win 4096
7169:8193, ACK 1
ACK 8193, win 4096
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 112
Przesuwane okno� Problem: okno o rozmiarze 0
� możliwe jest zakleszczenie, gdy zginie ogłoszenie o niezerowym rozmiarze okna
� Rozwiązanie: nadawca co jakiś czas �próbkuje� zerowe okno
� Dane pilne (z ustawioną flagą URG) są wysyłane mimo zerowego rozmiaru okna� tego typu dane są niejako �poza� głównym
strumieniem transmisyjnym
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 113
Max. długość okna aprzepustowość TCP
Całe max okno
16bitów = 64K
Nadawca Odbiorca
64KB
ACK, window 64K
RTT
P= 64KB/(RTT + TT)
Czas
TT
Rozwiązanie: Skalowanie okna = mnożnik 16 bitowy = max okno 2 32
Opcja TCP
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 114
Powolny start� Natychmiastowe zapełnienie całego okna może
prowadzić do powstawania zatorów� Nadawca określa okno przeciążenia cwnd
(ang. congestion window) tj. ilość segmentów, które będzie wysyłał
� Powolny start � kontrola przepływu przez nadawcę� Wielkość okna � kontrola przepływu przez odbiorcę
� Początkowo cwnd = 1� Zwiększanie cwnd o 1 po otrzymaniu ACK
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 115
Powolny start� Przy stwierdzeniu przeciążenia (przekroczenie czasu
oczekiwania na potwierdzenie) cwnd jest zmniejszane dwukrotnie (o ile cwnd > 1 segment)
� przy powtarzających się stratach cwnd maleje wykładniczo
� Następnie znowu każdy potwierdzony segment powoduje zwiększanie cwnd o 1 aż do momentu, gdy cwnd przyjmie wartość równą połowie wartości, przy której wystąpiło przeciążenie. Wtedy cwnd zaczyna rosnąć wolniej (jest zwiększane o 1 tylko wtedy, gdy wszystkie segmenty w oknie zostały potwierdzone).
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 116
Powolny start� Liczba wysyłanych bajtów =
Minimum { Sending window, Congestion window }
� Powolny start jest uaktywniany po każdym Timeout
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 117
Powolny start
4
8
16
32
2 4 6 8 10 Numer pakietu
Timeout
Próg 1
Próg 2 =1/2 L
L
½ L
Congestionwindow
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 118
Dla efektywności protokołu TCP kluczowe znaczenie ma możliwość wysyłania dużych bloków danych
Kompromis pomiędzy czasem reakcjia efektywnością
Przesyłanie danych interaktywnych
� Opóźnione potwierdzenie� Algorytm Nagle�a
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 119
Kto jest odpowiedzialnyza wielkość bloków danych ?
Nadawca: wysyła znak po znakuOpóźnione potwierdzenieNagle�s algorythm
Odbiorca: odbiera znak po znakuSilly window syndrome
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 120
Opóźnione potwierdzenie
klient serwernaciśnięcie klawisza A
klient serwernaciśnięcie klawisza A
wyłączone włączone
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 121
Opóźnione potwierdzenie
klient serwer1 bajtnaciśnięcie
klawisza A
klient serwer1 bajtnaciśnięcie
klawisza A
wyłączone włączone
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 122
Opóźnione potwierdzenie
klient serwer1 bajt
potwierdzenie bajta
naciśnięcie klawisza A
klient serwer1 bajtnaciśnięcie
klawisza A
wyłączone włączone
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 123
Opóźnione potwierdzenie
klient serwer1 bajt
potwierdzenie bajta
naciśnięcie klawisza A
echo
klient serwer1 bajtnaciśnięcie
klawisza A
echo
wyłączone włączone
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 124
Opóźnione potwierdzenie
klient serwer
1 bajt
1 bajt
potwierdzenie bajta
naciśnięcie klawisza A
echo
klient serwer
potwierdzenie + 1 bajt
1 bajtnaciśnięcie klawisza A
echo
wyłączone włączone
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 125
Opóźnione potwierdzenie
klient serwer1 bajt
potwierdzenie bajta
naciśnięcie klawisza A
potwierdzenie bajta
echo
klient serwer1 bajtnaciśnięcie
klawisza A
echo1 bajt potwierdzenie + 1 bajt
wyłączone włączone
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 126
Opóźnione potwierdzenie
klient serwer1 bajt
potwierdzenie bajta
naciśnięcie klawisza A
echo
klient serwer1 bajtnaciśnięcie
klawisza A
echo
potwierdzenie bajta
1 bajt potwierdzenie + 1 bajt
wyłączone włączone
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 127
Opóźnione potwierdzenie
klient serwer1 bajt
potwierdzenie bajta
naciśnięcie klawisza A
echo
klient serwer1 bajtnaciśnięcie
klawisza A
potwierdzenie bajta
echo
potwierdzenie bajta
1 bajt potwierdzenie + 1 bajt
wyłączone włączone
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 128
� Zastosowanie: Nadawca wysyła dane w postaci pojedynczych bajtów (małych bloków).
� Algorytm:
� Samoregulacja � Oszczędność łącza, szczególnie dla wolnych sieci
rozległych
Algorytm Nagle�a
wyślij pierwszy bajt,oczekuj na potwierdzenie,wyślij zebrane bajty,
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 129
Algorytm Nagle�aklient serwer
naciśnięcie Nklient serwer
naciśnięcie N
klient:~> rlogin serwerserwer:~> _
klient:~> rlogin serwerserwer:~> _
szyb
kie łą
cze
(LAN
) wolne łącze (W
AN)
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 130
Algorytm Nagle�aklient serwer
1 bajt (N)naciśnięcie Nklient serwer
1 bajt (N)naciśnięcie N
klient:~> rlogin serwerserwer:~> _
klient:~> rlogin serwerserwer:~> _
szyb
kie łą
cze
(LAN
) wolne łącze (W
AN)
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 131
Algorytm Nagle�aklient serwer
1 bajt (N)
potwierdzenie (N) + echo (N)
naciśnięcie Nklient serwer
1 bajt (N)naciśnięcie N
klient:~> rlogin serwerserwer:~> n_
klient:~> rlogin serwerserwer:~> _
szyb
kie łą
cze
(LAN
) wolne łącze (W
AN)
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 132
Algorytm Nagle�aklient serwer
1 bajt (N)naciśnięcie Nklient serwer
1 bajt (N)
naciśnięcie A
naciśnięcie N
naciśnięcie Apotwierdzenie echa + 1 bajt (A)
potwierdzenie (N) + echo (N)
klient:~> rlogin serwerserwer:~> n_
klient:~> rlogin serwerserwer:~> _
szyb
kie łą
cze
(LAN
) wolne łącze (W
AN)
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 133
Algorytm Nagle�aklient serwer
naciśnięcie Nklient serwer
potwierdzenie (N) + echo (N)naciśnięcie A
naciśnięcie N
naciśnięcie A
potwierdzenie (A) + echo (A)
1 bajt (N)1 bajt (N)
potwierdzenie echa + 1 bajt (A)
potwierdzenie (N) + echo (N)
klient:~> rlogin serwerserwer:~> na_
klient:~> rlogin serwerserwer:~> _
szyb
kie łą
cze
(LAN
) wolne łącze (W
AN)
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 134
Algorytm Nagle�aklient serwer
naciśnięcie Nklient serwer
naciśnięcie A
naciśnięcie G
naciśnięcie N
naciśnięcie A
naciśnięcie G
potwierdzenie (N) + echo (N)potwierdzenie (A) + echo (A)
1 bajt (N)1 bajt (N)
potwierdzenie echa + 1 bajt (G)
potwierdzenie (N) + echo (N)
potwierdzenie echa + 1 bajt (A)
klient:~> rlogin serwerserwer:~> na_
klient:~> rlogin serwerserwer:~> n_
szyb
kie łą
cze
(LAN
) wolne łącze (W
AN)
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 135
Algorytm Nagle�aklient serwer
naciśnięcie Nklient serwer
naciśnięcie A
naciśnięcie G
naciśnięcie N
naciśnięcie A
naciśnięcie G
potwierdzenie echa + 2 bajty (AG)
potwierdzenie (N) + echo (N)potwierdzenie (A) + echo (A)
1 bajt (N)1 bajt (N)
potwierdzenie echa + 1 bajt (G)
potwierdzenie (N) + echo (N)
potwierdzenie echa + 1 bajt (A)
potwierdzenie (G) + echo (G)
klient:~> rlogin serwerserwer:~> nag_
klient:~> rlogin serwerserwer:~> n_
szyb
kie łą
cze
(LAN
) wolne łącze (W
AN)
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 136
Algorytm Nagle�aklient serwer
naciśnięcie Nklient serwer
naciśnięcie A
naciśnięcie G
naciśnięcie L
naciśnięcie N
naciśnięcie A
naciśnięcie G
naciśnięcie L
potwierdzenie echa + 2 bajty (AG)
potwierdzenie (N) + echo (N)potwierdzenie (A) + echo (A)
1 bajt (N)1 bajt (N)
potwierdzenie echa + 1 bajt (G)
potwierdzenie (N) + echo (N)
potwierdzenie echa + 1 bajt (A)
potwierdzenie (G) + echo (G)
potwierdzenie echa + 1 bajt (L)
klient:~> rlogin serwerserwer:~> nag_
klient:~> rlogin serwerserwer:~> n_
szyb
kie łą
cze
(LAN
) wolne łącze (W
AN)
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 137
Algorytm Nagle�aklient serwer
naciśnięcie Nklient serwer
naciśnięcie A
naciśnięcie G
naciśnięcie L
naciśnięcie N
naciśnięcie A
naciśnięcie G
naciśnięcie L
potwierdzenie echa + 2 bajty (AG)
potwierdzenie (N) + echo (N)potwierdzenie (A) + echo (A)
1 bajt (N)1 bajt (N)
potwierdzenie echa + 1 bajt (G)
potwierdzenie (N) + echo (N)
potwierdzenie echa + 1 bajt (A)
potwierdzenie (G) + echo (G)
potwierdzenie echa + 1 bajt (L)
potwierdzenie (L) + echo (L)
klient:~> rlogin serwerserwer:~> nagl_
klient:~> rlogin serwerserwer:~> n_
szyb
kie łą
cze
(LAN
) wolne łącze (W
AN)
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 138
Algorytm Nagle�aklient serwer
naciśnięcie Nklient serwer
naciśnięcie A
naciśnięcie G
naciśnięcie L
naciśnięcie E
naciśnięcie N
naciśnięcie A
naciśnięcie G
naciśnięcie L
naciśnięcie Epotwierdzenie (AG) + echo (AG)
potwierdzenie echa + 2 bajty (AG)
potwierdzenie (N) + echo (N)potwierdzenie (A) + echo (A)
1 bajt (N)1 bajt (N)
potwierdzenie echa + 1 bajt (G)
potwierdzenie (N) + echo (N)
potwierdzenie echa + 1 bajt (A)
potwierdzenie (G) + echo (G)
potwierdzenie echa + 1 bajt (L)
potwierdzenie (L) + echo (L)
potwierdzenie echa + 1 bajt (E)
klient:~> rlogin serwerserwer:~> nagl_
klient:~> rlogin serwerserwer:~> n_
szyb
kie łą
cze
(LAN
) wolne łącze (W
AN)
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 139
Algorytm Nagle�aklient serwer
naciśnięcie Nklient serwer
naciśnięcie A
naciśnięcie G
naciśnięcie L
naciśnięcie E
naciśnięcie N
naciśnięcie A
naciśnięcie G
naciśnięcie L
naciśnięcie Epotwierdzenie (AG) + echo (AG)
potwierdzenie echa + 2 bajty (AG)
potwierdzenie (N) + echo (N)potwierdzenie (A) + echo (A)
1 bajt (N)1 bajt (N)
potwierdzenie echa + 1 bajt (G)
potwierdzenie (N) + echo (N)
potwierdzenie echa + 1 bajt (A)
potwierdzenie (G) + echo (G)
potwierdzenie echa + 1 bajt (L)
potwierdzenie (L) + echo (L)
potwierdzenie echa + 1 bajt (E)
potwierdzenie (E) + echo (E)
klient:~> rlogin serwerserwer:~> nagle_
klient:~> rlogin serwerserwer:~> nag_
szyb
kie łą
cze
(LAN
) wolne łącze (W
AN)
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 140
Algorytm Nagle�aklient serwer
naciśnięcie Nklient serwer
naciśnięcie A
naciśnięcie G
naciśnięcie L
naciśnięcie E
naciśnięcie N
naciśnięcie A
naciśnięcie G
naciśnięcie L
naciśnięcie Epotwierdzenie (AG) + echo (AG)
potwierdzenie echa + 2 bajty (AG)
potwierdzenie (N) + echo (N)potwierdzenie (A) + echo (A)
1 bajt (N)1 bajt (N)
potwierdzenie echa + 1 bajt (G)
potwierdzenie (N) + echo (N)
potwierdzenie echa + 1 bajt (A)
potwierdzenie (G) + echo (G)
potwierdzenie echa + 1 bajt (L)
potwierdzenie (L) + echo (L)
potwierdzenie echa + 1 bajt (E)
potwierdzenie (E) + echo (E)
potwierdzenie echa + 2 bajty (LE)
klient:~> rlogin serwerserwer:~> nagle_
klient:~> rlogin serwerserwer:~> nag_
szyb
kie łą
cze
(LAN
) wolne łącze (W
AN)
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 141
Problem:Odbiorca odczytuje bufor bajt po bajcie (małymi blokami)
Odbiorca ogłasza niewielkie okna zamiast poczekać na opróżnienie bufora
Nadawca wysyła niewielkie segmenty, zamiast większych bloków danych danych
Syndrom głupiego okna
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 142
Syndrom Głupiego Okna
Pełny bufor odbiorcy
Miejsce na jeden bajt
Aplikacja odczytuje 1 B
Okno zostaje zwiększone o 1 B
Przychodzi wiadomość z 1B
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 143
Syndrom głupiego okna
Clark�s solution
Rozwiązanie:
Odbiorca czeka z otwarciem okna, aż możliwe będzie powiększenie go o MSS lub o połowę rozmiaru bufora odbiorcy
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 144
Clark+ Nagle� Nadawca transmituje dane, gdy może wysłać:
� cały segment danych MSS � co najmniej połowę rozmiaru bufora odbiorcy� dowolną ilość danych pod warunkiem, że
potwierdzone zostały wszystkie wysłane segmenty (przy włączonym alg. Nagle�a)
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 145
Keepalive Timer
Persistence Timer
Retransmission Timer
Zegary TCPzegar odmierzający Timeout; czas oczekiwania jest zmienny(retransmisja z adaptacją)
zapobiega zakleszczeniu w sytuacji zgubienia pakietu zwiększającego okno
pozwala na sprawdzenie aktywności drugiej strony połączenia
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 146
Timeout = β × RTT, gdzie zalecane β=2
Timeout = RTT + 4 × D
Retransmission Timer
Round Trip TimePr
awdo
podo
bień
stw
o
RTT = α × RTTstare + (1-α) × M
M � czas otrzymaniapotwierdzenia (�nowe� RTT)
α = 7/8
Sposób 2 (alg. Jacobsona)
10 20 30 [ms]
0.1
0.2
0.3
Sposób 1
D= α × D + (1- α) × |RTT � M|
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 147
W sytuacji braku potwierdzenia nie jest zmienianeRTT lecz zwiększa się Timeout 2 dwa razy (zazwyczaj).
Ponowne wysłanie może spowodować niejednoznaczność, które ACK odpowiada ostatniemu wysłaniu.
Dlatego nie zmienia się RTT na podstawie czasów zmierzonych dla retransmitowanych segmentów.
Retransmission Timer cd.Dynamiczna estymacja RTT jestprzeprowadzana wg. Algorytmu Karna
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 148
Persistence Timer
nadawca odbiorca
ACK, window 0
Oczekiwaniena okno
PrzekroczeniePersistence Timer
zapytanie o okno
ACK, window n
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 149
Zastosowania� Przesyłanie danych wrażliwych na gubienie
pakietów� dane interaktywne: Telnet, SSH, mysz w
X-Windows itp.� dane masowe: FTP, Mail, News itp.
� Nie pozwala na transmisję grupową (ang. multicasting) � dokładnie dwa końce połączenia
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 150
User Datagram Protocol� Bardzo prosty bezpołączeniowy protokół warstwy
transportowej� szybki (małe narzuty)� zawodny
� nie zawiera żadnych komunikatów potwierdzających przyjęcie pakietu bądź informujących o jego zagubieniu,
� nie gwarantuje, że dane zostaną dostarczone do procesu docelowego w kolejności wysłania,
� pakiety danych mogą być zduplikowane,� nie zawiera żadnego mechanizmu kontroli prędkości przesyłania
danych pomiędzy hostami.
Proces docelowy musi sobie �radzić� ze wszystkimi wymienionymi zjawiskami.
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 151
Nagłówek UDP� Nagłówek ma rozmiar 8 bajtów� Suma kontrolna jest nieobowiązkowa
(0 = brak sumy)� gdyby suma po wyliczeniu wyniosła 0, zapisuje się
ją jako 0xFFFF (stosowany jest kod U1)
numer portu źródła(16 b)
numer portu przeznaczenia(16 b)
długość datagramu(16 b)
suma kontrolna(16 b)
dane
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 152
Suma kontrolna
adres źródła(32)
adres przeznaczenia(32)
nieużywane = 0(8)
protokół = 17 (8)
długość datagramu UDP(16)
� Obliczanie sumy kontrolnej dla nagłówka, danych oraz pseudonagłówka
Nagłówek
Dane
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 153
Zastosowania� Transmisje grupowe� Transmisje w czasie rzeczywistym� Przesyłanie danych mniej wrażliwych
na gubienie pakietów� Przesyłanie w sieci LAN
� NFS, DNS
Uwaga: Częstym błędem programistów jest testowanie programów wykorzystujących UDP tylko w sieci lokalnej (o niskim stopniu zawodności).
Programy takie uruchomione w sieci rozległej mogą zachowywać sięzupełnie inaczej!
www.cs.agh.edu.pl© DSRG 2003
Sieci komputerowe 154
Literatura� W.R. Stevens Biblia TCP/IP, t. 1, 2� W.R. Stevens Programowanie zastosowań
sieciowych w systemie UNIX� D. Comer TCP/IP t.2� www.iana.org/assignments/port-numbers lub
RFC 1700� RFC 2001, 2018, 2581, 2582, 3042