Académique Documents
Professionnel Documents
Culture Documents
Support de cours
Séance N°
10 La couche
transport
-1-
Couche 4 : La couche transport
Les protocoles de la couche de transport peuvent résoudre des problèmes comme la fiabilité des échanges
(“est-ce que les données sont arrivées à destination ?”) et assurer que les données arrivent dans l’ordre
correct (intégrité).
Dans la suite de protocoles TCP/IP, les protocoles de transport déterminent aussi à quelle application
chaque paquet de données doit être délivré.
Les protocoles de couche transport font le lien entre les hôtes (IP) et les services applicatifs (HTTP, FTP,
DNS, et d’autres).
Mais on retiendra principalement que la couche transport est responsable des dialogues (sessions) entre les
hôtes terminaux. Elle permet de multiplexer (plusieurs applications à la fois) les communications entre les
noeud IP en offrant un support à la couche application de manière :
1.1. TCP
TCP, Transmission Control Protocol, offre des services d’établissement et de fin de dialogue ainsi que des
messages de maintenance de la communication en mode fiable et connecté avec :
Les protocoles TCP et UDP sont des protocoles de transport valides. En fonction des besoins des
applications, un ou deux de ces protocoles de transport peuvent être utilisés. Les développeurs
d'applications doivent déterminer quel type de protocole de transport est approprié en fonction des
exigences des applications.
-3 -
1.5. En-tête UDP
2. Numéros de ports
Les ports sont des portes d’entrée entre les hôtes terminaux. Ils sont codés sur 16 bits de 0 à 65535.
Un client IP ouvre un port à l’origine à destination d’un serveur IP écoutant sur un port de destination. La
réponse émane du port de l’application sur le serveur à destination du couple IP : port client ouvert à
l’origine.
La commande netstat -a sur un PC permet de connaître tous les ports à l’écoute et les liaisons maintenues à
l’instant (UDP et TCP sur IPv4 et IPv6).
C’est ce qu’on appelle un “socket” : l’adresse IP combinée au port identifie chaque partenaire de
communication.
• Ports réservés (numéros 0 à 1023) – Ces numéros sont réservés à des services et applications. Ils
sont généralement utilisés pour les applications telles que HTTP (serveur Web), Internet Message
Access Protocol (IMAP)/Simple Mail Transfer Protocol (SMTP) (serveur de messagerie) et Telnet.
En définissant ces ports réservés pour une utilisation par des applications serveur, il est possible de
programmer les applications clientes de façon à ce qu'elles demandent à être connectées à un port
précis et au service qui lui est associé.
• Ports inscrits (numéros 1024 à 49151) – Ces numéros de port sont affectés à des processus ou
applications d'utilisateurs. Ces processus sont essentiellement des applications particulières qu'un
utilisateur a choisi d'installer plutôt que des applications courantes qui recevraient un numéro de port
réservé. Un client peut également sélectionner dynamiquement ces ports en tant que ports source
lorsqu'ils ne sont pas utilisés par une ressource serveur.
• Ports privés ou dynamiques (numéros 49152 à 65535) – Également appelés ports éphémères, ces
ports sont généralement affectés de façon dynamique à des applications clientes lorsqu'une
connexion à un service est initiée par un client. Le port dynamique 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).
-4 -
Port TCP/UDP par défaut Protocole
TCP 22 SSH
TCP 23 Telnet
TCP 25 SMTP
UDP/TCP 53 DNS
UDP 69 TFTP
TCP 80 HTTP
Les hôtes utilisent les ports TCP ou UDP pour identifier les sessions à l’origine (port source) et à la
destination.
Par exemple, pour établir une session HTTP, l’hôte utilisera un port local au-delà de TCP1024 et le port
TCP80 en destination.
Les numéros de ports par défaut des services applicatifs sont gérés par l’IANA.
La liste complète des ports se trouve ici : Service Name and Transport Protocol Port Number Registry.
-5 -
2.2. Client / Serveur
Il existe une grande variété de serveurs et de clients en fonction des besoins ou services à fournir : un
serveur Web publie des pages Web demandées par des navigateurs Web ; un serveur de messagerie
électronique transmet les courriels à des clients de messagerie ; un serveur de fichiers permet de partager
des fichiers sur un réseau aux machines qui le sollicitent ; un serveur de base de données permet aux
clients de récupérer des données stockées dans une base de données, etc.
Le client et le serveur doivent bien sûr utiliser le même protocole de communication au niveau de la
couche transport du modèle OSI. On parle souvent d'un service pour désigner la fonctionnalité offerte par
un processus serveur. Attention, bien que souvent confondues, les notions de programme ou processus
client et de programme ou processus serveur sont toutefois différents de celles de machine. En effet un
ordinateur unique peut exécuter à la fois un programme serveur et un programme client. Cette
configuration est plutôt utilisée à des fins de test, ou assez fréquente dans le monde Linux.
Remarques :
+ Pendant qu'une application utilise un port, on dit que ce port est ouvert, c-à-d que la machine
peut recevoir et envoyer des données via ce port.
+ Souvent, les clients choisissent des ports aléatoires dynamiques qui changent plusieurs fois (entre
49152 à 65535) pour des termes de sécurité.
+ Souvent les serveurs utilisent des ports par défaut fixes (listen) entre 0 et 1023, pour cela un
serveur doit être bien sécurisé.
+ Une même application peut utiliser plusieurs ports (exemple: un navigateur connecté avec
plusieurs sites web)
+ Une même application peut utiliser les deux protocoles TCP et UDP à la fois.
+ Dans un instant donné, on ne peut jamais trouver deux application ayant un même port!
3. TCP
• l’établissement de la connexion ;
• les transferts de données ;
• la fin de la connexion.
L’établissement de la connexion se fait par un handshaking en trois temps. La rupture de connexion, elle,
utilise un handshaking en quatre temps. Pendant la phase d’établissement de la connexion, des paramètres
comme le numéro de séquence sont initialisés afin d’assurer la transmission fiable (sans perte et dans
l’ordre) des données.
-6 -
3.3. TCP Three Way Handshake
Même s’il est possible pour deux systèmes d’établir une connexion entre eux simultanément, dans le cas
général, un système ouvre une ‘socket’ (point d’accès à une connexion TCP) et se met en attente passive
de demandes de connexion d’un autre système. Ce fonctionnement est communément appelé ouverture
passive, et est utilisé par le côté serveur de la connexion.
Durant cet échange initial, les numéros de séquence des deux parties sont synchronisés :
• Le client utilise son numéro de séquence initial dans le champ “Numéro de séquence” du segment
SYN (x par exemple),
• Le serveur utilise son numéro de séquence initial dans le champ “Numéro de séquence” du
segment SYN/ACK (y par exemple) et ajoute le numéro de séquence du client plus un (x+1) dans
le champ “Numéro d’acquittement” du segment,
• Le client confirme en envoyant un ACK avec un numéro de séquence augmenté de un (x+1) et un
numéro d’acquittement correspondant au numéro de séquence du serveur plus un (y+1).
• 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.
-7 -
3.5. Numéro de séquence et numéro d’acquittement
Le numéro d’acquittement est le numéro de séquence attendu du partenaire de communication.
3.6. Temporisation
La perte d’un segment est gérée par TCP en utilisant un mécanisme de temporisation et de retransmission.
Après l’envoi d’un segment, TCP va attendre un certain temps la réception du ACK correspondant. Un
temps trop court entraîne un grand nombre de retransmissions inutiles et un temps trop long ralentit la
réaction en cas de perte d’un segment.
Dans les faits, le délai avant retransmission doit être supérieur au RTT moyen d’un segment, c’est-à-dire
au temps que prend un segment pour effectuer l’aller-retour entre le client et le serveur. Comme cette
valeur peut varier dans le temps, l’ordinateur “prélève” des échantillons à intervalle régulier et on en
calcule une moyenne pondérée.
Les acquittements des données émises, ou l’absence d’acquittements, sont utilisés par les émetteurs pour
interpréter de façon implicite l’état du réseau entre les systèmes finaux. À l’aide de temporisations, les
émetteurs et destinataires TCP peuvent modifier le comportement du flux de données. C’est ce qu’on
appelle généralement le contrôle de congestion.
Des recherches sont menées actuellement afin d’améliorer TCP pour traiter efficacement les pertes,
minimiser les erreurs, gérer la congestion et être rapide dans des environnements très haut débit.
-8 -
3.11. Fin d’une connexion
La phase de terminaison d’une connexion utilise un handshaking en quatre temps, chaque extrémité de la
connexion effectuant sa terminaison de manière indépendante. Ainsi, la fin d’une connexion nécessite une
paire de segments FIN et ACK pour chaque extrémité.
-9 -