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)
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.
La première fonction de ces protocoles est de fournir un port aux applications.
Port d’une connexion
Un port est un point d’accès au réseau, pour une application.
Ports privilégiés (<=1024) :
|
Ports connus (>1024) :
|
Liste complète des ports logiciels
Interface de connexion
Le port fait partie du socket (ou interface de connexion), élément de communication nécessaire aux applications pour se connecter entre elles sur un réseau :
Socket = |
|
Exemple d’utilisation des sockets dans une communication Client/Serveur HTTP.
Un socket sert d’identifiant unique pour une application sur un réseau.
Un port sert localement à identifier un processus.
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 (voir protocole TCP), 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é.
Établissement d’une connexion
Une connexion entre deux hôtes s’établit en trois étapes : c’est le three-way handshake.
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.