08 Cours Protocoles TCP IP
Le découpage en paquets⚓︎
Imaginons que nous devions transmettre des données de plusieurs Mo (Méga Octets) vers un autre ordinateur.
Alors, on pense immédiatement à envoyer d'une seule traite le flot binaire correspondant.
Envoyer d'une seule traite le flot binaire⚓︎
Cependant, avec cette technique, deux problèmes importants peuvent alors se poser :
-
Comme on peut le voir sur l'animation ci-dessous, le premier souci avec cette solution est qu'en cas d'erreur (ici en fin de transmission), il faut transmettre à nouveau l'ensemble des données :

-
Le deuxième problème, sans doute le plus ennuyeux, est que cette solution monopolise le support de transmission et bloque les échanges entre d'autres équipements, comme nous pouvons le voir sur l'animation ci-dessous :

Découper en segments⚓︎
Une solution pour palier à ces défauts est de découper les données à transmettre en segments :
Ces différents segments sont ensuite envoyés les uns à la suite des autres sur le support. Cette méthode va permettre d'intercaler les segments de plusieurs équipements sur le même support.
-
L'exemple ci-dessous nous montre l'intérêt du découpage en segments qui permet des communications simultanées :

-
Dans cet autre exemple, on voit bien l'entrelacement des paquets qui permet à un même équipement de communiquer avec plusieurs autres :

Vocabulaire : Cet entrelacement de paquets s'appelle le multiplexage.
Différents Protocoles de communication⚓︎
- IP : Internet Protocol permet d'attribuer des adresses aux différents noeud du réseau, et de gérer les chemins sur le réseau
- ARP : protocole de résolution d'adresse (Address Resolution Protocole) permet de relier une adresse IP en constante évolution à une adresse de machine physique MAC, qui est fixe, dans un réseau local (LAN).
Il est lié au protocole IPv4. - TCP : Tramsission Control Protocol. Ce protocole assure la transmission des données en gérant le découpage des informations en paquets, numérotés pour contrôler qu'ils arrivent tous (et qu'ils puissent être remis dans l'ordre), les accusés de réception (ACK = ACKnowledgement), et le renvoie éventuel des paquets.
- UDP : User Datagram Protocol (UDP) est un protocole de communication pour les applications sensibles au temps telles que les jeux, la lecture de vidéos ou les recherches de système de noms de domaine (DNS), mais qui nécessite moins de contrôle.
- HTTP : HyperText Transfer Protocol, est un protocole de communication client-serveur développé pour le web.
Autres protocoles que vous connaissez peut-être déjà:
- SMTP : Simple Mail Transfer Protocol (pour envoyer des emails).
- FTP : FIle Transfer Protocol (poue trasnférer des fichiers).
L'encapsulation⚓︎
Principe de l'encapsulation⚓︎
Nous avons vu comment nos données étaient découpées en segments. On doit leur adjoindre des informations complémentaires. Celles-ci s'appellent des informations de contrôle.
-
Pour que ces segments arrivent correctement à destination, il est impératif que soit indiqué une adresse, mais également un numéro de port, qui doit réceptionner les données.
-
Les segments qui circulent sur le réseau peuvent arriver dans un ordre différent que celui dans lequel ils ont été émis. Il est donc indispensable de numéroter chacun de ces segments pour pouvoir les remettre dans l'ordre une fois arrivés à destination.
-
On va également ajouter des « valeurs d'intégrité », appelées sommes de contrôle, qui vont permettre à l'arrivée de vérifier que les données n'ont pas subi de détérioration lors du transfert sur le support de communication.
L'encapsulation désigne le fait d'ajouter des informations de contrôle devant le segment (en-tête) et/ou à la fin de celui-ci (en-queue).
Cette technique est utilisée à differents niveaux du fonctionnement des réseaux informatiques, c'est-à-dire à chaque fois qu'une nouvelle couche doit être encapsulée.
Exemple
Considérons le segment ci-dessous :

Les informations ajoutées permettent d'en déduire qu'il s'agit du premier segment (le /1), à destination du port 80 avec un code de contrôle d'intégrité qui vaut 12.
L'encapsultation de l'inégralité du flux de données pourra donc être transmis sous la forme suivante :

Le protocole IP⚓︎
Pour pouvoir transmettre un message il faut connaître l'émetteur et le récepteur du message.
Chaque message (chaque petit paquet de données) est enveloppé par le protocole IP qui y ajoute différentes informations :
- l'adresse IP de l'expéditeur,
- l'adresse IP du destinataire,
- des données supplémentaires (qui permettent de bien contrôler l'acheminement du message).

Le routage fait partie du protocole IP :
Vous déposez le paquet IP sur l'ordinateur le plus proche (celui de votre fournisseur d'accès en général). Le paquet IP va transiter d'ordinateur en ordinateur, de routeur en routeur, jusqu'à atteindre le destinataire.

Les ports - Le protocole UDP⚓︎
Le protocole IP nous permet d'envoyer et de recevoir des paquets de données d'un ordinateur à un autre. Mais si nous avons plusieurs applications qui fonctionnent sur l'ordinateur (navigateur, un logiciel d'e-mail, une radio, ...), comment faire pour savoir à quel logiciel délivrer les paquets ?

Comme pour les portes d'un immeuble, on peut attribuer un numéro unique à chaque logiciel dans l'ordinateur :

Ces ports sont des informations présentes dans les datagrammes du protococole UDP (User Datagram Protocol).

Remarque : les protocole UDP est encapsulé à l'intérieur du protocole IP. "IP encapsule UDP".
Le protocole TCP⚓︎
A présent, on peut :
- envoyer des paquets de données d'un ordinateur à un autre (protocole IP)
- s'adresser au bon logiciel (protocole UDP) pour réceptionner ces données.
Cependant il reste des problèmes à régler :
- Des paquets peuvent se perdre.
- Rien ne permet de savoir s'ils sont bien arrivés.
- La taille des paquets est limitée (1500 octets environ). Comment envoyer une photo de 100 000 octets ?
Le protocole TCP (Transmission Control Protocol) est chargé de régler tous ces éventuels problèmes. Il a été conçu pour :
- faire tout ce que le protocole UDP sait faire (gestion des ports),
- vérifier que le destinataire est prêt à recevoir les données,
- découper les gros paquets en paquets plus petits,
- numéroter les segments, vérifier qu'ils arrivent à destination (les redemander sinon), les réordonner,
- émettre des accusés de réception.
Exemple
Pour envoyer le message "Salut, comment ça va ?", voilà ce que fait TCP (chaque flèche représente un paquet IP) :

À l'arrivée, sur l'ordinateur 204.66.224.82, la couche TCP reconstitue le message "Salut, comment ça va ?" à partir des trois paquets IP reçus puis il le donne au logiciel qui est sur le port 80.
Conclusion : protocole TCP/IP⚓︎
Avec TCP/IP, on peut maintenant communiquer de façon fiable entre logiciels situés sur des ordinateurs différents.
TCP/IP est utilisé dans des domaines très divers :
-
Dans le navigateur internet, le protocole HTTP utilise le protocole TCP/IP pour envoyer et recevoir des pages HTML, des images GIF, JPG et toutes sortes d'autres données.
-
FTP est un protocole qui permet d'envoyer et recevoir des fichiers. Il utilise également TCP/IP.
-
Votre logiciel de courrier électronique utilise les protocoles SMTP et POP3 pour envoyer et recevoir des e-mails. SMTP et POP3 utilisent eux aussi le protocole TCP/IP.
-
Votre navigateur (et d'autres logiciels) utilise le protocole DNS pour trouver l'adresse IP d'un ordinateur à partir de son nom (par exemple, trouver l'adresse IP 216.58.208.227 à partir de « www.google.fr »). Le protocole DNS utilise les protocoles UDP/IP et TCP/IP en fonction de ses besoins.
Il existe ainsi de nombreux protocoles qui utilisent TCP/IP ou UDP/IP.
Trame Ethernet⚓︎
Nous avons eu l'occasion de voir avec les protocoles TCP et IP le processus d'encapsulation des données : « IP encapsule TCP ».
Les paquets IP ne peuvent pas transiter sur un réseau tels quels, ils vont eux aussi être encapsulés avant de pouvoir « voyager » sur le réseau.
L'encapsulation des paquets IP produit ce que l'on appelle une trame.
Il existe de nombreux types de trames, nous allons en évoquer deux types : Ethernet, Wifi...
- Si vous utilisez un réseau filaire avec des câbles Ethernet (avec des prises RJ45), la trame sera de type Ethernet (c'est le cas pour le réseau du lycée).
- Si vous utilisez un réseau sans fil Wifi, la trame sera de type Wifi (en fait, la trame Wifi ressemble beaucoup à la trame Ethernet, on peut même dire que la trame Wifi est la variante sans-fil de la trame Ethernet).
Poursuite de l'encapsulation⚓︎
-
Le paquet IP contient les adresses IP de l'émetteur et du récepteur.

-
La trame Ethernet encapsule le paquet IP.

Le paquet IP étant encapsulé par la trame Ethernet, les adresses IP ne sont plus directement disponibles (il faut désencapsuler le paquet IP pour pouvoir lire ces adresses IP). Nous allons donc trouver un autre type d'adresse qui permet d'identifier l'émetteur et le récepteur : l'adresse MAC (Media Access Control) aussi appelée adresse physique.
Au moment de l'encapsulation d'un paquet IPv4, l'ordinateur « émetteur » va utiliser un protocole nommé ARP (Address Resolution Protocol) qui permet de déterminer l'adresse MAC de l'ordinateur « destination » en effectuant une requête « broadcast » (requête destinée à tous les ordinateurs du réseau).
Cette requête peut être imaginée sous la forme : « j'aimerais connaitre l'adresse MAC de l'ordinateur ayant pour IP XXX.XXX.XXX.XXX ». Une fois qu'il a obtenu une réponse à cette requête ARP, l'ordinateur « émetteur » encapsule le paquet IP dans une trame Ethernet et envoie cette trame sur le réseau.
Une couche interne supplémentaire : application⚓︎
Nous avons vu que le protocole TCP permet de mettre en forme les données à envoyer :

En fait, TCP effectue lui aussi une encapsulation selon l'application qui a eu recours à ce protocole. Parmi les plus connues, on peut citer :
-
Les requêtes et les réponses HTTP ;

-
FTP (File Transfer Protocol) qui permet d'envoyer des fichiers (texte, son, image, ...) sur un réseau,
- SMTP (Simple Mail Transfer Protocol) qui permet d'envoyer des emails,
- etc...
Il est donc possible de trouver une encapsulation de la forme :

Vocabulaire : On dit que tous ces protocoles (HTTP, FTP, SMTP, DNS, ...) appartiennent à la couche « Application » du modèle TCP/IP.
Bilan : l'ensemble du modèle TCP/IP⚓︎
Ainsi, lors de l'envoi d'un message, les données du message sont encapsulée par le protocole de l'application (par exemple HTTP°, puis par le protocole de transport (par exemple TCP), puis par le protocole Internet (par exemple IP), puis par le protocole d'Accès au Réseau (par exemple Ethernet).

À la réception, l’hôte récepteur réalise l’opération inverse en vérifiant les en-têtes de chaque protocole correspondant à une des couches décrites. Ce processus s’appelle la désencapsulation.

Chaque couche ajoute une information fonctionnelle au message original. À la réception, l’hôte examine chaque couche et prend une décision quant à ce trafic.
Une vidéo d'explication du modèle TCP / IP par Monsieur Techno :
Couches du modèle TCP/IP⚓︎

Couche Application⚓︎
- Elle est la couche de communication qui s’interface avec les utilisateurs
- Exemples de protocoles applicatifs : HTTP, DNS, DHCP, FTP, etc
- Elle s’exécute sur les machines hôtes
Couche Transport : TCP⚓︎
- Elle est responsable du dialogue entre les hôtes terminaux d’une communication
- Les applications utiliseront TCP pour un transport fiable et UDP sans ce service
- Les routeurs NAT et les pare-feu opèrent un filtrage au niveau de la couche transport
Couche Internet : IP⚓︎
- Elle permet de déterminer les meilleurs chemins à travers les réseaux en fonction des adresses IPv4 ou IPv6 à portée globale
- Les routeurs transfèrent le trafic IP qui ne leur est pas destiné
Couche Accès au réseau⚓︎
- TCP/IP ne s’occupe pas de la couche Accès Réseau
- Elle organise le flux binaire et identifie physiquement les hôtes
- Elle place le flux binaire sur les supports physiques
- Les commutateurs, cartes réseau, connecteurs, câbles, etc. font partie de cette couche
Adressage, identifiants et matériel⚓︎
Les machines et leurs interfaces disposent d’identifiants au niveau de chaque couche.
| Couche | Identifiant | Exemple |
|---|---|---|
| Application | Protocole et nom de domaine | http:// suivi de www.cisco.com |
| Transport | Port TCP ou UDP | TCP80 comme port par défaut pour HTTP |
| Internet | Adresse IPv4 et/ou IPv6 | 192.168.150.252/24 ou 2001:db8::1/64 |
| Accès | adresse physique (MAC 802) | 70:56:81:bf:7c:37 |
Un autre modèle : le modèle OSI⚓︎
Comparaison avec le modèle TCP/IP⚓︎
- La modélisation OSI propose un enveloppement en 7 couches
- Modèle théorique, académique
- Les couches sont aussi désignées par leur numéro
- On associera à chaque couche des rôles, des protocoles et du matériel.
- PDU : nom donné à l’encapsulation correspondante à une couche.

Exemple : interaction entre un navigateur Web et un serveur Web⚓︎
-
Protocole HTTP. L’utilisateur lance son navigateur et saisit une URL :
http://192.168.1.2/coucou.html. Le navigateur passe l’ordre d’envoi d’une requête sur l’adresse IP à TCP. -
Protocole TCP. Le protocole TCP divise les données en parties de plus petite taille, appelées segments, pour les envoyer au serveur. Il ajoute également aux données transmises des informations essentielles comme des numéros de ports.

- Protocole IP. Le protocole IP récupère les segments formatés à partir du protocole TCP, s’occupe de leur encapsulation en paquets, de l’affectation des adresses IP appropriées et de la sélection du meilleur chemin vers l’hôte de destination.

- Protocole Ethernet. Les protocoles en jeu ici prennent les paquets depuis le protocole IP et les formatent pour les transmettre à travers les supports sous forme de trames. De même, les normes et les protocoles des supports physiques régissent la manière dont les signaux sont envoyés à travers les supports ainsi que leur interprétation par les clients destinataires.

La trame arrive donc en bout de processus et intègre l’ensemble des données y compris les numéros de port ajoutés par la couche transport, les adresses IP ajoutées par la couche IP et les adresses MAC.
Lorsque la trame finale est récupérée par l’hôte de destination (après qu’éventuellement le paquet IP soit passé par quelques routeurs), un processus inverse est mis en oeuvre :
- Les protocoles en jeu récupèrent la trame depuis le support et supprime l’en-tête de trame. Le paquet obtenu est remonté vers le protocole IP.
- Les protocoles IP récupère le paquet et supprime l’en-tête IP. Le segment obtenu est remonté vers le protocole TCP.
- Le protocole TCP récupère le segment et lit le numéro de port (port 80). Il supprime l’en-tête TCP et fait appel à l’application serveur Web.
- Le protocole HTTP récupère les données (en l’occurence l’URL
192.168.1.2/coucou.htmlavec les informations prévues par le protocole).c
Une fois la requête recue et interprétée, le serveur répond en envoyant la page demandée (ou un message d’erreur si, par exemple, la page n’existe pas).
Remarque : les couches sont désencapsulées et lues sur le chemin, en fonction des besoins.
