Sobes.tech
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) :

  1. Le client envoie un segment avec le drapeau SYN et un numéro de séquence initial.
  2. 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.
  3. 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
};