Intersieci – stos protokołów,
protokoły warstwy
transportowej
TCP/IP - cd.
Ryszard Wiatr
Przedmiot: Sieci komputerowe
Wykład 7
Zawodność sprzętu
Przeciążenie sieci
Gubienie i przychodzenie pakietów z opóźnieniem
Uszkodzenie danych
Powielanie danych i błędy w kolejności ich napływania
Powody istnienia stosu protokołów, zamiast jednego (ogromna ilość
problemów podczas komunikowania się komputerów poprzez sieć)”
Warstwa 1
Warstwa 2
....
Warstwa n
Warstwa 1
Warstwa 2
....
Warstwa n
Sieć
Nadawca
Odbiorca
Model warstwowy oprogramowania protokołów
Warstwa protokołów
wysokiego poziomu
Warstwa interfejsów
sieciowych
Protokół 1
Moduł IP
Warstwa
Internet Protocol
Protokół 2
Protokół 3
Interfejs 1
Interfejs 2
Interfejs 3
Podział koncepcyjny
Organizacja oprogramowania
Porównanie modelu warstwowego i obrazu organizacji wielu interfejsów
sieciowych pod IP i wielu protokołów nad nim
inne...
Warstwa IP
Interfejs
Nadawca
Odbiorca
inne...
Warstwa IP
Warstwa IP
Warstwa IP
Interfejs
Interfejs
Interfejs
Sieć 1
Sieć 2
Sieć 3
Ścieżka wiadomości w Internecie od nadawcy do odbiorcy
Komputery pośrednie przesyłają datagram tylko do warstwy oprogramowania IP
Programy użytkowe
Reprezentacja danych
Sesja
Transport
Sieć
Łącze
(interfejs sprzętowy)
Połączenie przy pomocy
fizycznego sprzętu
7
6
5
4
3
2
1
Warstwa
Działanie
Zależności oprogramowania protokołów. 7 -wartwowy model ISO
Programy
użytkowe
Transport
Intersieć
Interfejs sieciowy
Sprzęt
Warstwy koncepcyjne
Obiekty przesyłane
między warstwami
Komunikaty lub strumienie
Pakiety protokołów transportu
Datagramy IP
Ramka sieci fizycznej
Cztery koncepcyjne warstwy oprogramowania TCP/IP i format obiektów przesyłanych między nimi
Programy
użytkowe
Transport
Intersieć
Interfejs sieciowy
Węzeł A
Programy
użytkowe
Transport
Intersieć
Interfejs sieciowy
Węzeł B
Sieć fizyczna
Identyczny
komunikat
Identyczny
pakiet
Identyczny
datagram
Identyczna
ramka
n-ta warstwa w węźle B odbiera dokładnie te same obiekty, które wysłała n-ta warstwa węźle A
Zasada podziału na warstwy
Programy
użytkowe
Transport
Intersieć
Interfejs sieciowy
Węzeł A
Programy
użytkowe
Transport
Intersieć
Interfejs sieciowy
Węzeł B
Sieć fizyczna 1
Identyczny
komunikat
Identyczny
pakiet
Intersieć
Intersieć
Sieć fizyczna 2
Ruter
Ident. datagram
Ident. datagram
Ident. ramka
Ident. ramka
Transport
Interfejs sieciowy
Protokół 1
Moduł IP
Intersieć
Protokół 2
Protokół 3
Interfejs 1
Interfejs 2
Interfejs 3
Podział koncepcyjny
Organizacja oprogramowania
Połączenia
wewnątrzsieciowe
Połączenie
międzypunktowe
(sieć
wewnętrzna
)
Umiejscowienie protokołu bezpośrednich połączeń międzypunktowych, gdy
IP traktuje ich zestaw jako pojedynczą sieć IP
Programy
użytkowe
Transport
Intersieć
Interfejs sieciowy
Sprzęt
Warstwa koncepcyjna
Granica
Oprogramowanie poza systemem operacyjnym
Oprogramowanie wewnątrz systemu operacyjnego
Tylko adresy IP
Adresy fizyczne
Związek pomiędzy koncepcyjnym podziałem na warstwy a granicami dla systemu operacyjnego
i adresami protokołów wysokiego poziomu
Moduł IP
Moduł ARP
Moduł RARP
Demultipleksowanie
na podstawie typu ramki
Przybycie ramki
Demultipleksowanie przychodzących ramek na podstawie pola typu
znajdującego się w nagłówku ramki
Protokół ICMP
Protokół UDP
Protokół TCP
Moduł IP
Przybycie datagramu
Demultipleksowanie w warstwie Internetu. Oprogramowanie IP wybiera
odpowiednią procedurę obsługi na podstawie znajdującego się w nagłówku
datagramu pola typu protokołu
Protokół EGP
Protokół UDP (User Datagram Protocol)
Warstwa aplikacji
Warstwa dostępu
do sieci
Warstwa transportowa
Warstwa sieciowa
(Internetu)
Telnet
FTP
HTTP
SMTP
POP
DNS
NFS
SNMP
RIP
TCP
UDP
IP
ICMP
ARP
CSMA/CD
Ethernet
SLIP
PPP
Token Ring
FDDI
inne…
UDP zapewnie podstawowy mechanizm wykorzystywany przez programy użytkowe
przy przesyłaniu datagramów do innych programów użytkowych (portów)
Port
- abstrakcyjny punkt docelowy identyfikowany za pomocą dodatniej liczby całkowitej
0 16 31
Dane
............
Długość komunikatu UDP
Suma kontrolna UDP
Port UDP nadawcy
Port UDP odbiorcy
Format komunikatów UDP
0 8 16 31
Adres IP nadawcy
Adres IP odbiorcy
Długość UDP
Zero
Proto
Dwanaście oktetów pseudonagłówka używanego przy wyliczaniu sumy kontrolnej UDP
Program użytkowy
Datagram użytkownika (UDP)
Intersieć (IP)
Interfejs sieci
Podział logiczny
Logiczny podział UDP na warstwy między programem użytkowym i IP
nagłówek ramki
obszar danych ramki
nagłówek IP
obszar danych IP
nagłówek UDP
obszar danych UDP
Kapsułkowanie datagramu UDP w datagramie IP przed wysłaniem przez intersieć.
Kapsułkowanie w ramce - dla każdej pojedynczej sieci
Port 1
Port 2
Port 3
UDP: demultipleksowanie
w zależności od portu
Warstwa IP
Nadchodzący datagram UDP
Demultipleksowanie w warstwie bezpośrednio powyżej IP.
UDP wybiera odpowiedni port odbiorcy na podstawie numeru portu odbiorcy
znajdującego się w nadchodzącym datagramie
Numer Nazwa Nazwa w Unix
Opis
0
7
9
11
13
15
17
19
37
42
43
53
67
68
69
111
123
-
-
-
-
-
-
-
ECHO
DISCARD
USERS
DAYTIME
-
QUOTE
CHARGEN
TIME
NAMESERVER
NICNAME
DOMAIN
BOOTPS
BOOTPC
TFTP
SUNRPC
NTP
-
-
-
-
-
-
-
echo
discard
systat
daytime
netstat
qotd
chargen
time
name
whois
nameserver
bootps
bootpc
tftp
sunrpc
ntp
snmp
snmp-trap
bif
who
syslog
timed
zarezerwowane
echo
porzucanie
aktywni użytkownicy
pora dnia
kto pracuje lub netstat
cytat dnia
generator znaków
czas
serwer nazw maszyn
kto jest
serwer nazw
serwer ładowania systemu
klient ładowania systemu
trivial file transfer
RPC firmy Sun Microsystems
Network Time Protocol
monitor sieci SNMP
pułapki snmp
Unix comsat
demon rwho systemu Unix
kronika systemu
demon czasu
Przykład przyporządkowania portów usługom
Warstwa transportowa
modelu ma zapewnić:
usługę niezawodnego dostarczania
kontrolę przepływu
Niezawodne dostarczanie zapewnia program komunikacyjny (protokół)
warstwy transportowej poprzez:
przesyłanie strumieniami
łączenie w obwód wirtualny
przesyłanie z użyciem buforów
brak strukturalizacji strumienia
połączenie w pełni dwukierunkowe
Komunikaty sieciowe
Wydarzenia
po stronie nadawcy
Wydarzenia
po stronie odbiorcy
Wysłanie pakietu 1
Odebranie ACK 1
Wysłanie pakietu 2
Odebranie ACK 2
Odebranie pakietu 1
Wysłanie ACK 1
Odebranie pakietu 2
Wysłanie ACK 2
Protokół stosujący pozytywne potwierdzanie z retransmisją.
Nadawca czeka na potwierdzenie dla każdego wysłanego pakietu
Pozytywne potwierdzanie z retransmisją
Komunikaty sieciowe
Wydarzenia
po stronie nadawcy
Wydarzenia
po stronie odbiorcy
Wysłanie pakietu 1
Uruchomienie zegara
Przekroczenie
limitu czasowego
Odebranie ACK 1
Skasowanie zegara
Spodziewane
przybycie pakietu
Powinno zostać
wysłane ACK
Odebranie pakietu 1
Wysłanie ACK 1
Przekroczenie limitów czasu i retransmisja pojawiające się przy utracie pakietu
W tym momencie normalnie
przybyłby komunikat ACK
Retransmisja pakietu 1
Uruchomienie zegara
1
2
3
4
5
6
7
8
9
10
.....
1
2
3
4
5
6
7
8
9
10
.....
Okno początkowe
Przesuwanie się okna
Protokół z przesuwającym się oknem z 8 pakietami wewnątrz okna
Okno przesuwa się tak, że pakiet 9 może zostać wysłany, gdy przyszło potwierdzenie
dotyczące pakietu 1
Pakiety, dla których nie było potwierdzenia są retransmitowane
Komunikaty sieciowe
Wydarzenia
po stronie nadawcy
Wydarzenia
po stronie odbiorcy
Wysłanie pakietu 1
Odebranie ACK 1
Odebranie ACK 3
Odebranie pakietu 1
Wysłanie ACK 1
Odebranie pakietu 2
Wysłanie ACK 2
Przesuwanie 3 pakietów przy pomocy protokołu z przesuwającym się oknem.
Nadawca może przesłać wszystkie pakiety z okna bez oczekiwania na potwierdzenie
Wysłanie pakietu 2
Wysłanie pakietu 3
Odebranie ACK 2
Odebranie pakietu 3
Wysłanie ACK 3
Program użytkowy
Niezawodne strumienie (TCP)
Datagramy użytkownika (UDP)
Internet (IP)
Interfejs sieciowy
Model podziału na warstwy z uwidocznionym miejscem na UDP i TCP.
TCP - usługa przesyłania niezawdonymi strumieniami
UDP - usługa zawodnego dostarczania datagramów
Specyfikuje format danych przesyłanych między komputerami
Specyfikuje format potwierdzeń wymienianych między komputerami
w celu uzyskania niezawodnego przesyłania
Opisuje procedury stosowane w celu upewnienia się, że dane dotarły do celu
Wyznacza sposób, w jaki oprogramowanie TCP rozróżnia odbiorców na danej maszynie
Wyznacza sposób, w jaki komunikające się maszyny radzą sobie z błędami, takimi jak
utrata pakietu lub jego zduplikowanie
Wyznacza sposób, w jaki dwa komputery inicjują przesyłanie za pomocą strumienia TCP
i sposób zgadzania się na jego zakończenie
Protokół TCP:
Podstawowym pojęciem protokołu TCP jest
połączenie
Połączenie jest identyfikowane przez parę punktów końcowych
Np. (18.26.0.36:1069) oraz (128.10.2.3:25)
Punkt końcowy
to para (adres IP : port).
Np. (18.26.0.36:1069)
Programy użytkowe na obu końcach połączenia dokonują:
na jednym końcu
funkcję pasywnego otwacia
- informacja dla
systemu operacyjnego, że akceptuje się połączenie, które ma nastąpić.
System operacyjny przypisuje połaczeniu numer portu
na drugim końcu
funkcję aktywnego otwarcia
- informacją dla systemu
operacyjnego inicjująca skontaktowanie się obydwu modułów TCP.
1 2 3 4 5 6 7 8 9 10 11 ....
Przykład przesuwającego się okna TCP.
Oktety 1 i 2 wysłane i potwierdzone
Oktety 3 - 6 wysłane ale nie potwierdzone
Oktety 7 - 9 nie wysłane ale będą wysłane niezwłocznie
Oktety od 10 nie mogą być wysłane przed przesunięciem okna
Port nadawcy
Port odbiorcy
0 4 10 16 24 32
Numer porządkowy
Numer potwierdzenia
Okno
Dł. nag
Bity kodu
zarezerwowane
Suma kontrolna
Wskaźnik pilnych danych
Opcje (jeżeli jakieś)
Uzupełnienie
Dane
..............
Format segmentu TCP z nagłówkiem
Segmenty używane do ustanawiania połączenia, przenoszenia danych i potwierdzeń
Porty identyfikują programy użytkowe na końcach połączenia
Numer porządkowy wyznacza pozycję danych segmentu w strumienia bajtów nadawcy
Numer potwierdzenia wyznacza numer oktetu, który nad. spodziewa się otrzymać w następnej kolejności
Dł. nagłówka określa długość nagłówka segmentu mierzoną w wielokrotnościach 32 bitów
Okno to propozycja TCP, ile danych może przyjąć - rozmiar bufora, liczba 16-bitowa
Bity pola KOD z nagłówka TCP
Bity (od lewej do prawej)
Znaczenie, gdy bit jest ustawiony
URG
ACK
PSH
RST
SYN
FIN
Wskaźnik pilności jest istotny
Pole potwierdzenia jest istotne
Ten segment stanowi prośbę o wypchnięcie
Skasuj połączenie
Zsynchronizuj numery początkowe
Koniec strumienia bajtów u nadawcy
0 8 16 24 31
Adres IP nadawcy
Adres IP odbiorcy
Zero
Protokół
Długość TCP
Format pseudonagłówka używanego do obliczania sumy kontrolnej TCP
Po stronie odbiorcy odpowiednie informacje są wyciągane z datagramu IP,
który przenosił segment
Komunikaty sieciowe
Wydarzenia w węźle 1
Wydarzenia w węźle 2
Wysłanie SYN nr = x
Odebranie segmentu
z SYN+ACK
Wysłanie ACK y + 1
Odebranie segmentu SYN
Wysłanie SYN nr = y, ACK x + 1
Odebranie segmentu ACK
3-etapowa wymiana komunikatów przy ustanawianiu połączenia.
Segmenty z SYN przenoszą informacje o początkowym numerze porządkowym
Ustanowienie połączenia TCP
Zamykanie połączenia TCP
Komunikaty sieciowe
Wydarzenia w węźle 1
Wydarzenia w węźle 2
(Program użytkowy
zamyka połączenie)
Wysłanie FIN nr=x
Odebranie segmentu ACK
Wysłanie ACK y + 1
Odebranie segmentu FIN
Wysłanie ACK x + 1
(poinformowanie programu
użytkowego)
Odebranie segmentu ACK
Odebranie segmentu
z SYN + ACK
(program użytkowy zamyka
połączenie)
Wysłanie FIN nr=y, ACK x+1
Trójstopniowa wymiana komuniakató przy zamykaniu połączenia.
Węzeł, który odbiera pierwszy segment FIN, potwierdza go natychmiast, a następnie czeka
do momentu wysłania przez siebie drugiego segmentu FIN
ZAMKNIĘTE
NASŁUCHIWANIE
SYN ODEBRANY
SYN WYSŁANY
USTANOWIONE
CZEKANIE NA ZAMKNĘCIE
OSTATNIE ACK
ZAMYKANIE
FIN -
1. OCZEKIWANIE
FIN -
2. OCZEKIWANIE
CZEKANIE NA
SPÓŹNIONYCH
Cokolwiek / kasowanie
początek
Pasywne otwarcie
zamknięcie
Aktywne otwarcie / syn
syn / syn + ack
kasowanie
send / syn
syn / syn + ack
ack
Zamknij / fin
Zamknij / fin
syn / syn + ack
fin / ack
Zamknij / fin
ack /
ack /
ack /
fin / ack
fin - ack / ack
fin - ack / ack
Zamknij /
przekroczenie czasu
/ reset
Przekroczenie czasu po upłynięciu
2 czasów życia segmentu
Automat skończony dla TCP
Każdy punkt końcowy zaczyna w stanie Zamknięte. Etykiety przejść pokazują wartość na wejściu
powodującą przejście, po której następuje wartość wysyłana na wyjście, jeżeli jakaś jest wysyłana
Dziesiętnie słowo kluczowe słowo kl. w Unix Opis
0
1
5
7
9
11
13
15
17
19
20
21
23
25
37
42
43
53
77
79
93
95
101
-
TCPMUX
RJE
ECHO
DISCARD
USERS
DAYTIME
-
QUOTE
CHARGEN
FTP-DATA
FTP
TELNET
SMTP
TIME
NAMESERVER
NICNAME
DOMAIN
-
FINGER
DCP
SUBDUP
HOSTNAME
-
-
-
echo
discard
systat
daytime
netstat
qotd
chargen
ftp-data
ftp
telnet
smtp
time
name
whois
nameserver
rje
finger
dcp
subdup
hostnames
zarezerwowane
wielokrotne XOR dla TCP
pozycja dla zadania z odległej maszyny
echo
usuń
aktywni użytkownicy
godzina
program podający stan sieci
cytat dnia
generator znaków
File Transfer Protocol (dane)
File Transfer Protocol
połączenie terminalowe
Simple Mail Transport Protocol
czas
serwer nazw węzłów
kto jest
Domain Name Server
dowolna prywatna usługa RJE
finger
Device Control Protocol
protokół SUPDUP
serwer nazw węzłów NIC
Przykłady obecnie przypisanych numerów portów TCP