This is an old revision of the document!
Table of Contents
Przypomnienie modelu warstwowego
Protokoły warstwy transportowej
Przypomnienie: skąd wiadomo jaki jest używany – https://pl.wikipedia.org/wiki/IPv4#Nag.C5.82.C3.B3wek_IP
Lista przydzielonych numerów protokołów
/etc/protocols(less /etc/protocols)
Port, połączenie
System operacyjny wybiera do jakiego programu ma trafić wiadomość na podstawie numeru portu – adresu na warstwie transportowej.
Żeby system operacyjny wiedział który proces czeka na wiadomości kierowane na konkretny port, trzeba wpierw powiązać (bind) numer portu z procesem.
Lista domyślnych portów:
/etc/services
Połączenie między dwoma programami jest identyfikowane na podstawie:
- adresu zdalnego,
- adresu lokalnego,
- protokołu,
- portu zdalnego,
- portu lokalnego.
Protokoły warstwy transportowej używają zwykle numerów portu z zakresu 0÷65535.
Ten zakres jest podzielony na porty:
- uprzywilejowane (system / well-known / privileged) – 1÷1023,
- zarejestrowane (polskie tłumaczenie?) (user / registered) – 1024 ÷ 49151,
- efemeryczne (dynamic / private / ephemeral) – 49152÷65535.
Monitorowanie bieżących połączeń
netstat [-a|-l] [-t] [-u] [-p] [-n](np.netstat -atupn)ss [-a|-l] [-t] [-u] [-p] [-n](np.ss -atupn)/proc/net/(tcp|udp|…)(np.cat /proc/net/tcp)
Testowanie łączności na warstwie aplikacji
Testowanie łączności programami netcat / nc oraz socat
Najpopularniejszy program netcat / nc ma wiele wersji, między innymi:
- busybox nc (rozpoznawanie: używasz busyboxa)
| Serwer (GNU / "oryginalny" / bb) | Serwer (BSD) | Klient | |
|---|---|---|---|
| TCP | nc -l -p 12345 | nc -l 12345 | nc 10.0.0.1 12345 |
| UDP | nc -u -l -p 12345 | nc -u -l 12345 | nc -u 10.0.0.1 12345 |
Mniej popularny, bardziej rozbudowany (i wciąż rozwijany) socat
| Serwer | Klient | |
|---|---|---|
| TCP | socat TCP-LISTEN:12345 - | socat - TCP-CONNECT:10.0.0.1:12345 |
| UDP | socat UDP-RECV:12345 - | socat - UDP-SENDTO:10.0.0.1:12345 |
| UDP | socat UDP-LISTEN:12345 - | socat - UDP:10.0.0.1:12345 |
| SCTP | socat SCTP-LISTEN:12345 - | socat - SCTP-CONNECT:10.0.0.1:12345 |
Socat nie rozróżnia wielkości liter, pozwala na skróty - np. udp-l jako udp-listen czy tcp jako tcp-connect
Adresy IPv6 podaje się w nawiasach kwadratowych (sic!), np. [::1]
Inne przykłady:
- Wyślij na port 80 adresu www.put.poznan.pl (np.
nc www.put.poznan.pl 80) tekstGET /zakończony dwoma pustymi liniami socat tcp-l:12345,reuseaddr -- Uruchom
socat tcp-l:12345,fork -, przyłącz kilka osób - Dowiedz się po co socat ma dwa argumenty:
socat tcp-l:8080,fork tcp:fc.put.poznan.pl:80
UDP
http://tools.ietf.org/html/rfc768
Nagłówek
Działanie:
- bezpołączeniowy, bezstanowy,
- brak kontroli przepływu,
- brak gwarancji dostarczenia,
- przesyła wiadomości (datagramy).
Wielkość datagramów, suma kontrolna.
Relizuje dokładnie zadania warstwy transportu w modelu ISO/OSI
Pozwala na używanie rozgłoszeń / multicastów
Protokoły / programy używające UDP: DNS, DHCP, strumieniowanie dźwięku (multimediów), gry sieciowe
TCP
- flagi - syn, ack, fin, rst [1], psh,
- numery sekwencyjne i numery potwierdzenia,
- rozmiar okna,
- opcje.
- Segment TCP
- Strumieniowy – strumień (kolejnść!) danych
- Kontrola przepływu, potwierdzenia, wielkość okna
- Buforowanie
-
- nawiązanie połączenia,
- podtrzymywanie połączenia,
- zakończenie połączenia, półzakończenie,
- zerwanie połączenia,
- Relizuje zadania warstwy transportu i sesji (!) w modelu ISO/OSI,
- na jego podstawie zdefiniowana jest warstwa transportowa w modelu TCP/IP.
Protokoły / programy używające TCP - "wszysto", np. http, ftp, ssh, ssl, …
Inne protokoły warstwy transportu
UDPlite
DCCP
SCTP