Cours 9. Les protocoles de la couche transport : TCP et UDP PDF
Document Details
Uploaded by IntimateSerpentine4544
Université d'Oran 1 - Ahmed Ben Bella
2023
O.R. Merad Boudia
Tags
Summary
This document is a set of lecture notes on computer networks, focusing on the TCP and UDP protocols. It includes details about the protocols, characteristics, and functionalities. The document also illustrates the concepts with diagrams and examples.
Full Transcript
Cours 9. Les protocoles de la couche transport : TCP et UDP O.R. Merad Boudia Université d’Oran 1, Ahmed Ben Bella Master 1 RESIN : 2023/2024 14/12/2023 Réseaux et Protocoles Internet 1 La couche transpor...
Cours 9. Les protocoles de la couche transport : TCP et UDP O.R. Merad Boudia Université d’Oran 1, Ahmed Ben Bella Master 1 RESIN : 2023/2024 14/12/2023 Réseaux et Protocoles Internet 1 La couche transport Le protocole TCP Le protocole UDP O.R. Merad Boudia Réseaux et Protocoles Internet 2 La couche transport O.R. Merad Boudia Réseaux et Protocoles Internet 3 La couche transport O.R. Merad Boudia Réseaux et Protocoles Internet 4 Protocoles de la couche transport O.R. Merad Boudia Réseaux et Protocoles Internet 5 UDP ou TCP O.R. Merad Boudia Réseaux et Protocoles Internet 6 La couche transport La couche transport (TCP et UDP) fournit essentiellement deux services. Multiplexage des sessions. Identification des applications. Le protocole TCP fournit les services supplémentaires suivants: Connexion Segmentation Contrôle de flux Fiabilité O.R. Merad Boudia Réseaux et Protocoles Internet 7 Multiplexage Un même système peut exécuter plusieurs applications, il doit donc être capable d'établir et de distinguer plusieurs connexions de transport (multiplexage des connexions de transport). C'est le concept de port qui outre l'identification des applications autorise le multiplexage des connexions de transport, un port identifie l'extrémité de la connexion. Par exemple, l'application « terminal virtuel » (Telnet) est identifiée par le numéro de port 23. Un client qui veut établir une session Telnet fait appel au port distant 23, tandis que localement, pour distinguer cette connexion des autres, il attribue un numéro de port quelconque et unique sur cette machine (> 1 024). Réseaux et Protocoles Internet 8 Identification par les numéros de port La connexion de transport est complètement définie par l'association des identifiants : {protocole, port destination, @IP destination, port source, @IP source}, cette association est désignée sous le terme de socket. O.R. Merad Boudia Réseaux et Protocoles Internet 9 Les Sockets Un socket client peut se présenter comme suit, 1099 représentant le numéro de port source : 192.168.1.5:1099. Le socket d'un serveur Web peut avoir la forme suivante : 192.168.1.7:80 Ensemble, ces deux sockets constituent une paire de sockets : 192.168.1.5:1099, 192.168.1.7:80. O.R. Merad Boudia Réseaux et Protocoles Internet 10 Le protocole TCP O.R. Merad Boudia Réseaux et Protocoles Internet 11 Introduction TCP TCP est un important protocole de couche transport dans la pile de protocoles Internet, et il n'a cessé d'évoluer au fil des décennies d'utilisation et de croissance d'Internet. Au cours de cette période, un certain nombre de modifications ont été apportées à TCP. Le document RFC 9293 publié en Aout 2022 rend obsolète la RFC 793, ainsi que les RFC 879, 2873, 6093, 6429, 6528 et 6691 qui ont mis à jour des parties de la RFC 793. En 1981, la RFC 793 a été publiée, documentant le protocole TCP et remplaçant les spécifications publiées antérieurement pour TCP. Depuis, TCP a été largement implémenté et il a été utilisé comme protocole de transport pour de nombreuses applications sur Internet (FTP, HTTP, SMTP, etc.). O.R. Merad Boudia Réseaux et Protocoles Internet 12 Présentation du protocole TCP Le protocole TCP est décrit dans le document RFC 9293 O.R. Merad Boudia Réseaux et Protocoles Internet 13 Caractéristiques TCP TCP fournit un service de flux d'octets fiable, dans l'ordre, aux applications. Le flux d'octets de l'application est acheminé sur le réseau via des segments TCP, chaque segment TCP étant envoyé sous forme de paquet IP. La fiabilité TCP consiste à détecter les pertes de paquets (via les numéros de séquence) et les erreurs (via les sommes de contrôle par segment), ainsi que la correction via la retransmission. TCP est orienté connexion. TCP utilise des numéros de port pour identifier les services d'application et pour multiplexer des flux distincts entre les hôtes. O.R. Merad Boudia Réseaux et Protocoles Internet 14 Format de l’entête TCP Port source (16 bits) : Le numéro du port source. Port de destination (16 bits) : Le numéro de port de destination. Numéro de séquence (32 bits) : numéro de séquence du premier octet de données de ce segment (sauf lorsque le drapeau SYN est défini). Si SYN est défini, le numéro de séquence est le numéro de séquence initial (ISN) et le premier octet de données est ISN+1. Numéro d'accusé de réception (32 bits) : Si le bit de contrôle ACK est défini, ce champ contient la valeur du prochain numéro de séquence que l'expéditeur du segment s'attend à recevoir. Une fois la connexion établie, celle-ci est toujours envoyée. O.R. Merad Boudia Réseaux et Protocoles Internet 15 Format de l’entête TCP Décalage de données (DOffset) (4 bits) : Le nombre de mots de 32 bits dans l'en-tête TCP. Cela indique où les données commencent. L'en-tête TCP (même un incluant les options) est un multiple entier de 32 bits de long. Réservé (Rsrvd) (4 bits) : Un ensemble de bits de contrôle réservés pour une utilisation future. Bits de contrôle (8 bits) : Les bits de contrôle sont également appelés "flags". Les bits de contrôle actuellement affectés sont CWR, ECE, URG, ACK, PSH, RST, SYN et FIN. Fenêtre (16 bits) : Le nombre d'octets de données commençant par celui indiqué dans le champ d'accusé de réception que l'expéditeur de ce segment est prêt à accepter. O.R. Merad Boudia Réseaux et Protocoles Internet 16 Format de l’entête TCP Checksum (16 bits) : Le champ Checksum est codé sur 16 bits et représente la validité du paquet de la couche 4 TCP. Urgent Pointer (16 bits) : Le champ Pointeur de donnée urgente est codé sur 16 bits et communique la position d’une donnée urgente en donnant son décalage par rapport au numéro de séquence. Options + Bourrage (jusqu’à 40 octets) : Les champs d’options peuvent occuper un espace de taille variable à la fin de l’entête TCP. Ils formeront toujours un multiple de 8 bits. Le champ Bourrage est de taille variable comprise entre 0 et 7 bits. Il permet de combler le champ option afin d’obtenir une entête TCP multiple de 32 bits. O.R. Merad Boudia Réseaux et Protocoles Internet 17 Exercice Ce segment contient deux drapeaux mis à 1, les drapeaux SYN et ACK. Il s’agit donc de la réponse positive à une demande d’ouverture de connexion. Le serveur fixe la taille de la fenêtre à 4 Ko. Il s’agit d’un serveur FTP, identifié par l’utilisation de son port bien connu 21. O.R. Merad Boudia Réseaux et Protocoles Internet 18 Communication TCP (requête) Ports aléatoires O.R. Merad Boudia Réseaux et Protocoles Internet 19 Communication TCP (réponse) O.R. Merad Boudia Réseaux et Protocoles Internet 20 Établissement d'une connexion TCP O.R. Merad Boudia Réseaux et Protocoles Internet 21 Fermeture d'une connexion TCP O.R. Merad Boudia Réseaux et Protocoles Internet 22 SEQ et ACK Deux des champs les plus importants de l'en-tête de segment TCP sont le champ du numéro de séquence et le champ du numéro d'accusé de réception. Ces champs sont une partie essentielle du service de transfert de données fiable de TCP. Le numéro de séquence SEQ d'un segment est le numéro de flux d'octets du premier octet du segment. Supposons que le flux de données se compose d'un fichier composé de 500 000 octets, que le MSS (Maximum Segment Size) soit de 1 000 octets et que le premier octet du flux de données soit numéroté 0. Dans cet exemple, TCP construit donc 500 segments. Le premier segment reçoit le numéro de séquence 0, le deuxième segment le numéro de séquence 1 000, le troisième segment le numéro de séquence 2 000, etc. Chaque numéro de séquence est inséré dans le champ numéro de séquence dans l'en-tête du segment TCP approprié. O.R. Merad Boudia Réseaux et Protocoles Internet 23 Accusé de réception O.R. Merad Boudia Réseaux et Protocoles Internet 24 SEQ et ACK Numéros de séquence et d'accusé de réception pour une application Telnet simple sur TCP Remarque : Pour différencier ces connexions, TCP attribue à chaque connexion un numéro de séquence initial (ISN, Initial Sequence Number) différent. Ainsi, le décomptage des octets transmis ne démarre pas à 0, mais à une valeur initialisée à partir d'une horloge interne O.R. Merad Boudia Réseaux et Protocoles Internet 25 SEQ et ACK Question. Quelques secondes après que l'utilisateur a tapé la lettre «C», l'utilisateur tape la lettre «R» , combien de segments sont envoyés et donnez les champs de numéro de séquence et d'accusé de réception des segments ? Solution. 3 segments. Premier segment: seq = 43, ack =80; Deuxième segment: seq = 80, ack = 44; Troisième segment; seq = 44, ack = 81 O.R. Merad Boudia Réseaux et Protocoles Internet 26 Exercice 1: SEQ et ACK Considérons un émetteur et un récepteur communiquent via une connexion TCP dans laquelle les segments émetteur -> récepteur peuvent être perdus. Le récepteur envoie une fenêtre initiale de 5 segments. Supposons que la valeur initiale du numéro de séquence émetteur -> récepteur soit 383 et que les 5 premiers segments contiennent chacun 227 octets. Le délai entre l'émetteur et le récepteur est de 7 unités de temps, et donc le premier segment arrive au récepteur à t=8. Comme le montre la figure, 3 des 5 segments sont perdus. 1. Donnez les numéros de séquence associés à chacun des 5 segments envoyés par l'expéditeur. Formatez votre réponse comme suit : a,b,c,... 2. Donnez les numéros ACK que le récepteur envoie en réponse à chacun des segments. Si un segment n'arrive jamais, utilisez 'x' pour l'indiquer et formatez votre réponse comme suit : a,b,c,... O.R. Merad Boudia Réseaux et Protocoles Internet 27 Solution 1: SEQ et ACK Considérons un émetteur et un récepteur communiquent via une connexion TCP dans laquelle les segments émetteur -> récepteur peuvent être perdus. Le récepteur envoie une fenêtre initiale de 5 segments. Supposons que la valeur initiale du numéro de séquence émetteur -> récepteur soit 383 et que les 5 premiers segments contiennent chacun 227 octets. Le délai entre l'émetteur et le récepteur est de 7 unités de temps, et donc le premier segment arrive au récepteur à t=8. Comme le montre la figure, 3 des 5 segments sont perdus. 1. Donnez les numéros de séquence associés à chacun des 5 segments envoyés par l'expéditeur. Formatez votre réponse comme suit : a,b,c,... 383,610,837,1064,1291 2. Donnez les numéros ACK que le récepteur envoie en réponse à chacun des segments. Si un segment n'arrive jamais, utilisez 'x' pour l'indiquer et formatez votre réponse comme suit : a,b,c,... : x,383,x,x,383 O.R. Merad Boudia Réseaux et Protocoles Internet 28 Exercice 2: SEQ et ACK Considérons un émetteur et un récepteur communiquent via une connexion TCP dans laquelle les segments émetteur -> récepteur peuvent être perdus. Le récepteur envoie une fenêtre initiale de 5 segments. Supposons que la valeur initiale du numéro de séquence émetteur -> récepteur soit 485 et les 5 premiers segments contiennent chacun 896 octets. Le délai entre l'émetteur et le récepteur est de 7 unités de temps, et donc le premier segment arrive au récepteur à t=8. Comme le montre la figure, 2 des 5 segments sont perdus. 1. Donnez les numéros de séquence associés à chacun des 5 segments envoyés par l'expéditeur. Formatez votre réponse comme suit : a,b,c,... 2. Donnez les numéros ACK que le récepteur envoie en réponse à chacun des segments. Si un segment n'arrive jamais, utilisez 'x' pour l'indiquer et formatez votre réponse comme suit : a,b,c,... O.R. Merad Boudia Réseaux et Protocoles Internet 29 Solution 2: SEQ et ACK Considérons un émetteur et un récepteur communiquent via une connexion TCP dans laquelle les segments émetteur -> récepteur peuvent être perdus. Le récepteur envoie une fenêtre initiale de 5 segments. Supposons que la valeur initiale du numéro de séquence émetteur -> récepteur soit 485 et les 5 premiers segments contiennent chacun 896 octets. Le délai entre l'émetteur et le récepteur est de 7 unités de temps, et donc le premier segment arrive au récepteur à t=8. Comme le montre la figure, 2 des 5 segments sont perdus. 1. Donnez les numéros de séquence associés à chacun des 5 segments envoyés par l'expéditeur. Formatez votre réponse comme suit : a,b,c,... 485,1381,2277,3173,4069 2. Donnez les numéros ACK que le récepteur envoie en réponse à chacun des segments. Si un segment n'arrive jamais, utilisez 'x' pour l'indiquer et formatez votre réponse comme suit : a,b,c: 1381,2277,x,x,2277 O.R. Merad Boudia Réseaux et Protocoles Internet 30 Contrôle de flux TCP O.R. Merad Boudia Réseaux et Protocoles Internet 31 Suppression d'encombrement O.R. Merad Boudia Réseaux et Protocoles Internet 32 Le protocole UDP O.R. Merad Boudia Réseaux et Protocoles Internet 33 Le protocole UDP Le protocole UDP est un protocole de transport d'acheminement au mieux (best effort), décrit dans le document RFC 768. Caractéristiques: O.R. Merad Boudia Réseaux et Protocoles Internet 34 Entête UDP La faible surcharge pour l'acheminement des données du protocole UDP fait de ce dernier un protocole de transport idéal pour les applications qui peuvent tolérer certaines pertes de données. UDP est un protocole sans état, c'est-à-dire que ni le client ni le serveur ne sont tenus de surveiller l'état de la session de communication. O.R. Merad Boudia Réseaux et Protocoles Internet 35 Utilisation de UDP Le protocole UDP crée beaucoup moins de surcharge que le protocole TCP car il n'est pas orienté connexion et ne propose pas de mécanismes sophistiqués de fiabilité (retransmission, séquençage et contrôle de flux). 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 O.R. Merad Boudia Réseaux et Protocoles Internet 36 Réassemblage des datagrammes UDP O.R. Merad Boudia Réseaux et Protocoles Internet 37 Communication UDP (requête) O.R. Merad Boudia Réseaux et Protocoles Internet 38 Communication UDP (réponse) O.R. Merad Boudia Réseaux et Protocoles Internet 39 Comparaison TCP et UDP O.R. Merad Boudia Réseaux et Protocoles Internet 40 Commande netstat La commande netstat permet d'afficher les statistiques de protocole et des connexions réseau TCP/IP actives sur la machine. Utilisé sans paramètres, cette commande affiche les connexions TCP actives. Afficher toutes les connexions et les ports d'écoute actifs : netstat -a Afficher les statistiques par protocole : netstat -s Afficher la table de routage : netstat -r Afficher les adresses et les numéros de ports : netstat -n O.R. Merad Boudia Réseaux et Protocoles Internet 41 Références Larry Peterson and Bruce Davie. Computer Networks: A Systems Approach, 6 th Edition. Elsevier 2022. Kurose, J. F., and Ross, K. W. Computer Networking: A Top-Down Approach, 8 th Edition. Pearson 2020. Stéphane Lohier et Dominique Présent. Réseaux et Transmissions, édition 2016. Dunod. Guy Pujolle. Les Réseaux, édition 2014. Eyrolles. Andrew Tanenbaum et David Wetherall. Les Réseaux, 5E. édition pearson, 2011. Cours Cisco CCNA. Réseaux et Protocoles Internet 42