Warstwa Transportowa¶
Warstwa transportowa jest odpowiedzialna za komunikację end-to-end między aplikacjami działających na urządzeniach działających w sieci.
Numer portu¶
16-bitowy identyfikator usługi/aplikacji/procesu działajacego na konkretnym urządzeniu (na konkretnym adresie IP).
Lista powszechnie znanych (well-known) portów: http://en.wikipedia.org/wiki/Well-known_ports#Well-known_ports
Domyślne porty: /etc/services
- Monitorowanie bieżących połączeń na portach:
ss
netstat
/proc/net/tcp
lub/proc/net/udp
- Testowanie łączności na portach:
netcat
/nc
socat
Protokoły Warstwy Transportowej¶
User Datagram Protocol¶
- User Datagram Protocol (UDP) – bezpołączeniowy protokół transportowy:
- Nie gwarantuje doręcznia datagramów (aka Unreliable Datagram Protocol) – użytkownik musi ją zaimplementować samemu, jeśli potrzbuje niezawodności.
- Weryfikacja integralności przez sumy kontrolne.
Nagłówek UDP: http://en.wikipedia.org/wiki/User_Datagram_Protocol#Packet_structure
- Wykorzystanie UDP:
- DHCP
- DNS
- RIP
- SNMP
- dane video, dźwięk
Transmission Control Protocol¶
Protokół sterowania transmisją (Transmission Control Protocol, TCP) – najpopularniejszy protokół transportowy.
Nagłówek TCP: http://en.wikipedia.org/wiki/Transmission_Control_Protocol#TCP_segment_structure
- Fazy protokołu:
- Nawiązanie połączenia (connection establishment) – 3-way handshake
- SYN – klient nawiązuje połączenie z segmentem, numer sekwencyjny segmenty (segment sequence number) =
n
- SYN-ACK – serwer odpowiada z numerem potwierdzenia (acknowledgement number)
n + 1
i numerem sekwencjim
- ACK – klient odpowiada z numerem sekwencji równym
m + 1
- SYN – klient nawiązuje połączenie z segmentem, numer sekwencyjny segmenty (segment sequence number) =
- Przesyłanie danych (data transfer) – numer sekwencyjny (sequence number) pozwala wykryć czy
- datagram został zgubiony (więc powinien być retrasmitowany),
- datagram dotarł w odpowiedniej kolejności,
- datagram został zduplikowany.
- Zakończenie połączenia (connection termination) – 4-way handshake
FIN – jedna ze stron wysyła komunikat zakończenia
ACK – druga strona potwierdza zakończenie
- FIN – druga strona wysyła także komunikat o zakończeniu (można
połączyć z ACK)
ACK – pierwsza strona potwierdza zakończenie
Połączenie może być półotwarte (half-open) kiedy jedna ze stron zakończyła połączenie, ale druga nie. W takim wypadku strona któ¶a zakończyła połączenie nie może wysyłać komunikatów do drugiej, podczas gdy druga może wysyłać komunikaty do pierwszej.
- Wykorzystanie TCP:
- HTTP,
- HTTPS,
- SMTP,
- POP3,
- IMAP,
- SSH,
- FTP