Section courante

A propos

Section administrative du site

La couche transport TCP/IP

Transmission Control Protocol (TCP)

TCP, ou Transmission Control Protocol, est l'un des deux principaux protocoles opérant au niveau de la couche de transport du modèle TCP/IP, l'autre étant UDP (User Datagram Protocol). TCP joue un rôle essentiel dans la transmission fiable des données entre deux hôtes sur un réseau, en s'assurant que l'information envoyée par l'émetteur parvienne correctement au destinataire, dans le bon ordre et sans erreurs.

Le fonctionnement de TCP repose sur le découpage des données en paquets appelés segments. Chaque segment est numéroté et assorti d'un checksum, une valeur calculée permettant de vérifier l'intégrité des données à l'arrivée. Ces segments sont ensuite enveloppés dans une enveloppe TCP, contenant toutes les informations nécessaires à la gestion de la connexion, puis placés à l'intérieur d'une enveloppe IP (Internet Protocol). Cette dernière contient les adresses IP de l'expéditeur et du destinataire, assurant ainsi que le segment parvienne à la bonne machine sur le réseau. Ainsi, le bloc que TCP transmet à IP est constitué d'une entête TCP détaillée et des données issues de la couche application.

TCP se distingue par sa nature orientée connexion, ce qui signifie qu'il établit une session fiable entre deux machines avant tout échange de données. Contrairement à UDP, étant connectionless et minimaliste, TCP assure la fiabilité, la correction d'erreurs et le contrôle de flux, tout en garantissant que les données sont livrées exactement comme elles ont été envoyées. Pour ce faire, TCP utilise un mécanisme appelé handshake en trois phases, ou three-way handshake, qui initialise et synchronise les numéros de séquence entre les deux hôtes.

Lorsqu'une machine A souhaite établir une connexion, elle envoie un segment avec le drapeau SYN (Synchronize sequence numbers) pour indiquer le début d'une session et proposer des numéros de séquence. La machine B répond alors avec un segment où les drapeaux SYN et ACK (Acknowledgement) sont positionnés, confirmant la réception et synchronisant ses propres numéros de séquence. La machine A termine le processus en envoyant un dernier segment avec le flag ACK, marquant la fin de l'établissement de la connexion. Une fois ce handshake terminé, les données peuvent circuler en toute fiabilité entre les deux hôtes.

TCP utilise également un mécanisme de confirmation positive avec retransmission (Positive Acknowledgement with Re-transmission, PAR) pour garantir l'intégrité des données. Chaque segment envoyé doit être confirmé par le destinataire : si la confirmation n'arrive pas dans un délai imparti, le segment est automatiquement retransmis. Ce processus assure que tous les paquets perdus ou corrompus sont renvoyés jusqu'à ce que leur réception correcte soit confirmée.

Enfin, TCP prévoit également la fermeture de la connexion de manière fiable grâce à une procédure similaire en trois étapes, utilisant le drapeau FIN (Finish). Le FIN indique que l'émetteur n'a plus de données à envoyer. Le destinataire accuse réception et, après que toutes les données restantes ont été traitées, la connexion est complètement terminée. Cette approche garantit que toutes les données sont transmises correctement et que la session est fermée de façon ordonnée, sans risque de perte d'informations ou de corruption.

En résumé, TCP constitue la pierre angulaire de la couche transport du modèle TCP/IP, combinant découpage des données, numérotation des segments, contrôle d'intégrité, gestion de la connexion et mécanismes de fiabilité pour assurer un transfert de données robuste et précis, parfaitement adapté aux applications nécessitant une communication fiable et ordonnée, comme le web, le courrier électronique et le transfert de fichiers.

Les différents champs de l'entête TCP

L'entête d'un segment TCP se compose de plusieurs champs essentiels, chacun ayant une fonction spécifique pour assurer la transmission fiable, ordonnée et sécurisée des données entre deux machines. Ces champs sont soigneusement définis afin de permettre au protocole TCP de gérer les connexions, de détecter les erreurs, d'indiquer la priorité et de synchroniser les flux de données :

Champ Taille Description
Source Port 16 bits Ce champ identifie le port de l'émetteur, c'est-à-dire l'application ou le processus envoyant le segment sur la machine source. Il permet au destinataire de savoir à quel service ou application renvoyer les éventuelles réponses.
Destination Port 16 bits Ce champ indique le port de réception, correspondant à l'application ou au service sur l'ordinateur destinataire. Grâce à cette information, TCP peut diriger le segment vers la bonne application sur la machine de destination.
Sequence Number 32 bits Ce nombre sert à numéroter les octets du flux de données, de manière à identifier précisément la position du premier octet de données d'un segment donné dans l'ensemble du flot de données initialement envoyé. Cela permet de reconstituer l'ordre correct des données, même si certains segments arrivent dans le désordre.
Acknowledgment Number 32 bits Ce champ est utilisé pour accuser réception des données reçues. Il contient le numéro du prochain octet attendu par le destinataire et joue un rôle clé dans le mécanisme de confirmation positive avec retransmission (PAR), garantissant que toutes les données sont bien reçues.
Offset (Data Offset) 32 bits Ce champ indique le déplacement en mots de 32 bits entre le début de l'entête et le début des données applicatives. Il permet au protocole de savoir où commence réellement la partie « données » du segment. La valeur par défaut est généralement 5, ce qui correspond à un en-tête TCP de 20 octets sans options supplémentaires.
Flags (drapeaux de contrôle) Variable Ces bits spéciaux régulent le comportement de la connexion TCP et signalent des informations importantes :
Bits Description
URG (Urgent Pointer) Indique que certaines données contenues dans le segment sont urgentes et doivent être traitées immédiatement par la couche application.
ACK (Acknowledgment Field) Active le champ d'accusé de réception pour signaler que le segment contient un numéro de séquence valide à confirmer.
PSH (Push Flag) Force la transmission immédiate des données à la couche application, évitant qu'elles ne soient mises en mémoire tampon.
RST (Reset Flag) Utilisé pour forcer la fermeture d'une connexion en cas d'erreur critique ou irrécupérable, réinitialisant le flux de données.
SYN (Synchronize Flag) Sert à synchroniser le démarrage d'une connexion lors du three-way handshake, permettant aux deux hôtes d'échanger leurs numéros de séquence initiaux.
FIN (Finish Flag) Indique que l'émetteur n'a plus de données à envoyer et souhaite terminer la connexion de manière ordonnée.
Window 16 bits Ce champ annonce la taille de la fenêtre, c'est-à-dire la quantité maximale de données que le destinataire peut accepter sans envoyer d'accusé de réception. Il permet un contrôle de flux efficace, garantissant que le serveur ou client récepteur n'est pas saturé.
Checksum 16 bits Ce champ contient un code de contrôle d'erreur, calculé comme le « complément à un » du total des mots de 16 bits de l'en-tête et des données. Il permet de détecter toute corruption de segment pendant le transport sur le réseau.
Urgent Pointer 16 bits Si le drapeau URG est activé, ce champ indique la position finale des données urgentes dans le segment, permettant à l'application de traiter rapidement les informations prioritaires.
Options Longueur variable Ce champ est utilisé pour ajouter des fonctionnalités supplémentaires à TCP. La principale option est le MSS (Maximum Segment Size), qui spécifie la taille maximale des données qu'un segment peut contenir, afin d'optimiser la fragmentation et la transmission.
Padding Longueur variable Le champ de bourrage, ou padding, est généralement rempli de zéros pour garantir que l'en-tête TCP est aligné sur un multiple de 32 bits. Cela facilite le traitement des segments par les routeurs et systèmes récepteurs, améliorant l'efficacité et la compatibilité matérielle.

Chaque champ de l'entête TCP joue un rôle crucial pour que la communication soit fiable, ordonnée et efficace, en permettant de gérer les connexions, de contrôler le flux, d'assurer l'intégrité des données et de gérer la priorité des informations transmises entre deux machines sur un réseau TCP/IP.

User Datagram Protocol (UDP)

Le User Datagram Protocol, plus communément appelé UDP, est un protocole de la couche transport du modèle TCP/IP offrant aux applications un accès direct et simplifié à un service de transmission de datagrammes. Contrairement à TCP, UDP ne met pas en place de mécanisme de connexion préalable entre les machines communicantes, ce qui en fait un protocole dit connectionless, c'est-à-dire sans établissement de session formelle avant l'échange de données.

UDP permet ainsi l'envoi rapide de messages appelés datagrammes, sans garantie de livraison, d'ordre ou d'unicité. Cette absence de contrôle rend le protocole extrêmement léger et rapide, car il n'introduit pas de surcharge liée à des mécanismes de contrôle complexes comme les accusés de réception, la retransmission ou la gestion de congestion. En conséquence, UDP est particulièrement adapté aux communications dites "one-to-many", telles que les transmissions en broadcast (diffusion à tous les hôtes d'un réseau) ou en multicast (diffusion à un groupe spécifique de destinataires).

Cependant, cette simplicité a un coût : la livraison des datagrammes UDP n'est pas garantie. Les paquets peuvent être perdus, dupliqués ou reçus dans un ordre différent de celui de leur émission. Par conséquent, les applications qui utilisent UDP doivent implémenter elles-mêmes les mécanismes de fiabilité si nécessaire, comme la vérification de l'intégrité des données, la détection des pertes ou la gestion de l'ordre des messages.

UDP est donc privilégié dans des situations où la rapidité prime sur la fiabilité, ou lorsque les applications peuvent tolérer une certaine perte de données. C'est notamment le cas des flux multimédias en temps réel (audio ou vidéo), des jeux en ligne ou encore des protocoles de découverte réseau.

Un exemple classique d'utilisation de UDP est la résolution de noms de domaine (DNS), qui s'effectue généralement via le port 53. Dans ce contexte, la rapidité de réponse est essentielle et les requêtes sont suffisamment courtes pour limiter les risques liés à l'absence de retransmission. Si une requête échoue, il est souvent plus efficace de la renvoyer que de maintenir une connexion persistante.

En résumé, UDP constitue un protocole simple, efficace et rapide, idéal pour les applications nécessitant une transmission légère et à faible latence, mais qui doivent être capables de gérer elles-mêmes les éventuelles pertes ou erreurs de communication.

Comme le protocole UDP répond à une logique de simplicité et de moindre effort, en étant connectionless, sans mécanisme intégré de correction d'erreurs ni de détection fiable de perte de paquets, il présente certaines faiblesses du point de vue de la sécurité. Contrairement à TCP, UDP ne met en place ni établissement de connexion préalable, ni vérification systématique de la réception des données, ni numérotation des segments permettant de contrôler l'ordre et l'intégrité des échanges. Cette absence de contrôles rend le protocole plus léger et rapide, mais également plus vulnérable à certaines formes de manipulation.

En particulier, il est généralement plus aisé pour un attaquant de modifier, falsifier ou injecter des paquets UDP dans un flux de communication que dans un échange TCP. L'une des raisons principales est l'absence de numéros de séquence et de mécanisme de handshake (échange de salutation) qui, dans TCP, permettent de valider et de synchroniser les communications entre deux hôtes. Sans ces éléments, UDP ne dispose d'aucun moyen intrinsèque de vérifier l'authenticité de l'expéditeur ni la cohérence du flux de données reçu.

De plus, il est relativement simple de falsifier l'adresse IP source dans un datagramme UDP, pratique connue sous le nom de spoofing IP. Étant donné que cette adresse ne fait l'objet d'aucune vérification stricte au niveau du protocole UDP, elle ne doit jamais être utilisée comme mécanisme d'authentification fiable. Un attaquant peut ainsi envoyer des paquets en se faisant passer pour une autre machine, ce qui peut être exploité dans divers types d'attaques, comme les attaques par amplification ou les tentatives de dissimulation d'identité.

En résumé, bien que UDP soit extrêmement performant et adapté à de nombreux usages nécessitant rapidité et simplicité, son absence de mécanismes de contrôle intégrés en fait un protocole qui doit être utilisé avec précaution. Les applications reposant sur UDP doivent impérativement implémenter leurs propres mécanismes de sécurité et de validation, afin de compenser ces limitations et de garantir l'intégrité et l'authenticité des communications.

Internet Protocol (IP)

Intéressons-nous maintenant, au sein de l'architecture TCP/IP, à la couche IP, c'est-à-dire au Internet Protocol, constituant l'un des éléments fondamentaux permettant le fonctionnement des réseaux modernes. Ce protocole définit les règles que doit respecter chaque machine afin d'être identifiée de manière unique sur un réseau local TCP/IP ou sur l'Internet dans son ensemble. Grâce à IP, chaque équipement connecté dispose d'une adresse IP, permettant de l'identifier et de localiser sa position logique dans le réseau, rendant possible l'acheminement des données entre émetteurs et destinataires.

Le protocole IP est de type connectionless, ce qui signifie qu'il n'établit pas de connexion préalable entre les machines avant l'envoi des données. Contrairement aux protocoles orientés connexion, comme TCP, IP ne met en place aucun échange de contrôle, ni handshake, pour vérifier que le système distant est prêt à recevoir les informations. Les données sont envoyées directement sous forme de datagrammes indépendants, sans garantie de livraison, d'ordre ou d'intégrité. Cette approche permet une grande flexibilité et une meilleure performance, mais implique également que les mécanismes de fiabilité doivent être pris en charge par d'autres couches du modèle TCP/IP.

En effet, IP ne propose aucun mécanisme de détection d'erreur avancé, ni de correction ou de récupération des données perdues. Si un datagramme est corrompu, perdu ou arrive dans le désordre, le protocole IP ne prend aucune mesure pour le retransmettre ou le corriger. Cette responsabilité est généralement déléguée à des protocoles de niveau supérieur, comme TCP, assurant la fiabilité de la transmission.

Les principales fonctions assurées par le protocole IP sont multiples et essentielles au bon fonctionnement des réseaux :

Ainsi, le protocole IP constitue le socle de communication des réseaux TCP/IP, assurant le transport des données d'un point à un autre, sans se préoccuper de leur fiabilité. Sa simplicité et sa robustesse en font un élément clé de l'Internet, capable de fonctionner sur des infrastructures très diverses tout en garantissant l'interconnexion globale des systèmes informatiques.

Datagramme

Les protocoles de la suite TCP/IP ont été initialement conçus pour fonctionner sur le réseau ARPANET, reposant sur une architecture de type réseau à commutation de paquets (packet switching network). Dans ce modèle, les données ne sont pas transmises sous forme de flux continu, mais sont découpées en blocs indépendants appelés paquets. Chaque paquet contient non seulement les données utiles, mais également les informations nécessaires pour être acheminé correctement jusqu'à sa destination. Une analogie classique consiste à comparer ce mécanisme à une lettre envoyée par la poste : le contenu correspond aux données, tandis que l'adresse inscrite sur l'enveloppe permet son acheminement.

Dans le cadre du protocole IP, le format de paquet utilisé est appelé datagramme. Un datagramme IP est constitué d'une entête suivie des données à transporter. L'en-tête standard est composée de cinq mots de 32 bits, soit 20 octets, mais elle peut être étendue jusqu'à six mots ou plus lorsque des options sont utilisées. Cette structure permet d'inclure toutes les informations nécessaires au routage, au contrôle et à la gestion des paquets sur le réseau.

Les différents champs de l'en-tête IP sont les suivants :

Champ Taille Description
Version 4 bits Ce champ indique la version du protocole IP utilisée. Dans la majorité des cas actuels, il s'agit de la version 4 (IPv4), bien que la version 6 (IPv6) tende à se généraliser.
Internet Header Length (IHL) 4 bits Ce champ précise la longueur de l'entête en mots de 32 bits. Sa valeur varie de 5 à 15, la valeur 5 correspondant à une entête standard sans options supplémentaires.
Type de service 8 bits Ce champ permet de définir la priorité et la qualité de service souhaitée pour le paquet. Il peut indiquer des préférences telles qu'un délai réduit, un débit élevé, une fiabilité accrue ou encore un coût minimal, selon les besoins de l'application.
Longueur totale 16 bits Ce champ indique la taille totale du datagramme en octets, en incluant l'en-tête et les données. Étant codé sur 16 bits, il limite la taille maximale d'un paquet IP à 65 535 octets.
Identification 16 bits Ce champ contient une valeur unique permettant d'identifier les fragments d'un même datagramme. Il est essentiel lors du processus de fragmentation et de réassemblage des paquets.
Flags 3 bits Ces bits contrôlent le mécanisme de fragmentation :
Le bit MF (More Fragments) indique s'il reste d'autres fragments à suivre.
Le bit DF (Don't Fragment) empêche la fragmentation du paquet.
Le troisième bit n'est pas utilisé.
Fragment Offset 13 bits Ce champ précise la position du fragment dans le datagramme original, permettant ainsi de reconstituer correctement les données lors du réassemblage.
TTL (Time To Live) 8 bits Le TTL représente la durée de vie maximale d'un paquet sur le réseau. À chaque passage par un routeur, sa valeur est décrémentée. Si elle atteint zéro, le paquet est détruit, évitant ainsi les boucles infinies. Les valeurs courantes se situent entre 40 et 64.
Protocole 8 bits Ce champ identifie le protocole de la couche supérieure auquel les données doivent être remises. Par exemple :
17 pour UDP
6 pour TCP
1 pour ICMP
8 pour EGP
89 pour OSPF
Checksum 16 bits Ce champ permet de vérifier l'intégrité de l'en-tête IP. Il est calculé à partir d'un complément à un des mots de 16 bits de l'entête.
Adresse IP source 32 bits Indique l'adresse de la machine émettrice du datagramme.
Adresse IP destination 32 bits Indique l'adresse de la machine destinataire du datagramme.
Options Longueur variable Ce champ facultatif permet d'ajouter des informations supplémentaires, comme des demandes de routage spécifique ou des contrôles particuliers.
Padding Longueur variable Ce champ est utilisé pour compléter l'entête avec des zéros afin d'assurer un alignement sur un multiple de 32 bits, facilitant le traitement par les équipements réseau.

Une fois le datagramme construit, le protocole IP assure sa transmission en examinant l'adresse de destination contenue dans l'en-tête. Si cette adresse correspond à un hôte du réseau local, le paquet est remis directement à son destinataire. Dans le cas contraire, il est transmis à un gateway (ou passerelle), qui se charge de l'acheminer vers un autre réseau. Le choix du chemin emprunté par le paquet est appelé routage, et repose sur des tables et des algorithmes spécifiques.

On parle souvent de routeurs IP pour désigner ces passerelles, car elles utilisent le protocole IP pour transférer les paquets entre différents réseaux. Dans la terminologie stricte du modèle TCP/IP, il existe essentiellement deux types de dispositifs : les hosts, qui sont les machines finales (ordinateurs, serveurs), et les gateways, qui assurent le transport des paquets entre réseaux distincts. Les hosts consomment ou produisent les données, tandis que les gateways jouent un rôle clé dans leur acheminement à travers l'infrastructure globale d'Internet.

Sécurité

Au niveau de la couche IP (Internet Protocol), il n'existe pas de mécanisme de sécurité avancé garantissant la fiabilité ou l'intégrité de la transmission des datagrammes. En effet, ce protocole fonctionne selon un modèle non orienté connexion, sans notion de circuit virtuel entre l'émetteur et le récepteur. Chaque paquet est traité de manière totalement indépendante, ce qui signifie qu'aucune relation persistante n'est maintenue entre les différents datagrammes envoyés.

Dans ce contexte, il n'existe aucune garantie que tous les paquets atteindront leur destination, ni qu'ils arriveront dans un ordre cohérent. Les paquets peuvent être perdus, dupliqués ou arriver dans un ordre différent de celui dans lequel ils ont été émis, sans que le protocole IP ne s'en préoccupe. Cette responsabilité est généralement déléguée à des protocoles de couches supérieures, comme TCP, assurant la gestion de la retransmission et du réordonnancement des données.

Par ailleurs, IP ne met en ouvre aucun contrôle de validité global des paquets au niveau de leur contenu. Le mécanisme de vérification présent dans l'entête IP, appelé checksum, ne porte que sur l'en-tête lui-même et ne couvre pas les données transportées. Ainsi, si le contenu du paquet est corrompu après la vérification de l'en-tête, le protocole IP ne dispose d'aucun moyen pour détecter ou corriger cette altération.

Un autre point important concerne l'authentification de l'origine des paquets. Rien dans le protocole IP ne garantit qu'un paquet provient réellement de l'adresse source indiquée dans son en-tête. Il est donc relativement simple de falsifier l'adresse IP source, une technique connue sous le nom de spoofing. Cette faiblesse rend nécessaire l'utilisation de mécanismes de sécurité supplémentaires pour vérifier l'identité de l'expéditeur.

Pour pallier ces limitations, il est indispensable de recourir à des protocoles ou des mécanismes situés dans les couches supérieures du modèle OSI, tels que TLS, SSL ou encore des mécanismes d'authentification applicative. Ces couches permettent d'ajouter des fonctionnalités de chiffrement, d'authentification et d'intégrité des données, compensant ainsi les lacunes inhérentes au protocole IP.

En résumé, bien que la couche IP soit essentielle au fonctionnement des réseaux et à l'acheminement des données, elle reste volontairement simple et peu sécurisée, laissant aux couches supérieures le soin d'assurer la fiabilité, l'intégrité et l'authenticité des communications.

Maximum Transmission Unit (MTU)

Lors du processus de routage, lorsqu'un datagramme traverse différents réseaux physiques, il peut être nécessaire de procéder à sa fragmentation. Cette fragmentation est effectuée par un équipement intermédiaire, généralement une gateway ou un routeur, qui découpe le datagramme en plusieurs fragments de taille plus petite afin de respecter les contraintes du réseau de destination. Chaque fragment ainsi créé conserve le même format général que le datagramme original, incluant son en-tête IP, ce qui permet de les traiter indépendamment tout en garantissant leur réassemblage ultérieur.

Chaque type de réseau possède sa propre valeur de MTU (Maximum Transmission Unit). Cette valeur définit la taille maximale d'un paquet qu'un réseau peut transmettre sans fragmentation. Par exemple, certains réseaux à haut débit permettent des paquets plus volumineux, tandis que d'autres, plus anciens ou plus limités, imposent des tailles plus réduites. Lorsqu'un paquet dépasse la MTU d'un réseau intermédiaire, il doit être fragmenté avant d'être transmis, puis réassemblé à destination.

Les fragments d'un datagramme sont gérés à l'aide de plusieurs champs situés dans l'entête IP, notamment dans ce que l'on appelle le deuxième mot (word 2) de l'entête. Le champ Identification permet de regrouper tous les fragments appartenant à un même datagramme original, en leur attribuant un identifiant commun. Le champ Fragment Offset indique la position exacte du fragment dans le datagramme d'origine, permettant ainsi de reconstituer correctement les données dans le bon ordre lors du réassemblage.

Le champ Flags joue également un rôle essentiel dans la gestion de la fragmentation. Il contient notamment un bit appelé More Fragments (MF), indiquant si d'autres fragments suivent ou si le fragment actuel est le dernier de la séquence. Lorsque ce bit est désactivé, cela signifie que le fragment en question est le dernier, et que le réassemblage peut être considéré comme complet une fois tous les fragments précédents reçus.

La taille variable des paquets, et donc la fragmentation, dépend directement des caractéristiques du réseau traversé, notamment de son débit et de ses contraintes techniques. Sur des réseaux plus lents, l'envoi de paquets trop volumineux peut entraîner des délais importants, voire des pertes de performances dues à des retransmissions fréquentes. À l'inverse, des paquets plus petits permettent une meilleure adaptabilité, mais augmentent le nombre de paquets à traiter.

À titre indicatif, voici quelques valeurs de MTU observées sur différents types de réseaux ou technologies :

Technologie/types de réseau Description
Réseau Ethernet 10 Mbps Environ 1536 octets, ce qui constitue une valeur courante pour les réseaux Ethernet classiques.
FDDI (Fiber Distributed Data Interface) Jusqu'à 4096 octets, permettant une transmission de paquets plus volumineux sur fibre optique.
IEEE 802.3 Environ 1492 octets, une valeur standard utilisée dans certaines implémentations Ethernet.
X.25 Inférieur à 128 octets, ce qui reflète une technologie plus ancienne avec des contraintes importantes.
Token Ring Environ 4000 octets, offrant une capacité de transmission relativement élevée pour ce type de réseau.

Ainsi, la gestion du MTU et de la fragmentation est un élément clef du fonctionnement des réseaux IP, permettant d'adapter les transmissions aux contraintes physiques des différents supports tout en assurant l'acheminement correct des données à travers des infrastructures hétérogènes.

Internet Control Message Protocol (ICMP)

L'Internet Control Message Protocol (ICMP) est un protocole essentiel de la suite TCP/IP fonctionnant en étroite collaboration avec le protocole IP. Il utilise directement les datagrammes IP pour transporter ses messages de contrôle et de diagnostic entre les différents nouds d'un réseau. Contrairement aux protocoles de transport comme TCP ou UDP, ICMP n'est pas destiné à transporter des données applicatives, mais plutôt à fournir des informations de gestion, d'erreur et de supervision du réseau.

ICMP joue un rôle fondamental dans plusieurs mécanismes critiques du fonctionnement des réseaux :

ICMP est également largement utilisé pour les outils de diagnostic réseau, car il permet d'évaluer la connectivité entre machines et de détecter les anomalies dans le routage. Chaque message ICMP est encapsulé dans un datagramme IP et circule entre les machines concernées. Lorsqu'un problème est détecté par une machine intermédiaire, celle-ci génère un message ICMP et le renvoie à l'adresse source du paquet ayant causé l'erreur.

Structure d'un message ICMP

Un message ICMP possède une entête relativement simple, codée sur 32 bits, répartie comme suit :

Champ Taille Description
Type 8 bits Identifie la nature du message ICMP
Code 8 bits Précise la signification du type
Checksum 16 bits Permet la vérification d'intégrité

Le champ Code varie en fonction du type et permet de détailler plus finement la cause ou la nature du message.

Principaux types de messages ICMP

Les types ICMP définis notamment par les RFC 792 et 1256 sont résumés dans le tableau suivant :

Type Nom du message
0 Echo Reply
3 Destination Unreachable
4 Source Quench
5 Redirect
8 Echo Request
9 Router Advertisement
10 Router Solicitation
11 Time Exceeded
12 Parameter Problem
13 Timestamp Request
14 Timestamp Reply
15 Information Request
16 Information Reply
17 Address Mask Request
18 Address Mask Reply

Cas particulier : Ping (Echo Request / Reply)

Les messages ICMP les plus courants sont les types 8 (Echo Request) et 0 (Echo Reply), utilisés par l'outil bien connu ping. Le fonctionnement est simple :

Étape Description
1 Le client envoie un message ICMP de type 8 (Echo Request)
2 Le destinataire reçoit la requête
3 Le destinataire répond avec un message ICMP de type 0 (Echo Reply)
4 Les données initiales sont renvoyées à l'expéditeur

Cet échange permet de vérifier la connectivité réseau et de mesurer les temps de réponse.

Détails du type 3 : Destination Unreachable

Lorsqu'un message ICMP de type 3 est émis, le champ Code permet de préciser la cause exacte de l'indisponibilité :

Code Signification
0 Network unreachable
1 Host unreachable
2 Protocol unreachable
3 Port unreachable
4 Fragmentation needed and DF bit set
5 Source route failed
7 Destination host unknown
11 Network unreachable for type of service
12 Host unreachable for type of service
13 Communication administratively prohibited
14 Host precedence violation
15 Precedence cut-off in effect

Autres messages ICMP importants

Source Quench (Type 4)

Ce message est utilisé pour le contrôle de flux. Lorsqu'un routeur est surchargé, il peut demander à l'émetteur de ralentir temporairement l'envoi des paquets. Le message contient des informations similaires à Destination Unreachable, mais avec une finalité différente.

Redirect (Type 5)

Code Signification
0 Redirect datagram to network
1 Redirect datagram to host
2 Redirect for TOS + network
3 Redirect for TOS + host

Ce mécanisme permet à un routeur d'indiquer une meilleure route pour atteindre une destination donnée.

Router Discovery (Types 9 et 10)

Le protocole de découverte des routeurs permet à une machine d'être informée automatiquement de la présence des routeurs sur un réseau local.

Time Exceeded (Type 11)

Ce message est généré lorsque le champ TTL (Time To Live) d'un paquet atteint zéro. Cela signifie généralement qu'un paquet est resté trop longtemps dans le réseau, souvent à cause d'une boucle de routage.

Parameter Problem (Type 12)

Ce message indique qu'un paramètre invalide a été détecté dans l'en-tête IP, notamment dans le champ Options.

Timestamp (Types 13 et 14)

Type Fonction
13 Timestamp Request
14 Timestamp Reply

Ces messages permettent de synchroniser l'horloge entre machines ou de collecter des données statistiques.

Information et Address Mask

Type Utilisation
15-16 Information Request/Reply
17-18 Address Mask Request/Reply

Ces messages sont utilisés pour obtenir des informations réseau, notamment dans des environnements comme SLIP, ou pour découvrir le masque de sous-réseau.

Sécurité et usages détournés

ICMP peut également être utilisé de manière malveillante. Par exemple :

Ainsi, bien qu'ICMP soit indispensable au bon fonctionnement et au diagnostic des réseaux, il doit être surveillé et contrôlé pour éviter les abus.

Adressage IP

Chaque interface réseau connectée à Internet est identifiée par une adresse IP (Internet Protocol) codée sur 32 bits dans le cas d'IPv4. Cette adresse constitue un identifiant unique permettant de localiser et de distinguer chaque machine sur un réseau TCP/IP. Une adresse IP est généralement représentée sous une forme lisible appelée notation décimale pointée, composée de quatre nombres compris entre 0 et 255, séparés par des points, comme par exemple :

194.78.19.132

Cette représentation correspond en réalité à quatre octets (32 bits), et peut également être exprimée sous forme hexadécimale, comme dans l'exemple : 0x9A0B3CFF. Quelle que soit sa représentation, chaque adresse IP est conçue pour être unique au sein d'un réseau donné, garantissant ainsi l'identification sans ambiguïté de chaque périphérique connecté.

Structure d'une adresse IP

Une adresse IP est divisée en deux parties principales :

Cette séparation permet de structurer l'adressage en distinguant la partie qui identifie le réseau global et celle qui identifie une machine spécifique au sein de ce réseau.

Caractéristiques générales

L'adresse IP doit être unique dans l'ensemble du réseau afin d'éviter tout conflit de communication. Si un ordinateur dispose de plusieurs interfaces réseau (par exemple Ethernet et Wi-Fi), il devra posséder une adresse IP distincte pour chacune d'elles.

Il est important de noter qu'une adresse IP ne contient aucune information géographique. Contrairement à certains systèmes de numérotation (comme les numéros de téléphone), il n'existe pas de découpage géographique explicite dans l'adressage IP. De même, il n'existe pas de hiérarchie stricte comparable à certains systèmes de communication comme la norme CCITT X.121.

Les classes d'adresses IP

Lorsqu'une organisation demande des adresses IP auprès d'une autorité (comme un registre Internet régional), il lui est demandé de préciser la classe de réseau souhaitée. Les adresses IPv4 sont historiquement divisées en plusieurs classes, dont les principales sont les classes A, B et C.

Tableau des classes IP

Classe Plage d'adresses Répartition réseau/hôte Nombre d'hôtes possibles
A 1.0.0.0 à 126.255.255.255 1 octet réseau / 3 octets hôte 16 777 214
B 128.0.0.0 à 191.255.255.255 2 octets réseau / 2 octets hôte 65 534
C 192.0.0.0 à 223.255.255.255 3 octets réseau / 1 octet hôte 254

Détails des classes

Classe A

Un réseau de classe A utilise le premier octet pour identifier le réseau, laissant 24 bits (3 octets) pour les hôtes. Cela permet un très grand nombre d'adresses, soit environ 16 777 216 combinaisons, dont 16 777 214 utilisables, car certaines adresses sont réservées.

Ce type d'adressage est réservé aux très grands réseaux, comme ceux des grandes entreprises ou institutions mondiales.

Classe B

Les réseaux de classe B utilisent deux octets pour le réseau et deux octets pour les hôtes, ce qui offre une capacité intermédiaire.

Cette classe est adaptée aux organisations de taille moyenne à grande.

Classe C

Les réseaux de classe C utilisent trois octets pour le réseau et un seul octet pour les hôtes.

Cette classe est généralement utilisée pour des petits réseaux locaux.

Répartition des classes selon les bits

Les classes d'adresses sont également identifiables par les bits de poids fort :

Classe Bits de début Plage
A 0xxxxxxx 1 à 126
B 10xxxxxx 128 à 191
C 110xxxxx 192 à 223

Adresses spéciales : Loopback

Les adresses de la forme 127.0.0.x sont utilisées pour le loopback (bouclage local). Elles permettent de tester le fonctionnement du protocole IP sans utiliser de réseau physique.

Tableau des usages de 127.0.0.x

Adresse Utilisation
127.0.0.1 Adresse loopback standard (localhost)
127.0.0.x Toute adresse de la classe loopback

Ces adresses sont utilisées pour :

Remarques importantes

Le loopback (classe 127) est essentiel pour :

En résumé, l'adressage IP constitue un élément fondamental du réseau Internet, permettant d'identifier de manière unique chaque machine et d'organiser les communications à grande échelle, tout en introduisant une structure hiérarchique basée sur les classes d'adresses.

Adresses IP spéciales et règles avancées d'adressage

Dans le cadre du protocole Internet (IP), certaines adresses ne sont pas utilisées pour identifier directement une machine classique sur le réseau, mais remplissent des fonctions particulières essentielles au bon fonctionnement des communications. Ces adresses sont appelées adresses spéciales, et leur compréhension est fondamentale pour maîtriser les mécanismes de routage, de configuration et de diffusion des données.

Les principales adresses spéciales

Parmi ces adresses particulières, deux valeurs sont particulièrement importantes et fréquemment utilisées :

Classes d'adresses étendues : D et E

Dans le système d'adressage IP classique (classful), les adresses dont la valeur du premier octet dépasse 223 sont réservées à des usages spécifiques :

Contrairement aux classes A, B et C, ces classes ne sont donc pas destinées à l'attribution classique d'adresses à des hôtes.

Contraintes sur les adresses IP des hôtes

Pour garantir un fonctionnement correct du réseau, certaines règles doivent impérativement être respectées :

Dans le jargon des réseaux, les utilisateurs qui ne respectent pas ces conventions sont parfois appelés avec humour des «martiens», car leurs configurations semblent "venir d'une autre planète".

Adresse réseau et adresse de diffusion

Une adresse IP est composée de deux parties : une partie réseau et une partie hôte. Selon la valeur de la partie hôte, l'adresse prend une signification particulière.

Adresse réseau

Lorsqu'une adresse IP possède tous les bits de la partie hôte à zéro, elle ne désigne pas une machine, mais le réseau lui-même.

Exemple :

Ces adresses sont principalement utilisées :

Elles ne doivent jamais être utilisées comme adresse de destination.

Adresse de broadcast (diffusion dirigée)

À l'inverse, lorsqu'une adresse possède tous les bits hôte à 1, elle correspond à une adresse de diffusion (broadcast).

Exemple :

Caractéristiques :

Interprétation des adresses particulières

Voici quelques exemples typiques permettant de mieux comprendre la signification concrète des adresses IP :

L'adresse 127.0.0.1 est particulièrement importante, car elle permet de tester la pile réseau localement sans envoyer de trafic sur le réseau.

Utilisation des adresses privées

Lors de tests ou de configurations internes, il est fortement déconseillé d'utiliser des adresses IP arbitraires, car cela peut provoquer des conflits avec des réseaux existants.

Pour éviter cela, des plages d'adresses privées ont été définies :

Ces adresses :

Rôle des organismes de gestion

L'attribution des adresses IP est coordonnée à l'échelle mondiale par l'Internet Assigned Numbers Authority (IANA).

Cette organisation délègue la gestion à des entités régionales :

Ces organismes délèguent ensuite à des structures locales appelées local registries, qui :

Relations avec les fournisseurs d'accès

Dans la pratique, ce sont souvent les fournisseurs d'accès Internet (FAI) qui attribuent les adresses IP.

Selon le type de contrat :

Ces contraintes sont liées aux techniques modernes de routage comme le CIDR (Classless InterDomain Routing), qui optimise l'utilisation des adresses IP.

Attribution dynamique des adresses

Dans le cas de connexions via modem ou réseau distant (ex : SLIP ou PPP) :

Sous des systèmes comme Windows, il suffit d'activer :

Communication entre réseaux

Un point fondamental du fonctionnement IP est le suivant :

Cas typiques

Le routeur joue donc un rôle essentiel en assurant :

Conclusion

L'ensemble des règles entourant les adresses IP spéciales, les classes d'adresses et les mécanismes de routage constitue la base du fonctionnement d'Internet. Une bonne compréhension de ces notions permet :

Ces concepts restent fondamentaux, même dans les architectures modernes où les mécanismes comme le CIDR ou le DHCP ont largement automatisé la gestion des adresses.



Dernière mise à jour : Mardi, le 16 février 2016