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):
- A kliens SYN zászlóval és kezdő szekvenciaszámmal küld egy szegmenst.
- 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.
- 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
};