Sobes.tech
Middle

Mesélj a TCP/IP modell transzport rétegéről (transport layer).

sobes.tech MI

Válasz az MI-től

A TCP/IP szállítási szint biztosítja a kommunikációt különböző gazdagépek között futó folyamatok között. Fő feladatai:

  • Alkalmazások/folyamatok azonosítása a gazdagépen (portok segítségével).
  • Adatátviteli szolgáltatások nyújtása:
    • Megbízható, sorrendben történő kézbesítés (TCP).
    • Megbízhatatlan, garanciák nélküli kézbesítés (UDP).

Két fő protokoll:

  • Átviteli vezérlő protokoll (TCP):
    • Kapcsolat-orientált.
    • Garantálja a csomagok kézbesítését, fenntartja a sorrendet, ellenőrzi az áramlást és kezeli a túlterhelést.
    • Olyan alkalmazásokhoz használják, amelyek megbízható átvitelt igényelnek (HTTP, FTP, SMTP).
  • Felhasználói datagram protokoll (UDP):
    • Kapcsolat nélküli.
    • Nem garantálja a kézbesítést, sorrendet vagy az áramlás ellenőrzését.
    • Alacsony késleltetésű, időérzékeny alkalmazásokhoz alkalmas, ahol a kis adatvesztés elfogadható (DNS, VoIP, videó streaming).

A TCP szegmensek tartalmaznak mezőket a következőkhöz: forrás/cél portok, szekvenciaszámok, megerősítési számok, zászlók (SYN, ACK, FIN), ellenőrző összeg.

Az UDP datagramok mezőket tartalmaznak: forrás/cél portok, hossz, ellenőrző összeg.

Portok: 16 bites számok, amelyeket a folyamatok közötti adatok multiplexálására/demultiplexálására használnak.

  • Well-known portok (0-1023): Szabványos szolgáltatásoknak fenntartva (80 HTTP, 443 HTTPS, 22 SSH).
  • Regisztrált portok (1024-49151): Privát alkalmazások számára regisztrálva az IANA-nál.
  • Dinamikus/Privát portok (49152-65535): Kliens oldali kimenő kapcsolatokhoz.

TCP kapcsolat létesítési példa (Three-way Handshake):

  1. A kliens SYN zászlóval és kezdő szekvenciaszámmal küld egy szegmenst.
  2. A szerver megkapja a SYN-t, válaszol egy szegmensekkel, amelyekben SYN és ACK zászlók vannak, saját kezdő szekvenciaszámával és egyenlő azzal, mint a client_seq + 1.
  3. A kliens megkapja a SYN+ACK-et, válaszol egy ACK zászlóval és egyenlő azzal, mint a server_seq + 1. A kapcsolat létrejött.
// Egyszerűsített TCP fejléc szerkezet példája
struct tcp_header {
    unsigned short src_port;       // Forrás port
    unsigned short dest_port;      // Cél port
    unsigned int   seq_num;        // Szekvenciaszám
    unsigned int   ack_num;        // Megerősítési szám
    unsigned short flags;          // Zászlók (SYN, ACK, FIN stb.)
    // egyéb mezők...
};
// Egyszerűsített UDP fejléc szerkezet példája
struct udp_header {
    unsigned short src_port;       // Forrás port
    unsigned short dest_port;      // Cél port
    unsigned short length;         // UDP datagram hossza
    unsigned short checksum;       // Ellenőrző összeg
};