Afin de voir le contenu de chaque trame de données échangées par deux machines connectées sur un même réseau, il est possible d'analyser le trafic qui transite sur la carte réseau d'une machine à l'aide d'un analyseur (également appelé sniffer) comme le logiciel Wireshark capable d'intercepter et d'interpréter l'ensemble des trames de données échangées:
Un tel logiciel permet de récupérer et visualiser l'ensemble des couches d'une trame dont les données proviennent d'une application réseau (tel qu'un navigateur Web utilisant le protocole HTTP).
De manière schématisée, une trame Ethernet (un protocole utilisé entre les cartes réseaux de la plupart des ordinateurs), traitée par la couche accès réseau de l'architecture TCP/IP, peut être découpée de la manière suivante:
Comme l'indique l'image ci-dessus, une trame est composée de différentes parties:
Bien évidemment, dans la réalité, une telle trame se présente sous la forme d'une séquence de bits:
Structure concrète d'une trame Ethernet
Identifiez les données constituant la trame ci-dessous en complétant les lignes vides:
|
Les paquets de données traités dans la couche internet de l'architecture TCP/IP sont des segments encapsulés, c'est-à-dire augmentés d'informations sur leur transport. Le protocole IP, utilisé dans la couche internet pour créer les paquets de données, est l'un des plus importants de l'architecture TCP/IP: il permet l'élaboration et le transport des paquets à l'aide d'un système d'adressage universel, sans toutefois en assurer la livraison. Les informations contenues dans l'en-tête des paquets IP sont analysées, voire modifiées, par les routeurs lors du transport des données au travers du réseau.
De manière schématisée, un paquet IP peut être découpé de la manière suivante:
Structure abstraite d'un paquet IP
Comme l'indique l'image ci-dessus, un paquet IP est constitué de différentes parties dont voici la signification de certaines:
Une adresse IP est une adresse numérique composée de 4 nombres entiers (4 octets) situés entre 0 et 255 généralement notée sous la forme 192.153.205.26. Une telle adresse, qui permet de localiser non seulement un ordinateur sur un réseau mais également la position du réseau connecté à Internet, est composée de deux parties de tailles variables:
192.153.205) désigne le réseau sur lequel est située la machine et est appelée ID de réseau;26) désignent le numéro d'ordinateur de la machine sur le réseau précédemment identifié, appelé ID d'hôte.Contrairement aux adresses MAC qui sont associées de manière unique à chaque carte réseau sans hiérarchie, les adresses IP garantissent une gestion hiérarchique de la localisation d'une machine connectée, engendrant par conséquent une meilleure efficacité lors du routage des paquets à transmettre. En quelques sorte l'adresse MAC d'une machine permet de l'identifier au même titre qu'un prénom alors que l'adresse IP de la machine permet de la localiser en indiquant le numéro du réseau sur lequel elle se trouve ainsi que son propre numéro sur ce réseau. Notons que l'adresse IP d'un ordinateur connecté à Internet peut être récupérée par le biais de certains sites.
Le routage des paquets IP fait partie intégrante de la couche internet du modèle TCP/IP. Le routage consiste à assurer l'acheminement d'un paquet IP à travers un réseau en empruntant le chemin le plus court. Ce rôle est assuré par les routeurs qui analyse l'en-tête des paquets d'informations reçues afin d'en récupérer l'adresse IP de l'émetteur et du récepteur.
Les protocoles de la couche transport doivent s'assurer de la fiabilité des données reçues à l'aide de sommes de contrôle, de l'ordre dans lequel les données sont reçues et doivent également déterminer à quelle application chaque segment de données doit être délivré à l'aide d'un mécanisme de numéro de port. Sur Internet, de nombreuses applications peuvent être exécutées simultanément (vous pouvez par exemple naviguer sur des pages HTML tout en téléchargeant un fichier par FTP). Chacune de ces applications travaille avec un protocole. Néanmoins, l'ordinateur doit pouvoir distinguer les différentes sources de données transmises ou reçues. Pour faciliter ce processus, chaque application se voit attribuer une adresse unique sur la machine, codée sur 16 bits: un port. L'adresse IP sert donc à identifier de façon unique un ordinateur sur le réseau tandis que le numéro de port indique l'application à laquelle les données sont destinées. De cette manière, lorsque l'ordinateur reçoit des informations destinées à un port, les données sont envoyées vers l'application correspondante. Voici certains des ports reconnus les plus couramment utilisés:
La couche transport contient deux protocoles permettant à deux applications d'échanger des données indépendamment du type de réseau emprunté:
Le protocole TCP est un protocole sûr, utilisé pour transférer des données qui ne peuvent pas se permettre de se perdre en route, comme celles provenant d'une base de données. On dit qu'il s'agit d'un protocole orienté connexion, c'est-à-dire qu'il permet à deux machines qui communiquent de contrôler l'état de la transmission. Le protocole récupère le flux d'information transmises par la couche application, le fragmente en segments ne dépassant pas une certaine taille (environ 1500 octets pour une trame Ethernet) et les envoie un à un au protocole IP. Lorsque des paquets IP contenant des segments TCP arrivent sur une machine, ils sont remis à l'entité TCP de la machine destinataire qui reconstruit le message d'origine avant de le transmettre à l'application réceptrice. La couche internet ne donnant aucune garantie de bonne remise des paquets, le protocole TCP doit gérer un temporisateur et retransmettre, si nécessaire, les données perdues. De plus, les paquets IP peuvent très bien arriver dans le désordre. En effet, dans un grand réseau avec de nombreux routeurs, les trames individuelles peuvent prendre différentes routes pour arriver à leur destination. Certaines routes étant plus ou moins longues selon leur vitesse de transfert, les trames peuvent arriver dans le désordre chez la machine réceptrice:
Origine du désordre des segments à la réception
TCP doit donc être capable de les rassembler en un message correctement ordonné à l'aide d'un système de numéro de séquence. En résumé, TCP assure la fiabilité qu'exigent la plupart des utilisateurs mais qu'IP n'est pas en mesure d'offrir.
De manière schématisée, un segment TCP peut être découpé de la manière suivante:
Structure abstraite d'un segment TCP
Comme l'indique l'image ci-dessus, un segment TCP est constitué de différentes parties dont voici la signification de certaines:
Comme le processus de communication établi par le protocole TCP est basé sur un numéro de séquence, il est important que les machines émettrice (client) et réceptrice (serveur) connaissent le numéro d'ordre initial de l'autre machine. L'établissement d'une connexion entre deux applications, l'une en attente (serveur), l'autre en demande (client), se fait dès lors le plus souvent selon un mécanisme de «poignée de main en trois temps» permettant aux machines de se synchroniser:
Une fois la connexion établie, le protocole TCP assure le transfert des données de façon fiable, bien qu'il utilise le protocole IP qui n'intègre aucun contrôle de livraison des paquets. En fait, le protocole TCP utilise les numéros de séquence afin d'ordonner les segments TCP reçus et de détecter les données perdues, les sommes de contrôle pour détecter des erreurs dans les données délivrées et un système d'accusé de réception afin de s'assurer de la bonne réception mutuelle des données. Ainsi, lors de l'émission d'un segment, un numéro de séquence est associé. A la réception d'un segment de données, la machine réceptrice va retourner un segment de données dont le drapeau ACK est à 1, accompagné d'un numéro d'accusé de réception correspondant au numéro de séquence précédent.
En outre, TCP gère la perte de segment grâce à un système de temporisation et de retransmission. Après envoi d'un segment, TCP attend un certain temps la réception de l'accusé de réception correspondant. Dès que le temps imparti est écoulé, l'expéditeur considère que le segment est perdu et le retransmet. 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 de séquence qu'il s'agit d'un doublon et ne conservera que le dernier segment arrivé à destination.
Le client peut demander à mettre fin à une connexion au même titre que le serveur de la manière suivante:
Contrairement au protocole TCP, le protocole UDP est un protocole de transport en mode non connecté utilisé pour transférer des données qui doivent arriver rapidement à leur destinataire et pour lesquelles quelques segments perdus n'auront pas de conséquences désastreuses, comme c'est le cas pour celles provenant d'un streaming audio ou vidéo. Le rôle de ce protocole est de permettre la transmission de données de manière très simple entre deux applications, chacune étant définie par une adresse IP et un numéro de port. Contrairement à TCP, il fonctionne sans négociation: il n'existe pas de procédure de connexion préalable à l'envoi des données, ce qui ne garantit ni la bonne livraison des segments à destination, ni leur ordre d'arrivée et encore moins la présence d'éventuels doublons.
De manière schématisée, un segment UDP peut être découpé de la manière suivante:
Structure abstraite d'un segment UDP
Comme l'indique l'image ci-dessus, un segment UDP est constitué de différentes parties dont voici la signification de certaines:
La nature de UDP le rend utile pour transmettre rapidement de petites quantités de données, depuis un serveur vers de nombreux clients ou bien dans des cas où la perte d'un segment est moins gênante que l'attente de sa retransmission. La voix sur IP ou les jeux en ligne sont des utilisateurs typiques de ce protocole.
D'autres données peuvent être contenus dans un paquet IP comme ceux gérés par le protocole ICMP. Ce protocole, auquel recours le programme ping, permet de gérer les informations relatives aux erreurs du protocole IP (par exemple lorsqu'un service ou un hôte est inaccessible). Il ne permet pas de corriger ces erreurs mais d'en informer les différents émetteurs des paquets erronés. En effet, le protocole IP ne gère que le transport des paquets et ne permet pas l'envoi de messages d'erreurs.
De manière schématisée, un paquet IP contenant des données ICMP peut être découpé de la manière suivante:
Structure abstraite d'un segment ICMP
Comme l'indique l'image ci-dessus, un tel paquet est constitué de différentes parties dont voici la signification de certaines:
Le principe du ping, utilisant des paquets ICMP, consiste à valider la présence d'un hôte IP. A ce dessein, l'application ping utilisera une séquence de type 8-0 (type de message - code d'erreur) afin d'émettre une demande d'écho. Les données reçues dans un message d'écho doivent être réémises dans la réponse. Ainsi, si le message de retour correspond à l'émission, on en déduit que l'hôte est présent.
Identifiez dans le paquet IP ci-dessous son type de contenu (TCP, UDP ou ICMP), les adresses IP source et destination ainsi que les données:
|
Remettez dans l'ordre les paquets ICMP ci-dessous provenant du programme ping et découvrez le message (en anglais !) qui y est inséré:
A ce dessein, utilisez le convertisseur ASCII situé ici et basez-vous sur la structure ci-dessous d'un paquet provenant du programme ping:
|
Finalement, résumons le fonctionnement d'Internet au travers d'une vidéo:
Fonctionnement d'Internet