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 sekwencji m
    • ACK – klient odpowiada z numerem sekwencji równym m + 1
http://upload.wikimedia.org/wikipedia/commons/a/a1/TCP_establishment.png
  • 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

http://upload.wikimedia.org/wikipedia/commons/thumb/5/55/TCP_CLOSE.svg/500px-TCP_CLOSE.svg.png

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

Ankieta