Professional Documents
Culture Documents
Protokołu Transportu
Połączenie logiczne
Zestawienie połączenia
Zerwanie połączenia
Niezawodne
Np. TCP
Niezawodna, Uporządkowana
Usługa Sieciowa
Przyjmijmy dowolną długość wiadomości
Przyjmijmy właściwie 100% pewność
dostarczenia przez sieć
np. niezawodna sieć pakietowa oparta na X.25
np. frame relay przy użyciu kontrolnego protokołu
LAPF
np. IEEE 802.3 przy użyciu usługi połączeniowej LLC
Usługa transportu jest protokołem dwu-
końcowym (end-to-end) pomiędzy dwoma
systemami w tej samej sieci
Zagadnienia w Prostym
Protokole Transportu
Adresowanie
Multipleksowanie
Kontrola strumienia danych
Zestawianie i zrywanie połączenia
Adresowanie
Docelowy użytkownik określony przez :
Identyfikacja użytkownika
⌧Zwykle host, port
• Nazywana gniazdem (socket) w TCP
⌧Port reprezentuje konkretną usługę transportu (TS) użytkownika
Identyfikacja jednostki transportu
⌧Zwykle tylko jedna na jednego hosta
⌧Jeśli więcej niż jedna to zwykle jedna danego typu
• Wybrać protokół transportu (TCP, UDP)
Adres hosta
⌧Podłączona karta sieciowa
⌧W internecie adres IP
Numer sieci
Szukanie Adresów
Cztery metody
Adres znany od razu
⌧np. zestaw danych karty sieciowej
Dobrze znane adresy
Serwer nazw
Wysyłanie żądania procesu na dobrze znany adres
Multipleksowanie
Wielu użytkowników używa tego samego
protokołu transportu
Użytkownicy identyfikowani przez numer portu
bądź punkt dostępu do usługi (SAP)
Multipleksować można także usługi sieciowe
np. multipleksowanie jednego wirtualnego połączenia
X.25 do kilku użytkowników protokołu transportu
⌧X.25 obciąża za czas korzystania z wirtualnego połączenia
Kontrola Strumienia Danych
Dłuższe opóźnienie pomiędzy jednostkami
transportu niż właściwy czas przesłania
Opóźnienie w wymianie informacji o kontroli
strumienia
Różne wartości opóźnień
Trudno używać pola odliczania (timeout)
Strumień musi być kontrolowany, ponieważ:
Odbiorca może nie nadążać
Jednostka transportu po stronie odbiorcy może nie
nadążać
Kończy się wypełnieniem bufora
Jak radzić sobie z
wymaganiami strumienia (1)
Nic nie robić
Segmenty które zalewają odbiorcę są odrzucane
Nadawca nie otrzyma ACK i powtórzy transmisję
⌧Dalsze zwiększenie napływu danych
Odrzucenie kolejnych segmentów
Niezręczne
Multipleksowane połączenia są kontrolowane na
jednym, zagregowanym strumieniu
Jak radzić sobie z
wymaganiami strumienia(2)
Używać protokołu przesuwającego okna o
stałym rozmiarze
Analogicznie do protokołów warstwy liniowej
Działa dobrze na stosunkowo niezawodnej sieci
⌧Nieodebranie ACK jest tratowane jako sygnał kontroli
strumienia danych
Nie działa dobrze na nieefektywnej sieci
⌧Nie można rozróżnić pomiędzy zgubionym segmentem, a
kontrolą strumienia
Użyć schemat kredytu
Schemat Kredytu
Większa kontrola w niezawodnych sieciach
Bardziej efektywna w zawodnych sieciach
Rozszczepia kontrolę strumienia i ACK
Można wysłać ACK z pozwoleniem na dalszy strumień
danych bądź bez
Każdy oktet ma numer sekwencyjny
Każdy segment ma zawarty w nagłówku numer
sekwencyjny, numer ACK i wielkość okna
Użycie Pól w Nagłówku
Kiedy wysyłamy segment, numer sekwencyjny
to numer pierwszego oktetu w tym segmencie
ACK zawiera AN=i, W=j (numer ACK, rozmiar
okna)
Wszystkie oktety do SN=i-1 są potwierdzone
Następny jest spodziewany oktet i
Zezwolenie na wysłanie dodatkowego okna W=j
oktetów
i.e. Oktety do i+j-1
Alokacja Kredytu
Perspektywy Nadania i Odbioru
Zestawianie i zrywanie
połączenia
Zezwolić by każdy koniec połączenia wiedział o
drugim końcu
Negocjacja opcjonalnych parametrów
Pociąga za sobą przypisanie zasobów jednostek
transportu
Przez wzajemne przypisanie
Diagram Stanu Połączenia
Zestawianie Połączenia
Nie Słucha
Odrzucić z RST (Reset)
Zakolejkować żądanie dopóki odpowiednia
komenda otwarcia nie zostanie wysłana
Zasygnalizować użytkownikowi pilne żądanie
May replace passive open with accept
Zrywanie Połączenia
Oba lub jeden koniec
Przez obustronne porozumienie
Nagłe zerwanie
Lub grzeczne odłączenie
Stan oczekiwania zamknięcia musi przyjmować dane
dopóki FIN nie zostanie odebrane
Zakończenie połączenia
6-14, a, b
6-14, c,d
Transfer danych
Logiczny strumień oktetów (bajtów), a nie wiadomości
(segmentów)
Oktety numerowane modulo 232
Kontrola strumienia poprzez przypisywanie kredytu od odbiorcy
w postaci ilości oktetów
Dane buforowane u nadawcy i odbiorcy
Mechanizmy TCP (2)
Zrywanie połączenia
Łagodne zamknięcie sesji
Użytkownik TCP wysyła komendę CLOSE
Jednostka transportu ustawia flagę FIN w ostatnim
wysyłanym segmencie
Nagłe zerwanie poprzez komendę ABORT
⌧Jednostka porzuca próby wysyłania i odbioru danych
⌧Segment RST wysyłany
Opcje Polityki Implementacji
Wyślij
Dostarcz
Zaakceptuj
Retransmituj
Potwierdź
Wyślij
Jeśli bez push lub close jednostka TCP nadaje
wg własnego uznania
Dane buforowane w buforze transmisji
Można tworzyć segment z paczki danych
Można oczekiwać na konkretną ilość danych
Dostarcz
W przypadku braku push, dostarcz dane wg
uznania
Można dostarczać w kolejności otrzymywania
segmentów
Można buforować dane z więcej niż jednego
segmentu
Akceptuj
Segmenty mogą nie dotrzeć w kolejności
W kolejności
Akceptuj segmenty tylko w kolejności
Odrzuć segmenty nie w kolejności
W oknach
Akceptuj wszystkie segmenty w zasięgu okna odbioru
Retransmituj
TCP trzyma kolejkę segmentów wysłanych ale
nie potwierdzonych
TCP retransmituje jeśli nie potwierdzone w
przeciągu danego czasu
Tylko pierwszy
Całą paczkę (zawartość okna)
Indywidualnie
Potwierdzenie
Natychmiastowe
Kumulacyjne
Liczniki czasu
Czas retransmisji
Czas ponowne połączenia ( reconnection)
Czas okna ( window) –maksymalny czas miedzy segmentami
ACK/kredyt
Retransmisji SYN – ponowna próba nawiązania połączenia
Licznik bezustanny – zamyka połączenie po braku potwierdzeń
segmentów
Licznik nieaktywności – zamyka połączenie gdy nie ma
segmentów z obu stron
Kontrola Przeciążeń
RFC 1122, Wymagania dla hostów internetowych
Zarządzanie licznikiem retransmisji (RTO –
retransmission timeout)
Oszacuj czas dwustronnej transmisji (RTT) poprzez obserwację
tendencji opóźnień
Ustawić czas licznika na trochę powyżej oszacowanego
Prosta średnia dla RTT
Średnia wykładnicza dla RTT
Oszacowanie wariancji RTT (algorytm Jacobsona)
⌧RTT_new=a*RTT_old + (1-a)*RTT_przybyłe, a=7/8
⌧RTO=b*RTT , b=2
⌧Odchylenie D=aD_old + (1-a)*|RTT-RTT_przybyłe|
⌧RTO= RTT + 4 * D
⌧ Co z potwierdzeniami duplikatów – trudności w określeniu RTT , i
co robić z czasem retransmisji ? Rozwiązuje to Karn -
Zarządzanie zegarami w TCP
11 – systat
19 – chargen
53 – nameserver ( DNS)
69 – tftp
Porty TCP
20 – ftp –data
21 – ftp
23 – telnet
22 – ssh
25 – smtp
53 –DNS
Porty TCP cd.
79 – finger
80 – http
110 – POP
139 – Netbios SSN
143 - IMAP
/etc/services
telnet host port
Pasywne i aktywne otwarcie połączeń TCP