Protokół TCP (RFC 793)

Podobne dokumenty
Sieci komputerowe Warstwa transportowa

SEGMENT TCP CZ. II. Suma kontrolna (ang. Checksum) liczona dla danych jak i nagłówka, weryfikowana po stronie odbiorczej

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ

Sieci komputerowe - Protokoły warstwy transportowej

Sieci komputerowe Mechanizmy sterowania przebiegiem sesji TCP w Internecie

Protokoły sieciowe - TCP/IP

MODEL WARSTWOWY PROTOKOŁY TCP/IP

Warstwa transportowa. mgr inż. Krzysztof Szałajko

TCP/IP formaty ramek, datagramów, pakietów...

Sieci komputerowe. Zajęcia 3 c.d. Warstwa transportu, protokoły UDP, ICMP

Transport. część 1: niezawodny transport. Sieci komputerowe. Wykład 6. Marcin Bieńkowski

Przesyłania danych przez protokół TCP/IP

Architektura INTERNET

PROTOKOŁY WARSTWY TRANSPORTOWEJ

Warstwa transportowa

Sieci komputerowe - warstwa transportowa

pasja-informatyki.pl

Stos protokołów TCP/IP (ang. Transmission Control Protocol/Internet Protocol)

Akademia Techniczno-Humanistyczna w Bielsku-Białej

Sieci komputerowe. Protokoły warstwy transportowej. Wydział Inżynierii Metali i Informatyki Przemysłowej. dr inż. Andrzej Opaliński.

Unicast jeden nadawca i jeden odbiorca Broadcast jeden nadawca przesyła do wszystkich Multicast jeden nadawca i wielu (podzbiór wszystkich) odbiorców

Enkapsulacja RARP DANE TYP PREAMBUŁA SFD ADRES DOCELOWY ADRES ŹRÓDŁOWY TYP SUMA KONTROLNA 2 B 2 B 1 B 1 B 2 B N B N B N B N B Typ: 0x0835 Ramka RARP T

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

Sieci komputerowe. Wykład 5: Warstwa transportowa: TCP i UDP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Adresy w sieciach komputerowych

Programowanie sieciowe

Moduł 11.Warstwa transportowa i aplikacji Zadaniem warstwy transportowej TCP/IP jest, jak sugeruje jej nazwa, transport danych pomiędzy aplikacjami

Dr Michał Tanaś(

Protokół IP. III warstwa modelu OSI (sieciowa) Pakowanie i adresowanie przesyłanych danych RFC 791 Pakiet składa się z:

Model OSI. mgr inż. Krzysztof Szałajko

Transport. część 3: kontrola przeciążenia. Sieci komputerowe. Wykład 8. Marcin Bieńkowski

Transport. część 3: kontrola przeciążenia. Sieci komputerowe. Wykład 8. Marcin Bieńkowski

Sieci Komputerowe Protokół TCP

Transport. część 2: protokół TCP. Sieci komputerowe. Wykład 6. Marcin Bieńkowski

Skąd dostać adres? Metody uzyskiwania adresów IP. Statycznie RARP. Część sieciowa. Część hosta

Laboratorium - Używanie programu Wireshark do obserwacji mechanizmu uzgodnienia trójetapowego TCP

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

Transport. część 2: protokół TCP. Sieci komputerowe. Wykład 6. Marcin Bieńkowski

Podstawy sieci komputerowych

Podstawy Transmisji Danych. Wykład IV. Protokół IPV4. Sieci WAN to połączenia pomiędzy sieciami LAN

Sieci komputerowe. Wykład 7: Transport: protokół TCP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

ARP Address Resolution Protocol (RFC 826)

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej

Transmisja bezpołączeniowa i połączeniowa

Podstawowe protokoły transportowe stosowane w sieciach IP cz.1

Laboratorium - Przechwytywanie i badanie datagramów DNS w programie Wireshark

Sieci komputerowe. Wykład dr inż. Łukasz Graczykowski

Programowanie współbieżne i rozproszone

Transport. część 3: kontrola przeciążenia. Sieci komputerowe. Wykład 8. Marcin Bieńkowski

ADRESY PRYWATNE W IPv4

Plan wykładu. 1. Sieć komputerowa 2. Rodzaje sieci 3. Topologie sieci 4. Karta sieciowa 5. Protokoły używane w sieciach LAN 6.

Aby lepiej zrozumieć działanie adresów przedstawmy uproszczony schemat pakietów IP podróżujących w sieci.

Zarządzanie ruchem w sieci IP. Komunikat ICMP. Internet Control Message Protocol DSRG DSRG. DSRG Warstwa sieciowa DSRG. Protokół sterujący

Sieci Komputerowe Modele warstwowe sieci

DNS - jest "klejem" łączącym adresy sieciowe z obiektami (komputerami / host'ami) z nazwami jakimi się posługują wszyscy użytkownicy.

Omówienie TCP/IP. Historia

Połączenie logiczne Zestawienie połączenia Zerwanie połączenia Niezawodne Np. TCP

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ

Stos TCP/IP Warstwa transportowa Warstwa aplikacji cz.1

TCP/IP. Warstwa łącza danych. mgr inż. Krzysztof Szałajko

Zestaw ten opiera się na pakietach co oznacza, że dane podczas wysyłania są dzielone na niewielkie porcje. Wojciech Śleziak

polega na opakowaniu danych - w każdej warstwie modelu OSI, kolejno idąc z góry na dół - w konieczne nagłówki/stopki odpowiednich protokołów

Pytanie 1 Z jakich protokołów korzysta usługa WWW? (Wybierz prawidłowe odpowiedzi)

Stos TCP/IP. Warstwa aplikacji cz.2

BADANIE SPRAWNOŚCI PROTOKOŁU TCP

Protokoły wspomagające. Mikołaj Leszczuk

Klient-Serwer Komunikacja przy pomocy gniazd

Selektywne powtarzanie (SP)

Podstawowe protokoły transportowe stosowane w sieciach IP cz.2

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 14 Protokoły sieciowe

System operacyjny UNIX Internet. mgr Michał Popławski, WFAiIS

Sieci komputerowe w sterowaniu informacje ogólne, model TCP/IP, protokoły warstwy internetowej i sieciowej

Warstwy i funkcje modelu ISO/OSI

Plan wykładu. Warstwa sieci. Po co adresacja w warstwie sieci? Warstwa sieci

Internet Control Message Protocol (ICMP) Łukasz Trzciałkowski

Bazy Danych i Usługi Sieciowe

ISO/OSI TCP/IP SIECI KOMPUTEROWE

UDP vs TCP. Autor: Marcin Koczara IV FDS

Systemy operacyjne i sieci komputerowe Szymon Wilk Adresowanie w sieciach Klasy adresów IP a) klasa A

Uniwersalny Konwerter Protokołów

Wykład 4: Protokoły TCP/UDP i usługi sieciowe. A. Kisiel,Protokoły TCP/UDP i usługi sieciowe

MODEL OSI A INTERNET

Wykład 3 / Wykład 4. Na podstawie CCNA Exploration Moduł 3 streszczenie Dr inż. Robert Banasiak

ZiMSK dr inż. Łukasz Sturgulewski, DHCP

Plan wykładu. Warstwa sieci. Po co adresacja w warstwie sieci? Warstwa sieci

Sieci komputerowe: WYŻSZE WARSTWY MODELU OSI. Agata Półrola Katedra Informatyki Stosowanej UŁ

Model sieci OSI, protokoły sieciowe, adresy IP

Laboratorium 6.7.2: Śledzenie pakietów ICMP

TCP/IP (Transmission Control Protocol / Internet Protocol) komunikacji otwartej stosem protokołów

Sieci Komputerowe. Wykład 1: TCP/IP i adresowanie w sieci Internet

BADANIE SPRAWNOŚCI PROTOKOŁU TCP

Sieci komputerowe - Wstęp do intersieci, protokół IPv4

Rys. 1. Wynik działania programu ping: n = 5, adres cyfrowy. Rys. 1a. Wynik działania programu ping: l = 64 Bajty, adres mnemoniczny

Routing i protokoły routingu

Systemy operacyjne System sieciowy UNIX-a

Sieci komputerowe - administracja

Na podstawie: Kirch O., Dawson T. 2000: LINUX podręcznik administratora sieci. Wydawnictwo RM, Warszawa. FILTROWANIE IP

OSI Transport Layer. Network Fundamentals Chapter 4. Version Cisco Systems, Inc. All rights reserved. Cisco Public 1

1 Moduł Diagnostyki Sieci

Transkrypt:

LAN 1 Protokół TCP (RFC 793) dotyczy komunikacji pojedynczej (unicastowej) pomiędzy dwoma punktami, każdy z adresem IP i numerem portu połączenie TCP jest dwustronne i dane mogą płynąć w każdą stronę niezależnie TCP udostępnia usługi komunikacyjne wielu procesom uruchomionym na jednym hoście - jeśli dostępne jest jedno łącze fizyczne, wszystkie procesy są powiązane z jednym adresem logicznym (adresem IP), ale aplikacjom przypisywany jest numer numer portu, który identyfikuje proces aplikacji kontenerem warstwy transportowej jest segment, segment jest przenoszony przez pojedynczy pakiet TCP jest usługą połączeniową tzn. przed transmisją danych wymaga ustanowienia połączenia (dostarcza kanału wirtualnego do transmisji danych pomiędzy aplikacjami użytkowników końcowych) protokoły, które używają TCP: FTP, HTTP, SMTP, Telnet, SSH, funkcje protokołu TCP podstawowy mechanizm przesyłania danych niezawodność(reliability): osiągana za pomocą numerów segmentów i numerów potwierdzeń - dzięki TCP nie ma konieczności wprowadzania rozwiązań zależnych od aplikacji kontrola przepływu (flow control): mechanizmy dotyczące buforowania algorytm okna przesuwnego zarządzanie przeciążeniami (congestion mgmt): dostosowywanie prędkości transmisji do dostępnego pasma w sieci multipleksacja sytuacje wymiany segmentów między dwoma punktami inicjalizacja połączenia ogłaszanie wielkości okna przez odbiornik transfer danych przesyłanie potwierdzeń o segmentach, które doszły zamykanie połączenia

LAN 2 podstawowy mechanizm przesyłania danych protokół TCP umożliwia przesyłanie ciągłego strumienia oktetów danych w obu kierunkach - dane są przesyłane pomiędzy procesami aplikacyjnymi systemów działających na stacjach, które są punktami końcowymi połączenia - procesy aplikacyjne są odpowiedzialne za grupowanie wysyłanych danych w tzw. segmenty segmenty port usługi dane port usługi dane funkcje transportowe są realizowane segment-po-segmencie tzn. różniące się aplikacje mogą wysyłać segmenty danych i są one obsługiwane w trybie kto pierwszy ten lepszy segmenty nie mają ograniczenia na długość wynikającego z cech warstwy transportowej, ograniczenie wynika z MTU w warstwie sieci, które określa długość datagramu IP ze względu na efektywność transmisji rozmiar segmentu jest zwykle negocjowany jednostką strumienia danych jest oktet, każdy oktet jest numerowany przez TCP o aplikacje dobierają według własnych reguł i potrzeb długość danych (wielokrotność oktetu) o TCP zapewnia sekwencjonowanie danych (oktety odbierane są w tej samej kolejności jak zostały wysłane) o TCP zapewnia buforowanie danych: aplikacja kieruje dane do modułu TCP dane umieszcza się w buforze z bufora są przesyłane w całości lub kilku mniejszych segmentach, nie ma reguł co do wielkości segmentów o strumień oktetów TCP nie posiada żadnej struktury związanej ze strukturą danych aplikacji o TCP jest protokołem strumienia bajtów tzn. liczba bajtów zapisanych przez nadawcę nie musi być taka sama jak liczba bajtów odczytanych przez odbiorcę np. aplikacja może zapisać do połączenia TCP: 8B, 2B i 20B a aplikacja po stronie odbierającej może odczytać 5B naraz wewnątrz pętli powtarzanej 6 razy; w odróżnieniu od protokołów operujących na komunikatach jak UDP, TCP nie wtrąci granic rekordów pomiędzy 8 i 9 bajtem, oraz 10 i 11 o nie ma znacznika końca komunikatu TCP - aby wszystkie dane przekazane przez aplikacje do modułu TCP zostały wysłane implementowana jest funkcja pchania (flaga PUSH), która opróżnia cały bufor (lub stawiana jest flaga URG - pilne dane)

LAN 3 enkapsulacja segmentów TCP format segmentu TCP BIT0 BIT15 BIT16 BIT31 PORT ŹRÓDŁOWY(16) PORT DOCELOWY(16) NUMER SEKWENCYJNY (32) NUMER POTWIERDZENIA (32) DŁUGOŚĆ NAGŁÓWKA (4) ZAREZERWOWANE (6, SAME ZERA) U R G A C K P S H R S T S Y N F I N OKNO (16) SUMA KONTROLNA (16) WSKAŹNIK WAŻNOŚCI (16) OPCJE + WYPEŁNIENIE (DO 32) DANE (DŁUGOŚĆ ZMIENNA) długość(port źródłowy-wskaźnik ważności) = 20 bajtów Port źródłowy, Port docelowy (Source/Destination Port) identyfikują procesy punktów końcowych obwodu wirtualnego TCP, moduły TCP przypisują numery portów w sposób dowolny poza numerami poniżej 1024, które są przypisane aplikacjom określonym w RFC Numer sekwencyjny (Sequence Number) zapewnia poprawne porządkowanie przychodzących danych w pierwszym kroku trójetapowego uzgadniania tzn. kiedy znacznik SYN=1: zawiera początkowy numer sekwencyjny (ISN Initial Sequence Number) dla bieżącej sesji (wtedy pole przesunięcie danych wynosi ISN+1) przy transmisji danych: numer pierwszego oktetu danych segmentu TCP Numer potwierdzenia (Acknowledgement Number) to numer kolejnego oczekiwanego oktetu TCP, wysyła go strona odbierająca stanowi podstawę mechanizmu niezawodności transmisji

LAN 4 Przesunięcie danych (Data Offset) podaje liczbę 32 bitowych słów w nagłówku TCP (długość nagłówka jest zmienna bo występuje pole opcji) - wartość 5 (20 oktetów) oznacza, że pole opcji nie występuje; dla opcji MSS Maximum Segment Size wartość przesunięcia danych wynosi 6 pole to jest nazywane data offset ponieważ wskazuje o ile słów 32-bitowych początek danych jest przesunięty względem początku segmentu TCP Zarezerwowane na przyszłe potrzeby obecnie wypełnione samymi zerami Znaczniki (Flags) URG (urgent) gdy równy 1, oznacza, że w tym segmencie są przesyłane dane pozapasmowe, dane pilne ACK (acknowledgement) gdy równy 1, oznacza, że ten segment przenosi potwierdzenie PSH (push) gdy równy 1, oznacza, że należy w sposób natychmiastowy dostarczyć komunikat TCP do warstwy wyższej RST (reset) gdy równy 1, oznacza sygnał do natychmiastowego zamknięcia obwodu wirtualnego, powodem może być: brak docelowego portu w stanie słuchania, błędy transmisji, których nie da się skorygować, chęć natychmiastowego zakończenia połączenia SYN (synchronize) gdy równy 1, jest ustawiana podczas procesu otwieranie obwodu wirtualnego (three-way-handshake); synchronizacja FIN (finish) gdy równy 1, oznacza, że nadawca tego segmentu sygnalizuje chęć zakończenia połączenia; musi być potwierdzone zwrotnie Okno (Window) określa liczbę oktetów, które moduł wysyłający ten segment jest zdolny odebrać naraz od nadawcy - umożliwia kontrolę przepływu Suma kontrolna (Checksum) pole używane dla ochrony integralności danych nie tylko przed błędami transmisji ale także błędami dostarczenia pole sumy kontrolnej zawiera uzupełnienie do jedności sumy uzupełnień do jedności wszystkich 16 bitowych słów segmentu TCP wyliczane jest z całego datagramu TCP + pseudonagłówka (pole długość pseudonagłówka dotyczy nagłówka TCP i danych i nie obejmuje samego pseudonagłówka)

LAN 5 Wskaźnik ważności pole używane wraz z bitem URG: zawiera numer sekwencyjny ostatniego oktetu ważnych danych Opcje każda z opcji może być albo o długości 1 albo o długości zmiennej podpole rozmiar [bajt] opis rodzaj 1 podaje format opcji: jedno lub wielobajtowy długość 1 długość dotyczy wszystkich podpól pola opcje dane zmienny dane opcji są dwa rodzaje formatów opcji o pojedynczy oktet typ=0 (koniec listy opcji) typ=1 (opcja pusta) o kilka oktetów: typ opcji, długość opcji, kilka oktetów danych najważniejsza opcja to MSS Maximum Segment Size o określa maksymalny rozmiar segmentu - wartość pola danych tej opcji można uzyskać odejmując od MTU (Maximum Transmission Unit) rozmiar nagłówka IP i nagłówka TCP o przykładowo dla Ethernetu MTU=1500, stąd MSS=1500 20 20=1460 (20 bajtowe nagłówki IP i TCP minimalny rozmiar) o wartość domyślna MSS (jeśli nie jest podana) wynosi 536 o dla MSS typ opcji określa się liczbą 2 [pierwszy bajt], długość opcji (cały wpis) wynosi 4 [drugi bajt], dwa kolejne bajty to wartość MSS [trzeci i czwarty bajt] o MSS przesyłany jest w segmencie z podniesionym bitem SYN Wypełnienie jeśli pole opcje nie jest wielokrotnością 32 bitów, zostaje wypełnione zerami do takiej wielokrotności Dane dane protokołów warstw wyższych

LAN 6 zestawianie połączenia TCP - mechanizm trójetapowego uzgadniania (three-way handshake) 1. klient (dokonuje aktywnego otwarcia): nagłówek segmentu zawiera bit SYN=1 Numer Sekwencyjny = początkowy numer sekwencyjny (ISN, Initial Sequence Number) np. X rozmiar bufora odbiorczego (rozmiar okna), rozmiar największego segmentu danych 2. serwer: bit SYN=1 bit ACK=1 Numer Sekwencyjny = początkowy numer sekwencyjny Y Numer Potwierdzenia = (X+1) rozmiar bufora odbiorczego (rozmiar okna), rozmiar największego segmentu danych 3. klient: nagłówek segmentu zawiera bit ACK=1 Numer Potwierdzenia = (Y+1) uwagi początkowe numery sekwencyjne X, Y są ustalane losowo, aby uchronić się przed wcześniejszą instancją tego samego połączenia odbiorca pierwszego SYN nie ma możliwości stwierdzenia, czy ten segment jest aktualny (a nie jest to np. opóźniony stary segment), stąd odbiorca musi poprosić nadawcę o weryfikację tego SYN

LAN 7 zamykanie połączenia TCP (łagodne) 1. klient (dokonuje aktywnego zamknięcia): nagłówek segmentu zawiera bit FIN=1 Numer Sekwencyjny = np. K otrzymanie flagi FIN wymusza powiadomienie aplikacji, że drugi koniec połączenia zakończył wysyłanie danych 2. serwer: nagłówek segmentu zawiera bit ACK=1 Numer Potwierdzenia = (K+1) 3. serwer (dokonuje biernego zamknięcia): nagłówek segmentu zawiera bit FIN=1 Numer Sekwencyjny = L 4. klient: nagłówek segmentu zawiera bit ACK=1 Numer Potwierdzenia = (L+1) uwagi obejmuje cztery etapy ponieważ połączenie TCP jest dwukierunkowe jednoczesne (full duplex), zamknięcie każdego kierunku następuje niezależnie dowolny z partnerów połączenia może zainicjować rozłączenie po otrzymaniu flagi FIN możliwa jest dalsze przesyłanie danych w jedną stronę, ale w praktyce większość aplikacji dokonuje dwustronnego zamknięcia

LAN 8 diagram stanów

LAN 9 niezawodność podstawową funkcją TCP jest zagwarantowanie dostarczenia danych na całej drodze transmisji potencjalne problemy i sposób ich rozwiązania uszkodzenie danych analiza sumy kontrolnej i w przypadku błędu odrzucenie danych retransmisja nie potwierdzonych danych przez nadajnik utrata danych potwierdzanie odbioru danych przez odbiornik retransmisja przez nadajnik segmentów nie potwierdzonych powielenie danych niewłaściwa kolejność danych przekazanych przez warstwę sieciową zestawianie segmentów w prawidłowym porządku w punkcie docelowym na podstawie numerów sekwencyjnych segmentów mechanizm pozytywnego potwierdzania z retransmisją wysyłane bajty są numerowane, a odbiornik potwierdza ich otrzymanie o odbiornik wysyła do nadajnika wiadomość z podniesioną flagą ACK i podaje numer sekwencyjny bajtu, który chce otrzymać (potwierdzenie oczekiwane) o istnieja indywidualne i skumulowane potwierdzenia : otrzymanie potwierdzenia bajtu n oznacza, ze wszystkie bajty do numeru (n 1) zostały odebrane poprawnie dla każdego wysłanego segmentu ustawiany jest zegar oczekiwania na potwierdzenie (timeout) o czas oczekiwania jest funkcją spodziewanej wartości opóźnienia RTT (Round- Trip Time) między dwoma końcami połączenia scenariusz, gdy dane dochodzą

LAN 10 scenariusz gdy stracono dane

LAN 11 kontrola przepływu mechanizm okna przesuwnego (sliding window) okno liczba oktetów danych, jakie nadawca może wysłać nie czekając na potwierdzenie wielkość okna jest negocjowana dynamicznie podczas całej sesji TCP - każdy segment potwierdzenia zawiera informację (w polu Okno), która wskazuje liczbę bajtów, które urządzenie odbiorcze może przyjąć bufor dzielony na segmenty o wielkości maksymalnej (MSS: Maximum Segment Size) rozmiar okna ustawiony na 0 oznacza zatrzymanie transmisji nadawca ustawia wtedy tzw. persist timer, po czym wysyła zapytanie o aktualizacje okno otwiera się (posuwa się prawą krawędzią) w stronę wzrastającego numeru segmentu wraz z wysyłaniem danych okno zamyka się na coraz mniejsze numery segmentów wraz z ich potwierdzaniem przez nadawcę upłynięcie czasu połączenia i retransmisja prędkość, z jaką nadawca może nadawać dane przez sieć jest ograniczona z góry przez okno (wielkość ogłaszana przez odbiornik) oraz czas przejścia RTT RTT (Round-Trip Time) to czas pomiędzy wysłaniem segment z danymi i otrzymaniem potwierdzenia (ACK) - czas ten może się zmieniać wraz nasileniem ruchu w sieci, ginięciem segmentów jak i potwierdzeń jak TCP używa RTT o jeśli czas ten zostanie przekroczony dane są retransmitowane o zmierzony RTT staje się wzorcem wg. którego określa się czas potwierdzenia kolejnego segmentu RTO (Retransmission TimeOut) = RTT*β, gdzie β to wartość ok. 2 właściwe wyznaczenie RTT skutkuje lepszą płynnością przesyłania

LAN 12

LAN 13 Algorytm przesuwnego okna: implementacja nadajnik zmienne stanu o SWS (Source Window Size) rozmiar okna nadawczego o LAR (Last Acknowledgement Number) numer sekwencyjny ostatniego odebranego potwierdzenia o LFS (Last Frame Sent) numer sekwencyjny ostatniej nadanej ramki niezmiennik: LFS - LAR <= SWS działanie o przypisuje każdej ramce numer sekwencyjny SeqNum o po odebraniu ACK zwiększa LAR i nadaje kolejną ramkę ( przydziela jej także zegar) o buforuje SWS ramek odbiornik zmienne stanu o RWS (Remote Window Size) rozmiar okna odbiorczego o LFA (Last Frame Accepted) ostatnia akceptowana ramka o NFE (Next Frame Expected) następna oczekiwana ramka niezmiennik: LFA - NFE +1 <= RWS działanie: gdy przychodzi ramka o numerze SeqNum: o jest odrzucana jeżeli SeqNum < NFE lub SeqNum > LFA o jest akceptowana jeżeli NFE <= SeqNum < = LFA teraz odbiornik podejmuje decyzje czy nadawać ACK

LAN 14 wysłanie skumulowanego ACK niech SeqNumToAck oznacza największy numer sekwencyjny, który nie został jeszcze potwierdzony wszystkie ramki o numerach SeqNum < SeqNumToAck zostały odebrane 1. potwierdzenie kumulacyjne: odbiornik potwierdza odbiór ramki SeqNumToAck i tym samym wszystkich poprzednich - (być może odebrał tez ramki o większych SeqNum ale ich nie potwierdza) 2. odbiornik ustawia NFE = SeqNumToAck + 1 LFA = SeqNumToAck + RWS przykład: Niech RWS=4 i NFE=5, czyli ostatni nadany ACK=5 odnosił się do SeqNum=4, ponadto LFA=8 1. Gdyby (poza kolejnością) przyszły ramki SeqNum=6 i SeqNum=7 to zostaną zbuforowane, ale nie zostanie wysłane żadne potwierdzenie przed przybyciem SeqNum=5 2. Kiedy przyjdzie wreszcie SeqNum=5 to odbiornik nada ACK=8 (tzn. że doszło jako ostatnie SeqNum=7) oraz ustawi NFE=8, LFA=NFE+RWS=8+4=12 3. Gdyby ramka SeqNum=5 została stracona - wtedy w nadajniku upłynie czas oczekiwania i ramka SeqNum=5 zostanie nadana ponownie (nadajnik musi się cofnąć o n ramek w tył, n <= SWS) Kiedy upływa czas oczekiwania ilość danych nadawanych maleje bo nadajnik musi poczekać na akceptację SeqNum=5 zanim przesunie dalej okno (LAR=5) przy stratach pakietów algorytm okna przesuwnego nie utrzymuje wypełnionego łącza i problem ten narasta wraz z czasem metody lepszego wypełnienia łącza w pkt 3: gdy SeqNum=6 i SeqNum=7 nadeszły a nie ma SeqNum=5 odbiornik może jeszcze raz wysłać ACK=5 (potwierdzenie dla SeqNum=4) i jest to wskazówka dla nadajnika, że SeqNum=5 jest tracone i pozwala wcześniej wykryć straty ramek potwierdzenie selektywne: odbiornik potwierdza te ramki, które odebrał nie czekając na brakujące w kolejności (czyli SeqNum=5) nadajnik ma przez to więcej informacji i może lepiej wypełnić złącze ustalanie rozmiaru SWS i RWS SWS na podstawie liczby (opóźnienie)x(pasmo) jest to tzw. zasada utrzymywania wypełnionego łącza RWS dowolna wartość w zakresie o RWS=1 nie są buforowane żadne ramki przychodzące w kolejności o RWS=SWS odbiornik buforuje każdą z ramek transmitowanych przez nadajnik

LAN 15 mechanizmy sterowania przeciążeniami nadawcy TCP muszą wykryć i odzyskać tak dużo segmentów, ile się da bez przeprowadzania kosztownej czasowo retransmisji aby uchronić się przed niepożądanymi retransmisjami segmentów, które nie zaginęły, a jedynie opóźniają się, minimalne RTO (Retransmission TimeOut) wybiera się zachowawczo jako 1 sekunda techniki sterowania przeciążeniem i retransmisji zgubionych segmentów Slow Start Congestion Avoidance Fast Retransmit + Fast Recovery algorytm powolnego startu (Slow Start Algorithm) gdyby transmisja TCP zaczynała się od wysłania dokładnie takiej liczby segmentów, jak to określna okno przesuwne zadeklarowane przez odbiornik, urządzenia pośredniczące mogłyby zostać zmuszone do odrzucenia części pakietów ze względu na przekroczenie maksymalnego wypełnienia buforów, a to wiązałoby się z koniecznością retransmisji algorytm powolnego startu dostosowuje tempo wysyłania pakietów do sieci za pomocą obserwacji dochodzenia potwierdzeń nadajnik utrzymuje tzw. okno przeciążenia (Congestion Window, cwnd) - to liczba segmentów jakie można wysłać bez potwierdzenia po ustanowieniu połączenia: cwnd = 1 (segment) po dotarciu pierwszego potwierdzenia okno przeciążenia jest inkrementowane do wartości 2 (można przesłać dwa segmenty), po dotarciu potwierdzeń obu do 4 itd. wzrost wielkości okna cwnd jest wykładniczy przy pewnej wielkości okna cwnd pojemność sieci może się wypełnić i jakieś urządzenia sieciowe zacznie odrzucać pakiety nadawca może transmitować liczbę segmentów do wielkości minimum z wielkości okna przeciążenia (ustanawianego przez nadawcę) i okna ogłaszanego przez odbiorcę

LAN 16 algorytm unikania przeciążenia (Congestion Avoidance Algorithm) to algorytm dynamicznego wymiarowania okna wymaga dla każdego połączenia zmiennych: okno przeciążenia (cwnd), próg powolnego startu ssthresh 1. gdy pojawi się przeciążenie, zapamiętaj połowę wartości cwnd : win = ½ cwnd 2. inicjalizacja: cwnd=1 (segment), ssthresh= 65535 (B) 3. ssthresh = win (minimum 2 segmenty) dodatkowo jeśli timeout: cwnd=1 ( co oznacza powolny start) 4. gdy przychodzą potwierdzenia nowych segmentów zwiększa się cwnd jeśli cwnd ssthresh (czyli do połowy cwnd) : wzrost cwnd następuje według algorytmu powolnego startu cwnd ma wzrost wykładniczy gdy osiągnięty zostaje poziom połowy wartości sprzed przeciążenia włącza się algorytm unikania przeciążenia jeśli cwnd > ssthresh: wzrost cwnd następuje według algorytmu unikania przeciążenia za każdym razem, gdy dochodzi ACK: cwnd jest zwiększany o segsize*segsize/cwnd w odstępach czasu równych opóźnieniu potwierdzenia RTT, segsize: rozmiar segment (B) cwnd ma wzrost liniowy algorytm Fast Retransmit i Fast Recovery wprowadzone w wersji TCP Reno oba algorytmy implementuje się łącznie Fast Retransmit jeśli trzy lub więcej potwierdzeń o segmentach z numerami wyższymi niż dany segment dojdzie do nadajnika pod rząd, może to oznaczać rzeczywistą stratę pakietu TCP retransmituje wtedy ten segment bez odczekania do końca czasu transmisji procedura: ssthresh = cwnd/2 i faza szybkiej retransmisji zgubionego segmentu algorytm Fast Retransmit nie jest używany gdy zbyt mała liczba zduplikowanych potwierdzeń dochodzi od odbiornika (może to być spowodowane małym oknem przeciążenia cwnd lub zbyt dużą liczbą straconych segmentów w oknie odbiorczym)

LAN 17 Fast Recovery faza szybkiego odzyskania (Fast Recovery) o cwnd = ssthresh + 3 o jesli ponownie przychodzi to samo podwójne potwierdzenie: cwnd = cwnd +1 i transmitowany jest nowy pakiet do wielkości cwnd o jeśli przychodzi potwierdzenie nowego segmentu (nie zduplikowanego) to cwnd = ssthresh o startuje algorytm unikania przeciążenia jest włączany po retransmisji zgubionych segmentów przez algorytm szybkiej retransmisji (zamiast algorytmu wolnego startu) pozwala na utrzymanie wysokiej przepływności przy umiarkowanym przeciążeniu, szczególnie dla długich okien powód dla którego nie jest używany po tej fazie algorytm wolnego startu o skoro odbiornik generuje zduplikowane potwierdzenia wyłącznie przy okazji przyjścia innego segmentu, oznacza to, że istnieje przepływ danych między oboma końcami i skokowa redukcja strumienia byłaby nieefektywna

LAN 18 przykład 1 cwnd=4 sieć gubi jeden segment (segment 2) do nadajnika dotrą w najlepszym razie dwa zduplikowane potwierdzenia: 1 oraz 3 i 4 (również potwierdzają 1) retransmisję wywoła upływ czasu połączenia (timeout) (do wywołania algorytmu Fast Retransmit potrzebne są trzy zduplikowane potwierdzenia) gdy pakiet 2 dochodzi do odbiorcy, ten potwierdza dojście pakietów 2-4 przykład 2 cwnd=5 nadajnik wysyła segmenty od 1 do 5, giną pakiety: 2, 3 nadajnik otrzymuje potwierdzenie pakietu 1, następnie potwierdzenie pakietu 1 jeszcze dwa razy z potwierdzeniem pakietu 4 i 5 nadajnik retransmituje pakiet 2 wg. algorytmu szybkiej retransmisji i redukuje cwnd o czynnik 2 odbiornik potwierdza pakiet 2 po otrzymaniu go nadajnik czeka na potwierdzenie pakietu 3 i gdy upłynie czas retransmituje pakiet 3 nadajnik wchodzi w algorytm powolnego startu redukując cwnd do 1

LAN 19 Protokół UDP (RFC 768) bezpołączeniowy (wymienia datagramy bez potwierdzeń) protokół transportowy w stosie protokołów TCP/IP znaczenie UDP jeśli nie wymaga tego sytuacja transmisji po co wprowadzać niepotrzebny narzut protokołowy związany z gwarantowaną dostawą i stosować TCP? UDP jest zaprojektowany dla aplikacji, które nie potrzebują składać kolejnych segmentów znaczenie zasadnicze: UDP (jak TCP) jest protokołem rozszerzającym usługę dostawy między hostami na usługę komunikacji między procesami - procesy identyfikują się za pomocą abstrakcyjnego wskaźnika - portu kluczowe usługi protokłu UDP DNS: Domain Name System SNMP: Simple Network Management Protocol DHCP: Dynamic Host Configuration Protocol RIP: Routing Information Protocol TFTP: Trivial File Transfer Protocol format segmentu UDP BIT0 BIT15 BIT16 BIT31 PORT ŹRÓDŁOWY (16) PORT DOCELOWY(16) DŁUGOŚĆ (16) SUMA KONTROLNA (16) DANE (JEŚLI SĄ) 8 bajtów Długość liczba bajtów obejmująca nagłówek i dane Suma kontrolna wyliczona dla nagłówka i danych technika weryfikacji adresu IP: UDP oblicza sumę kontrolną biorąc pod uwagę docelowy IP w miejscu przeznaczenia proces UDP weryfikuje sumę kontrolną przez wzięcie docelowego adresu IP z nagłówka pakietu, który dostarczył wiadomość UDP jeśli się zgadza, oznacza to, że pakiet doszedł do zamierzonego celu Dane dane protokołów warstw wyższych

LAN 20 Numery portów TCP i UDP pełny adres = IP + port para: adres docelowy IP i port docelowy może służyć równocześnie do wielu połączeń para: adres źródłowy IP i port źródłowy charakteryzuje każde pojedyncze połączenie - może być wiele połączeń pomiędzy tymi samymi punktami, ale dla każdego port źródłowy musi być inny przydział portów do procesów odbywa się indywidualnie na każdym hoście dynamicznie lub statycznie przydział statyczny dotyczy znanych usług, które są osiągalne przez znane porty (<1024) niezależnie od systemu operacyjnego przydział portów: http://www.iana.org/assignments/port-numbers process translacji adresu i portu (NAPT): zmienia adres i port źródłowy klienta numer portu są używane, by rozróżniać różne, równoczesne konwersacje aplikacji w sieci są przydzielane przez organizację IANA (Internet Assigned Authority Numbers) możliwe numery portów: 1-65535 są pogrupowane w odpowiednich zakresach o 1-1023: są nazywane dobrze znanymi numerami portów przydzielone są do znanych standardowych usług numery portów >=1024 są przydzielane dynamicznie: o 1024-49151: porty zarejestrowane dla dostawców konkretnych aplikacji o 41152-65535: porty dynamiczne (efemeryczne) lub prywatne o (w Unix BSD: 1-1023 porty zarezerwowane, 1024-5000 efemeryczne, 5001-65535 nieuprzywilejowane)

LAN 21 zarezerwowane numery portów TCP i UDP UDP TCP 42 name server 13 daytime (RFC 867, data i czas) 49 tacacs-ds 20 FTP data 67 BOOTPS (Bootstrap Protocol Server) 21 FTP control 68 BOOTPC (Bootstrap Protocol Client) 22 ssh 69 TFTP (Trivial FTP) 23 telnet (terminal connection) 90 dnsix 25 SMTP 123 NTP (Network Time Protocol) 43 whois 137 netbios-dgm 65 tacacs-ds 138 netbios-ns 70 gopher 161 SNMP 79 finger 162 SNMPtrap 80 HTTP 177 XDMCP 101 hostname 434 mobile-ip 109 POP2 512 biff 110 POP3 513 Who 119 NNTP 520 RIP 179 BGP 194 IRC 515 lpd 540 uucp 543 klogin 544 kshell UDP lub TCP 7 echo (RFC 862, serwer zwraca wszystko, co wysyła klient) 9 discard (RFC 863, serwer odrzuca wszystko) 19 chargen - character generator (RFC 864, TCP generuje nieprzerwany ciąg znaków do zakończenia połączenia, UDP generuje ciąg o losowej długości) 37 time (RFC 868, czas - liczba sekund od 01-01- 1970 UTC) 53 DNS 111 Sun RPC 514 syslog 517 talk 0 zarezerwowane 133-159 nie przydzielone 1-4 nie przydzielone 160-223 zarezerwowane 5 RJE (Remote Job Entry) 224-241 nie przydzielone 11 users (active users) 242-255 nie przydzielone 15 netstart (who is up on netstart) 17 quote of the day 39 RLP (Resource Location Protocol) 75 Any private dial-out service 77 Any private RJE service 95 Sup dup protocol 102 ISO-ISAP 113 auth (authentication service) 117 UUCP path

LAN 22 USŁUGA PORT ŹRÓDŁOWY (standardowy u klienta) PORT DOCELOWY (standardowy na serwerze) TCP FTP kontrola połączenia >1023 21 FTP transmisja danych 20 (z serwera) >1023 (do klienta) FTP PASV transmisja danych >1023 20 FTP PASV transmisja danych implementowana w >1023 >1023 przeglądarkach sieciowych SSH >1023 22 telnet >1023 23 SMTP >1023 25 DNS (info o przestrzeniach adresowych i przy gubieniu >1023 53 pakietów) POP3 >1023 110 IDENT (często wykorzywane przez programy pocztowe) >1023 113 NNTP (news) >1023 119 Netbios udostępnianie plików >1023 139 SSL >1023 443 REXEC >1023 512 RLOGIN <1024 513 RSH <1024 514 SOCKS >1023 1080 Squid Proxy >1023 3128 UDP TACACS 49 49 DNS 53, >1023 53 TFTP >1023 69 NTP (Network Time Protocol) 123 123 Netbios 137, 138, >1023 137, 138 SNMP >1023 161 Syslog >1023 514 protokoły warstwy sieciowej nazwa protokołu numer protokołu IP nazwa protokołu numer protokołu IP AH 51 IP 0-255 EIGRP 88 IPINIP 94 ESP 50 NOS 4 GRE 47 OSPF 89 ICMP 1 TCP 6 IGMP 2 UDP 17 IGRP 9