Fondement Des Réseaux - Chapitre 4 PDF
Fondement Des Réseaux - Chapitre 4 PDF
Fondement Des Réseaux - Chapitre 4 PDF
Enseignants : Azer ZAIRI - Ghazi BENJEDIDIA – Habib CHAKCHOUK – Hassen BEN AYED
2
Chapitre 4 : La couche transport Révision : Février 2018
La couche transport ajoute un en-tête contenant des informations d’identification des segments
permettant ainsi aux différents protocoles de couche transport d'exécuter des fonctions diverses
de gestion des communications de données.
2.3 Choix du protocole de couche transport pour une
application
La couche de transport peut utiliser deux protocoles : Le protocole TCP (Transmission Control Protocol)
et le protocole UDP (User Datagram Protocol). TCP est un protocole fiable, orienté connexion,
permettant donc l’acheminement sans erreur de segments. Son rôle est de fragmenter le message à
transmettre de manière à pouvoir le faire passer sur la couche réseau. À la destination, le protocole
TCP reconstitue dans l’ordre les fragments reçus pour reconstruire le message initial. TCP s’occupe
également du contrôle de flux de la connexion, en échangeant des signaux de contrôle entre l’émetteur
et le destinataire.
UDP est, par contre, un protocole plus simple que TCP : il n'est pas fiable et sans connexion. Il
est utilisé dans le cas où on n’a pas besoin ni du contrôle de flux, ni de la conservation de l’ordre
des segments.
En fonction des besoins des applications, un ou deux de ces protocoles de transport peuvent
être utilisés. Les développeurs sont chargés de déterminer quel type de protocole de transport
est approprié en fonction des exigences des applications et des systèmes utilisés.
Enseignants : Azer ZAIRI - Ghazi BENJEDIDIA – Habib CHAKCHOUK – Hassen BEN AYED
3
Chapitre 4 : La couche transport Révision : Février 2018
Enseignants : Azer ZAIRI - Ghazi BENJEDIDIA – Habib CHAKCHOUK – Hassen BEN AYED
4
Chapitre 4 : La couche transport Révision : Février 2018
Le protocole TCP est utilisé à chaque fois qu'on a une grande quantité d'information à
transmettre, ce qui nécessite sa subdivision en plusieurs segments. Une fois ces segments sont
créés il faut donc les numéroté (numéro de séquence) et vérifier s'ils sont bien arrivés à la
destination (accusé de réception). Par exemple TCP est utilisé par les navigateurs Web, les
messageries et les applications de transfert de fichiers.
Remarque : la mise à jour des informations d'état nécessite des ressources qui ne sont pas nécessaires
pour un protocole sans état, tel que le protocole UDP. Ainsi, le protocole TCP implique une surcharge
pour bénéficier de ces fonctionnalités. Car, chaque segment TCP utilise 20 octets dans l'en-tête pour
encapsuler les données de la couche application. Par contre, un segment UDP, n'a que 8 octets de
surcharge
Enseignants : Azer ZAIRI - Ghazi BENJEDIDIA – Habib CHAKCHOUK – Hassen BEN AYED
5
Chapitre 4 : La couche transport Révision : Février 2018
• Acheminement non fiable : le protocole UDP ne fournit pas de services garantissant que les
données sont acheminées de façon fiable. Il n'existe pas de processus dans le protocole UDP
permettant de faire retransmettre à l'expéditeur les données perdues ou endommagées.
• Aucune reconstitution ordonnée des données : parfois, les données sont reçues dans un
ordre différent de celui dans lequel elles ont été envoyées. Le protocole UDP n'offre aucun
mécanisme permettant de réorganiser les données dans leur ordre initial. Les données sont
simplement remises à l'application dans l'ordre où elles arrivent.
• Aucun contrôle de flux : le protocole UDP ne propose aucun service permettant de contrôler
la quantité de données envoyées par la source pour éviter de submerger le périphérique de
destination. La source envoie les données. Si les ressources sur l'hôte de destination sont
surexploitées, l'hôte de destination abandonne généralement les données envoyées jusqu'à
ce que des ressources soient disponibles. Contrairement au protocole TCP, le protocole UDP
ne fournit aucun mécanisme permettant de retransmettre automatiquement les données
abandonnées.
Remarque : Les fonctionnalités manquantes du protocole UDP peuvent être accomplies par les
applications qui lui font appel. Par exemple les concepteurs et les développeurs qui souhaitent utiliser
UDP, doivent prévoir des mécanismes de réorganisation des segments, de contrôle de flux et de
l'acquittement des segments
Enseignants : Azer ZAIRI - Ghazi BENJEDIDIA – Habib CHAKCHOUK – Hassen BEN AYED
6
Chapitre 4 : La couche transport Révision : Février 2018
4. COMMUNICATION TCP
4.1 Fiabilité des transferts
Le protocole TCP permet d'assurer le transfert des données de façon fiable, grâce aux sessions
orientées connexion. Cette connexion rend possible le suivi d'une session ou d'un flux de
communication entre les hôtes. Ce processus veille à ce que chaque hôte soit notifié du flux de
communication et qu'il y soit préparé. Une conversation TCP nécessite l'établissement d'une
session entre les hôtes dans les deux directions.
Enseignants : Azer ZAIRI - Ghazi BENJEDIDIA – Habib CHAKCHOUK – Hassen BEN AYED
7
Chapitre 4 : La couche transport Révision : Février 2018
http://img-19.ccm2.net/8LN9qYkfgHxa9215Ae8fkoXb8mc=/96f8f11102134c3f89619acf974edbd3/ccm-
encyclopedia/internet-images-ack1.gif
http://img-
19.ccm2.net/O5nIqBgj7gsl72KmPK9UD2XDmac=/9bd100e404e342d08b0df3d12ccd037c/ccm-
encyclopedia/internet-images-ack2.gif
Toutefois, si le segment n'est pas perdu et qu'il arrive tout de même à destination, la machine
réceptrice saura grâce au numéro d'ordre qu'il s'agit d'un doublon et ne conservera que le dernier
segment arrivé à destination.
Remarque : Les accusés de réception et les retransmissions des segments perdus ou mal reçus,
ainsi que le suivi des segments non acquittés provoquent une surcharge du protocole TCP. En
plus, l'établissement et la fermeture des sessions crée une surcharge supplémentaire.
4.2 Établissement d'une connexion TCP
Le protocole TCP est orienté connexion, c'est à dire lorsque deux hôtes communiquent à l'aide
du protocole TCP, une connexion est établie avant que les données ne puissent être échangées.
Cette ouverture de session s'effectue en trois étapes : La première étape de la connexion
nécessite la synchronisation. La deuxième étape consiste à accuser réception de la requête de
synchronisation initiale et à synchroniser les paramètres de connexion dans la direction
opposée. La troisième étape de connexion consiste à envoyer un accusé réception indiquant à
la destination que la connexion peut être établie des deux côtés. Ces trois étapes d'ouverture de
Enseignants : Azer ZAIRI - Ghazi BENJEDIDIA – Habib CHAKCHOUK – Hassen BEN AYED
8
Chapitre 4 : La couche transport Révision : Février 2018
connexion sont connues parfois sous le nom de « handshaking » (poignée de main). En effet et
dans certaines cultures, lorsque deux personnes se rencontrent, elles se saluent en se serrant la
main. Le fait de se serrer la main est perçu par les deux personnes comme un signe amical.
D'une certaine manière, il en va de même pour les connexions sur le réseau :
• Le hôte initiateur de la connexion réalise une demande d''ouverture de la session, par un
appel système « connect », en envoyant un segment dont le bit SYN est activé pour
informer le deuxième hôte de son ISN (Initial Sequence Numbers) concernant les
données qu'il lui enverra durant la connexion. Généralement, ce segment TCP ne
contient pas de données, juste l'en-tête IP, l'en-tête TCP et des options TCP.
• Le deuxième hôte doit alors acquitter (ACK) la demande du premier hôte et aussi lui
indiquer son propre ISN (pour les données qu'il lui enverra). Il envoi donc un seul
segment en positionnant à un les bits SYN et ACK.
• Le premier hôte à son tour doit acquitter le segment « SYN » du deuxième hôte.
Une fois la connexion est ouverte, l'échange de données est possible. Elle peut être fermée à
tout moment par l'une ou l'autre des extrémités.
Remarque : La valeur initiale du numéro d'ordre, appelée ISN (Initial Sequence Number), est choisie
de façon aléatoire et sert à ordonner le suivi des segments de données entre les deux hôtes
communicants. L'ISN est incrémenté de un pour chaque octet de données envoyé.
Enseignants : Azer ZAIRI - Ghazi BENJEDIDIA – Habib CHAKCHOUK – Hassen BEN AYED
9
Chapitre 4 : La couche transport Révision : Février 2018
Étape 3 : Après avoir fini sa transmission des données, le deuxième hôte envoie un segment
FIN au client pour mettre fin à la session, dans l'autre sens (du deuxième hôte vers le premier).
Étape 4 : le premier hôte répond à l'aide d'un segment ACK pour accuser réception du segment
FIN envoyé par l'autre extrémité. Ainsi la connexion est totalement fermée.
Remarque : Entre les étapes 2 et 3, un flot de données peut encore circuler dans le sens
extrémité effectuant la terminaison passive vers l'autre, on parle alors de demi-fermeture [half-
close].
4.4 Fiabilité du protocole TCP
Pendant le transfert de données, certains mécanismes clefs permettent d'assurer la fiabilité de
TCP. En particulier, les numéros de séquence sont utilisés afin 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, et les acquittements ainsi que les temporisations permettent la détection des segments
perdus ou retardés.
Enseignants : Azer ZAIRI - Ghazi BENJEDIDIA – Habib CHAKCHOUK – Hassen BEN AYED
10
Chapitre 4 : La couche transport Révision : Février 2018
le nombre relatif d'octets qui ont été transmis dans cette session, y compris les octets dans le
segment actuel. Tandis que le numéro d'acquittement représente le numéro de séquence du
prochain octet attendu à la réception. C'est ce que l'on appelle un accusé de réception
prévisionnel. L'émetteur est informé que le destinataire a reçu tous les octets de ce flux de
données jusqu'à l'octet avant celui indiqué par le numéro ACK. Ainsi, l'hôte expéditeur doit
envoyer un segment qui utilise un numéro d'ordre égal au numéro ACK.
Enseignants : Azer ZAIRI - Ghazi BENJEDIDIA – Habib CHAKCHOUK – Hassen BEN AYED
11
Chapitre 4 : La couche transport Révision : Février 2018
Enseignants : Azer ZAIRI - Ghazi BENJEDIDIA – Habib CHAKCHOUK – Hassen BEN AYED
12
Chapitre 4 : La couche transport Révision : Février 2018
Bien que le volume total de trafic UDP d'un réseau standard soit relativement faible, des
protocoles importants de couche application utilisent le protocole UDP, notamment :
• Système de noms de domaine (DNS)
• SNMP (Simple Network Management Protocol)
• Protocole DHCP (Dynamic Host Configuration Protocol)
• Protocole RIP (Routing Information Protocol)
• TFTP (Trivial File Transfer Protocol)
• Téléphonie IP ou voix sur IP (VoIP)
• Jeux en ligne
La faible surcharge qu'engendre le protocole UDP rend celui-ci très intéressant pour des
applications nécessitant la rapidité, comme les jeux en ligne ou la VoIP et peuvent tolérer la
perte d'une certaine quantité de données. Si ces applications utilisaient le protocole TCP, elles
risqueraient d'être confrontées à des retards importants lorsque le protocole TCP détecterait les
pertes de données et retransmettrait les données. Ces délais seraient plus préjudiciables à
l'application que la perte d'une petite quantité de données. Certaines applications, comme le
système DNS, renvoient simplement la requête si aucune réponse n'est reçue. Par conséquent,
elles n'ont pas besoin du protocole TCP pour garantir l'acheminement des messages.
5.2 Réassemblage de datagrammes UDP
Contrairement à TCP, UDP n'est pas orienté connexion c’est-à-dire que les données sont
envoyées à la destination sans qu’il ait un établissement de connexion au préalable. On dit que
le protocole UDP est basé sur les transactions. En fait, de nombreuses applications utilisant le
protocole UDP envoient de petites quantités de données pouvant tenir dans un seul segment.
Cependant, certaines applications envoient des volumes de données plus importants qui doivent
être découpés en plusieurs segments. Le protocole UDP n'effectue pas de suivi des numéros
d'ordre comme le fait le protocole TCP et par conséquent il ne peut pas réassembler les
datagrammes dans leur ordre de transmission. Il les transmettre à l'application dans le désordre.
Si l'ordre des données est important pour l'application, cette dernière doit identifier l'ordre
correct et déterminer le mode de traitement des données.
6. CHOIX DU PROTOCOLE DE TRANSPORT PAR UNE APPLICATION
6.1 Applications utilisant le protocole TCP
TCP est adapté pour les applications qui ont besoin de la fiabilité. Ces applications peuvent
tolérer certains retards ou certaines baisses de performances en raison de la charge imposée par
le protocole TCP.
Le protocole TCP illustre parfaitement les rôles
spécifiques des différentes couches de la pile de
protocoles TCP/IP. Comme le protocole TCP de
couche transport gère toutes les tâches associées à la
segmentation du flux de données, à la fiabilité, au
contrôle de flux et à la réorganisation des segments,
il permet aux applications de ne pas avoir à gérer ces
tâches. Les applications peuvent simplement
envoyer le flux de données à la couche transport et
utiliser les services de transport du protocole TCP.
Enseignants : Azer ZAIRI - Ghazi BENJEDIDIA – Habib CHAKCHOUK – Hassen BEN AYED
13
Chapitre 4 : La couche transport Révision : Février 2018
7. ADRESSAGE DE PORT
Les services basés sur les protocoles TCP et UDP effectuent le suivi des applications qui
communiquent. Pour différencier les segments et les datagrammes de chaque application, les
protocoles TCP et UDP utilisent des champs d’en-tête identifiant ces applications de façon
unique. Ces identificateurs uniques sont les numéros de port.
L’en-tête de chaque segment ou datagramme contient un port source et un port de destination.
Le numéro de port source est le numéro associé à l’application d’origine sur l’hôte local. Tant
disque le numéro de port de destination est le numéro associé à l’application de destination sur
l’hôte distant.
Les protocoles et services utilisant TCP ou UDP sont identifiés par un numéro de port. Un port
est un identifiant numérique, présent dans chaque segment, qui est utilisé pour conserver la
trace de certaines conversations et de certains services de destination demandés. Chaque
message envoyé par un hôte contient un port source et un port de destination.
L’affectation des numéros de port s’effectue de différentes façons selon que le message est une
requête ou une réponse. Alors que les processus serveur se voient attribuer des numéros de port
Enseignants : Azer ZAIRI - Ghazi BENJEDIDIA – Habib CHAKCHOUK – Hassen BEN AYED
14
Chapitre 4 : La couche transport Révision : Février 2018
statiques, les clients choisissent dynamiquement un numéro de port supérieur à 1023, pour
chaque conversation.
Enseignants : Azer ZAIRI - Ghazi BENJEDIDIA – Habib CHAKCHOUK – Hassen BEN AYED
15
Chapitre 4 : La couche transport Révision : Février 2018
Enseignants : Azer ZAIRI - Ghazi BENJEDIDIA – Habib CHAKCHOUK – Hassen BEN AYED
16
Chapitre 4 : La couche transport Révision : Février 2018
est très souvent utilisé pour identifier l'application cliente durant la communication,
alors que le client utilise le port réservé pour identifier et se connecter au service
demandé au serveur. Il est relativement rare pour un client de se connecter à un service
par le biais d'un port dynamique ou privé (bien que certains programmes de partage de
fichiers peer-to-peer utilisent ces ports).
Remarque : Certaines applications peuvent utiliser à la fois le protocole TCP et le
protocole UDP, tel que le service DNS. En effet, la faible surcharge du protocole UDP permet
au service DNS de gérer très rapidement de nombreuses requêtes de clients. Parfois, cependant,
l'envoi des informations demandées exige la fiabilité du protocole TCP. Dans ce cas, le port
réservé 53 est utilisé par les deux protocoles en association avec ce service
8. RESUME
La couche transport offre des services relatifs au transport en :
• Divisant en segments les données reçues d'une application ;
• Ajoutant un en-tête pour identifier et gérer chaque segment ;
• Utilisant les informations de l'en-tête pour réassembler les segments en données
d'application ;
• Transférant les données assemblées à l'application adéquate.
Les datagrammes UDP et les segments TCP ajoutent aux données des en-têtes contenant un
numéro de port source et un numéro de port de destination, qui permettent d'orienter les données
vers l'application correcte s'exécutant sur l'hôte de destination.
Le protocole TCP est un protocole orienté connexion, qui ne transmet aucune donnée au réseau
tant qu'il n'a pas la confirmation que la destination est prête à les recevoir. Le protocole TCP
gère alors le flux de données et renvoie tout segment de données pour lequel la destination n'a
pas envoyé d'accusé de réception. Le protocole TCP utilise des mécanismes de connexion, des
compteurs (numéro de séquences et numéros d'acquittements), des messages d'accusé de
réception et le fenêtrage dynamique pour assurer la fiabilité. Le processus de fiabilité,
cependant, impose une surcharge au réseau en raison des en-têtes de segment plus importants
et de l'augmentation du trafic réseau entre la source et la destination.
Si les données d'application doivent être rapidement acheminées sur le réseau, ou si la bande
passante du réseau ne peut pas prendre en charge la surcharge que représentent les messages de
contrôle échangés entre les systèmes source et de destination, les développeurs préfèrent
recourir au protocole UDP pour la couche transport. Cela s'explique par le fait que le
protocole UDP n'effectue pas de suivi et n'accuse pas réception des datagrammes parvenus à
destination. Il se contente de transmettre les datagrammes reçus à la couche application dans
l'ordre de leur arrivée et il ne réexpédie pas les datagrammes perdus. Cela n'implique pourtant
pas nécessairement que la communication elle-même n'est pas fiable car les protocoles et
services de la couche application peuvent comporter des mécanismes permettant de traiter les
datagrammes perdus ou retardés si l'application l'exige.
Enseignants : Azer ZAIRI - Ghazi BENJEDIDIA – Habib CHAKCHOUK – Hassen BEN AYED