Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci...

154
www.cs.agh.edu.pl ' DSRG 2003 Sieci komputerowe 1

Transcript of Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci...

Page 1: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

www.cs.agh.edu.pl© DSRG 2003

Sieci komputerowe 1

Page 2: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 3: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 4: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 5: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 6: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 7: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 8: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 9: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 10: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 11: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 12: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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)

Page 13: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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)

Page 14: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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.

Page 15: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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)

Page 16: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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)

Page 17: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 18: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 19: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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)

Page 20: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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)

Page 21: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 22: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 23: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 24: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 25: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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ę

Page 26: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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)

Page 27: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 28: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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)

Page 29: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 30: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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)

Page 31: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 32: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 33: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 34: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 35: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 36: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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)

Page 37: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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)

Page 38: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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»

Page 39: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 40: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 41: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 42: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 43: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 44: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 45: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 46: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 47: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 48: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 49: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 50: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 51: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 52: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 53: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 54: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 55: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 56: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 57: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 58: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 59: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 60: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 61: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 62: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 63: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 64: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 65: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 66: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 67: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 68: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 69: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 70: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 71: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 72: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 73: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 74: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 75: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 76: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 77: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 78: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 79: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 80: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 81: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 82: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 83: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 84: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 85: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 86: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 87: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 88: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 89: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 90: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 91: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 92: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 93: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 94: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 95: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 96: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 97: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 98: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 99: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 100: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 101: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 102: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 103: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 104: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 105: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 106: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 107: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 108: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 109: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 110: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 111: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 112: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 113: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 114: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 115: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 116: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 117: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 118: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 119: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 120: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 121: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 122: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 123: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 124: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 125: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 126: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 127: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 128: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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,

Page 129: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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)

Page 130: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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)

Page 131: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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)

Page 132: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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)

Page 133: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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)

Page 134: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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)

Page 135: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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)

Page 136: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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)

Page 137: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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)

Page 138: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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)

Page 139: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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)

Page 140: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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)

Page 141: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 142: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 143: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 144: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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)

Page 145: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 146: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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|

Page 147: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 148: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 149: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 150: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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.

Page 151: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 152: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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

Page 153: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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!

Page 154: Sieci komputerowe 1 - PLD Linuxcarme.pld-linux.org/.../semestr_4/sieci/sieci/TCP_UDP.pdfSieci komputerowe 8 Porty ŁDostęp do portów może być: Œ synchroniczny: przetwarzanie jest

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