Couche Transport

Dans le modèle TCP/IP, la couche transport correspond à la couche 4 du modèle OSI.

Unité d’information traitée : segment (TCP) –  datagramme (UDP)

Principales fonctionnalités :

  • Mode de connexion : 2 modes existent : connecté (TCP, …), non connecté (UDP, …)
  • Connexion de bout en bout
  • Connectabilité et contrôle de flux

Objectif :

Transfert de blocs d’octets entre processus

 

Principaux protocoles

  • TCP (Transport Control Protocol) conditionne les informations à transmettre en paquets de données et les transporte de bout en bout, en veillant à ce que tout ce qui est envoyé par un ordinateur arrive à son destinataire, indépendamment des réseaux traversés et de manière totalement transparente pour l’application.
  • UDP (User Datagram Protocol) permet la transmission de données de manière très simple entre deux entités.

Mais aussi :
DCCP (Datagram Congestion Control Protocol)
SPX (Sequenced packet exchange)
SCTP (Stream Control Transmission Protocol)
TCAP (Transaction Capabilities Application Part)

La première fonction de ces protocoles est de fournir un port aux applicatifs. Le port fait partie du socket, élément de communication nécessaire aux applicatifs pour se connecter entre elles sur un réseau :

  • un protocole (TCP)
  • une adresse IP destination
  • une adresse IP source
  • un port source
  • un port destination

Exemple d’utilisation des sockets dans une communication Client/Serveur HTTP.

Port d’une connexion

Un port est un point d’accès au réseau, pour une application.

Ports privilégiés (<=1024) :

  • 22 : ssh
  • 23 : telnet
  • 80 : http
  • 110 : pop3
  • 143 : imap

Ports connus (>1024) :

  • 8080 : alternate http,
  • 6000 : serveur X,
  • 25565 : minecraft

Liste complète des ports logiciels

Un port peut avoir plusieurs états :

  • Inexistant : aucune communication possible
  • LISTEN : en attente d’une connexion
  • ESTABLISHED : en communication
  • TIME_WAIT : fermeture de la connexion

 

Protocole UDP

Entête UDP

  • Port Source (16 bits) : indique depuis quel port le paquet a été envoyé.
  • Port de Destination (16 bits) : indique à quel port le paquet doit être envoyé.
  • Longueur (16 bits) : indique la longueur totale (exprimée en octets) du segment UDP (entête et données). La longueur minimale est donc de 8 octets (taille de l’entête).
  • Somme de contrôle (16 bits) : celle-ci permet de s’assurer de l’intégrité du paquet reçu quand elle est différente de zéro. Elle est calculée sur l’ensemble de l’entête UDP et des données, mais aussi sur un pseudo en-tête (extrait de l’entête IP)

UDP (User Datagram Protocol) fourni aux application jusqu’à 65534 points d’accès au réseau.

Le rôle de ce protocole est de permettre la transmission de données de manière très simple entre deux entités, chacune étant définie par une adresse IP et un numéro de port. Aucune communication préalable n’est requise pour établir la connexion : UDP utilise un mode de transmission sans connexion → service « non fiable ».

L’intégrité des données est assurée par une somme de contrôle sur l’en-tête. L’utilisation de cette somme est cependant facultative en IPv4 mais obligatoire avec IPv6. Si un hôte n’a pas calculé la somme de contrôle d’un datagramme émis, la valeur de celle-ci est fixée à zéro. La somme de contrôle inclut également les adresses IP de la source et de la destination.

À cause de l’absence de mécanisme de handshaking, ce protocole expose le programme qui l’utilise aux problèmes éventuels de fiabilité du réseau ; ainsi, il n’existe pas de garantie de protection quant à la livraison, l’ordre d’arrivée, ou la duplication éventuelle des datagrammes. UDP est donc adapté à un usage pour lequel la détection et la correction d’erreurs ne sont pas nécessaires, ou sont effectuées directement par l’application :

  • protocoles simples de type requête-réponse tels le DNS ;
  • usages sans pile de protocoles complète, tels DHCP et le protocole simplifié de transferts de fichiers ;
  • applications de streaming (La télévision IP, par exemple) ;
  • applications en temps réel (voix sur IP, les jeux en ligne, …).

La nature du protocole UDP le rend utile pour transmettre rapidement de petites quantités de données, depuis un serveur vers de nombreux clients ou bien dans des cas où la perte éventuelle d’un datagramme est préférée à l’attente de sa retransmission.

UDP est un service non fiable.

 

Protocole TCP

En plus de celles d’UDP, TCP rempli les fonctions suivantes :

  • détection et tentative de correction des pertes et duplications ;
  • signalement des erreurs ;
  • livraison dans l’ordre d’émission ;
  • contrôle de flux.

TCP est un service fiable.

Entête TCP

L’entête TCP de chaque segment contient :

  • Port Source (16 bits) : indique depuis quel port le paquet a été envoyé.
  • Port de Destination (16 bits) : indique à quel port le paquet doit être envoyé.
  • Numéro de séquence (seq) (32 bits) : numéro de séquence du premier octet de ce segment
  • Numéro d’acquittement (ack) (32 bits) : numéro de séquence du prochain octet attendu
  • 6 indicateurs ou Flags (6 bits) :
    • URG : signale la présence de données urgentes
    • ACK (acknowledgement) : signale que le paquet est un accusé de réception
    • PSH (push) : données à envoyer tout de suite
    • RST (reset) : rupture anormale de la connexion
    • SYN : demande de synchronisation ou établissement de connexion
    • FIN : demande la fin de la connexion
  • Longueur (ou fenêtre) (16 bits) : indique la longueur totale (exprimée en octets) du segment (entête et données). La longueur minimale est donc de 8 octets (taille de l’entête).
  • Somme de contrôle (16 bits) : celle-ci permet de s’assurer de l’intégrité du paquet reçu quand elle est différente de zéro. Elle est calculée sur l’ensemble de l’entête et des données, mais aussi sur un pseudo en-tête (extrait de l’entête IP)

 

 

Établissement d’une connexion

Une connexion entre deux hôtes s’établit en trois étapes : c’est le three-way handshake. Dès la connexion, on définit les numéros de séquence que l’on utilisera pour le transfert de données TCP.

  1. SYN : Le client qui désire établir une connexion avec un serveur va envoyer un premier paquet SYN (synchronized) au serveur. Le numéro de séquence de ce paquet est un nombre aléatoire x.
  2. SYN+ACK : Le serveur va répondre au client à l’aide d’un paquet SYN+ACK (synchronize, acknowledge). Le numéro du ack est égal au numéro de séquence du paquet précédent incrémenté de un (x + 1) tandis que le numéro de séquence du paquet SYN+ACK est un nombre aléatoire y.
  3. ACK : Pour terminer, le client va envoyer un paquet ACK au serveur qui va servir d’accusé de réception. Le numéro de séquence de ce paquet est défini selon la valeur de l’acquittement reçu précédemment (par exemple : x + 1) et le numéro du ack est égal au numéro de séquence du paquet précédent (SYN+ACK) incrémenté de un (y + 1).

Une fois le three-way handshake effectué, le client et le serveur ont reçu un acquittement de la connexion. Les étapes 1 et 2 définissent le numéro de séquence pour la communication du client au serveur et les étapes 2 et 3 définissent le numéro de séquence pour la communication dans l’autre sens. Une communication full-duplex est maintenant établie entre le client et le serveur.

 

Transfert de données

Pendant la phase de transferts de données, la robustesse et la fiabilité sont assurés, entre autre, par :

  • les numéros de séquence (seq) qui permettent d’ordonner les segments TCP reçus et de détecter les données perdues,
  • les sommes de contrôle permettent la détection d’erreurs,
  • les acquittements (ack) ainsi que les temporisations permettent la détection des segments perdus ou retardés.

Vous aimerez aussi...

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *