Middle
Parlez-moi de la couche de transport (transport layer) du modèle TCP/IP.
sobes.tech IA
Réponse de l'IA
Le niveau de transport TCP/IP assure la communication entre processus exécutés sur différents hôtes. Les principales tâches :
- Identification des applications/processus sur l'hôte (via les ports).
- Fourniture de services de livraison de données :
- Livraison fiable et ordonnée (TCP).
- Livraison non fiable et sans garantie (UDP).
Deux protocoles principaux :
- Protocole de Contrôle de Transmission (TCP) :
- Orienté connexion.
- Garantit la livraison des paquets, maintient l'ordre, contrôle le flux et gère la congestion.
- Utilisé pour les applications nécessitant une transmission fiable (HTTP, FTP, SMTP).
- Protocole de Datagramme Utilisateur (UDP) :
- Sans connexion.
- Ne garantit pas la livraison, l'ordre ou le contrôle de flux.
- Faible latence, adapté aux applications sensibles au temps où une petite perte de données est acceptable (DNS, VoIP, streaming vidéo).
Les segments TCP incluent des champs pour : ports source/destination, numéros de séquence, numéros d'accusé de réception, drapeaux (SYN, ACK, FIN), somme de contrôle.
Les datagrammes UDP incluent des champs pour : ports source/destination, longueur et somme de contrôle.
Ports : nombres de 16 bits utilisés pour la multiplexion/démultiplexion des données entre processus.
- Ports bien connus (0-1023) : réservés pour les services standard (80 pour HTTP, 443 pour HTTPS, 22 pour SSH).
- Ports enregistrés (1024-49151) : utilisés pour des applications privées enregistrées auprès de l'IANA.
- Ports dynamiques/privés (49152-65535) : utilisés par les clients pour les connexions sortantes.
Exemple d'établissement de connexion TCP (Three-way Handshake) :
- Le client envoie un segment avec le drapeau SYN et un numéro de séquence initial.
- Le serveur reçoit le SYN, répond avec un segment avec les drapeaux SYN et ACK, son numéro de séquence initial et un numéro d'accusé de réception égal à client_seq + 1.
- Le client reçoit le SYN+ACK, répond avec un segment avec le drapeau ACK et un numéro d'accusé de réception égal à server_seq + 1. La connexion est établie.
// Exemple de structure d'en-tête TCP (simplifiée)
struct tcp_header {
unsigned short src_port; // Port source
unsigned short dest_port; // Port destination
unsigned int seq_num; // Numéro de séquence
unsigned int ack_num; // Numéro d'accusé de réception
unsigned short flags; // Drapeaux (SYN, ACK, FIN, etc.)
// autres champs...
};
// Exemple de structure d'en-tête UDP (simplifiée)
struct udp_header {
unsigned short src_port; // Port source
unsigned short dest_port; // Port destination
unsigned short length; // Longueur du datagramme UDP
unsigned short checksum; // Somme de contrôle
};