Quelques notions sur les réseaux et notamment TCP/IP
On parle souvent d'adresse IP, de TCP/IP,
Que signifie TCP/IP ?
TCP/IP est une suite de protocoles. Le sigle TCP/IP signifie «Transmission Control Protocol/Internet Protocol» et se prononce «T-C-P-I-P». Il provient des noms des deux protocoles majeurs de la suite de protocoles, c`est-à -dire les protocoles TCP et IP).
TCP/IP représente d`une certaine façon l`ensemble des règles de communication sur internet et se base sur la notion adressage IP, c`est-à -dire le fait de fournir une adresse IP à chaque machine du réseau afin de pouvoir acheminer des paquets de données. Etant donné que la suite de protocoles TCP/IP a été créée à l`origine dans un but militaire, elle est conçue pour répondre à un certain nombre de critères parmi lesquels :
* Le fractionnement des messages en paquets ;
* L`utilisation d`un système d`adresses ;
* L`acheminement des données sur le réseau (routage) ;
* Le contrôle des erreurs de transmission de données.
La connaissance de l`ensemble des protocoles TCP/IP n`est pas essentielle pour un simple utilisateur, au même titre qu`un téléspectateur n`a pas besoin de connaître le fonctionnement de son téléviseur, ni des réseaux audiovisuels. Toutefois, sa connaissance est nécessaire pour les personnes désirant administrer ou maintenir un réseau TCP/IP.
Différence entre standard et implémentation
TCP/IP regroupe globalement deux notions :
La notion de standard : TCP/IP représente la façon dont les communications s`effectuent sur un réseau.
La notion d`implémentation : l`appellation TCP/IP est souvent étendue aux logiciels basés sur le protocole TCP/IP. TCP/IP est en fait un modèle sur lequel les développeurs d`applications réseau s`appuient. Les applications sont ainsi des implémentations du protocole TCP/IP.
TCP/IP est un modèle en couches
Afin de pouvoir appliquer le modèle TCP/IP à n`importe quelles machines, c`est-à -dire indépendamment du système d`exploitation, le système de protocoles TCP/IP a été décomposé en plusieurs modules effectuant chacun une tâche précise. De plus, ces modules effectuent ces tâches les uns après les autres dans un ordre précis, on a donc un système stratifié, c`est la raison pour laquelle on parle de modèle en couches.
Le terme de couche est utilisé pour évoquer le fait que les données qui transitent sur le réseau traversent plusieurs niveaux de protocoles. Ainsi, les données (paquets d`informations) qui circulent sur le réseau sont traitées successivement par chaque couche, qui vient rajouter un élément d`information (appelé en-tête) puis sont transmises à la couche suivante.
Le modèle TCP/IP est très proche du modèle OSI (modèle comportant 7 couches) qui a été mis au point par l`organisation internationale des standards (ISO, organisation internationale de normalisation) afin de normaliser les communications entre ordinateurs.
Présentation du modèle OSI
OSI signifie Open Systems Interconnection, ce qui se traduit par Interconnexion de systèmes ouverts. Ce modèle a été mis en place par l`ISO afin de mettre en place un standard de communications entre les ordinateurs d`un réseau, c`est-à -dire les règles qui gèrent les communications entre des ordinateurs. En effet, aux origines des réseaux chaque constructeur avait un système propre (on parle de système propriétaire). Ainsi de nombreux réseaux incompatibles coexistaient. C`est la raison pour laquelle l`établissement d`une norme a été nécessaire.
Le rôle du modèle OSI consiste à standardiser la communication entre les machines afin que différents constructeurs puissent mettre au point des produits (logiciels ou matériels) compatibles (pour peu qu`ils respectent scrupuleusement le modèle OSI).
L`intérêt d`un système en couches
Le but d`un système en couches est de séparer le problème en différentes parties (les couches) selon leur niveau d`abstraction.
Chaque couche du modèle communique avec une couche adjacente (celle du dessus ou celle du dessous). Chaque couche utilise ainsi les services des couches inférieures et en fournit à celle de niveau supérieur.
Le modèle OSI
le modèle OSI est un modèle qui comporte 7 couches, tandis que le modèle TCP/IP n`en comporte que 4. En réalité le modèle TCP/IP a été développé à peu près au même moment que le modèle OSI, c`est la raison pour laquelle il s`en inspire mais n`est pas totalement conforme aux spécifications du modèle OSI. Les couches du modèle OSI sont les suivantes :
La couche physique définit la façon dont les données sont physiquement converties en signaux numériques sur le média de communication (impulsions électriques, modulation de la lumière, etc.).
La couche liaison données définit l`interface avec la carte réseau et le partage du média de transmission.
La couche réseau permet de gérer l`adressage et le routage des données, c`est-à -dire leur acheminement via le réseau.
La couche transport est chargée du transport des données, de leur découpage en paquets et de la gestion des éventuelles erreurs de transmission.
La couche session définit l`ouverture et la destruction des sessions de communication entre les machines du réseau.
La couche présentation définit le format des données manipulées par le niveau applicatif (leur représentation, éventuellement leur compression et leur chiffrement) indépendamment du système.
La couche application assure l`interface avec les applications. Il s`agit donc du niveau le plus proche des utilisateurs, géré directement par les logiciels.
Le modèle TCP/IP
Le modèle TCP/IP, inspiré du modèle OSI, reprend l`approche modulaire (utilisation de modules ou couches) mais en contient uniquement quatre. Ainsi, les couches du modèle TCP/IP ont des tâches beaucoup plus diverses que les couches du modèle OSI, étant donné que certaines couches du modèle TCP/IP correspondent à plusieurs couches du modèle OSI.
Les rôles des différentes couches sont les suivants :
Couche Accès réseau : elle spécifie la forme sous laquelle les données doivent être acheminées quel que soit le type de réseau utilisé
Couche Internet : elle est chargée de fournir le paquet de données (datagramme)
Couche Transport : elle assure l`acheminement des données, ainsi que les mécanismes permettant de connaître l`état de la transmission
Couche Application : elle englobe les applications standard du réseau (Telnet, SMTP, FTP, ...)
Voici les principaux protocoles faisant partie de la suite TCP/IP :
Encapsulation des données
Lors d`une transmission, les données traversent chacune des couches au niveau de la machine émettrice. A chaque couche, une information est ajoutée au paquet de données, il s`agit d`un en-tête, ensemble d`informations qui garantit la transmission. Au niveau de la machine réceptrice, lors du passage dans chaque couche, l`en-tête est lu, puis supprimé. Ainsi, à la réception, le message est dans son état originel...
A chaque niveau, le paquet de données change d`aspect, car on lui ajoute un en-tête, ainsi les appellations changent suivant les couches :
Le paquet de données est appelé message au niveau de la couche Application
Le message est ensuite encapsulé sous forme de segment dans la couche Transport
Le segment une fois encapsulé dans la couche Internet prend le nom de datagramme
Enfin, on parle de trame au niveau de la couche Accès réseau
La couche Accès réseau
La couche accès réseau est la première couche de la pile TCP/IP, elle offre les capacités à accéder à un réseau physique quel qu`il soit, c`est-à -dire les moyens à mettre en oeuvre afin de transmettre des données via un réseau.
Ainsi, la couche accès réseau contient toutes les spécifications concernant la transmission de données sur un réseau physique, qu`il s`agisse de réseau local (Anneau à jeton - token ring, ethernet, FDDI), de connexion à une ligne téléphonique ou n`importe quel type de liaison à un réseau. Elle prend en charge les notions suivantes :
Acheminement des données sur la liaison
Coordination de la transmission de données (synchronisation)
Format des données
Conversion des signaux (analogique/numérique)
Contrôle des erreurs à l`arrivée
...
Heureusement toutes ces spécifications sont transparentes aux yeux de l`utilisateur, car l`ensemble de ces tâches est en fait réalisé par le système d`exploitation, ainsi que les drivers du matériel permettant la connexion au réseau (ex : driver de carte réseau).
La couche Internet
La couche Internet est la couche "la plus importante" (elles ont toutes leur importance) car c`est elle qui définit les datagrammes, et qui gère les notions d`adressage IP.
Elle permet l`acheminement des datagrammes (paquets de données) vers des machines distantes ainsi que de la gestion de leur fragmentation et de leur assemblage à réception.
La couche Internet contient 5 protocoles :
Le protocole IP
Le protocole ARP
Le protocole ICMP
Le protocole RARP
Le protocole IGMP
Les trois premiers protocoles sont les protocoles les plus importants de cette couche...
La couche Transport
Les protocoles des couches précédentes permettaient d`envoyer des informations d`une machine à une autre. La couche transport permet à des applications tournant sur des machines distantes de communiquer. Le problème consiste à identifier ces applications.
En effet, suivant la machine et son système d`exploitation, l`application pourra être un programme, une tâche, un processus...
De plus, la dénomination de l`application peut varier d`un système à un autre, c`est la raison pour laquelle un système de numéro a été mis en place afin de pouvoir associer un type d`application à un type de données, ces identifiants sont appelés ports.
La couche transport contient deux protocoles permettant à deux applications d`échanger des données indépendamment du type de réseau emprunté (c`est-à -dire indépendamment des couches inférieures...), il s`agit des protocoles suivants :
TCP, un protocole orienté connexion qui assure le contrôle des erreurs
UDP, un protocole non orienté connexion dont le contrôle d`erreur est archaïque
La couche Application
La couche application est la couche située au sommet des couches de protocoles TCP/IP. Celle-ci contient les applications réseaux permettant de communiquer grâce aux couches inférieures.
Les logiciels de cette couche communiquent donc grâce à un des deux protocoles de la couche inférieure (la couche transport) c`est-à -dire TCP ou UDP.
Les applications de cette couche sont de différents types, mais la plupart sont des services réseau, c`est-à -dire des applications fournies à l`utilisateur pour assurer l`interface avec le système d`exploitation. On peut les classer selon les services qu`ils rendent :
Les services de gestion (transfert) de fichier et d`impression
Les services de connexion au réseau
Les services de connexion à distance
Les utilitaires Internet divers
Le rôle du protocole IP
Le protocole IP fait partie de la couche Internet de la suite de protocoles TCP/IP. C`est un des protocoles les plus importants d`Internet car il permet l`élaboration et le transport des datagrammes IP (les paquets de données), sans toutefois en assurer la « livraison ». En réalité, le protocole IP traite les datagrammes IP indépendamment les uns des autres en définissant leur représentation, leur routage et leur expédition.
Le protocole IP détermine le destinataire du message grâce à 3 champs :
Le champ adresse IP : adresse de la machine
Le champ masque de sous-réseau : un masque de sous-réseau permet au protocole IP de déterminer la partie de l`adresse IP qui concerne le réseau
Le champ passerelle par défaut : Permet au protocole Internet de savoir à quelle machine remettre le datagramme si jamais la machine de destination n`est pas sur le réseau local
Les datagrammes
Les données circulent sur Internet sous forme de datagrammes (on parle aussi de paquets). Les datagrammes sont des données encapsulées, c`est-à -dire des données auxquelles on a ajouté des en-têtes correspondant à des informations sur leur transport (telles que l`adresse IP de destination).
Les données contenues dans les datagrammes sont analysées (et éventuellement modifiées) par les routeurs permettant leur transit.
Voici ce à quoi ressemble un datagramme sur 32 bits:
Version (4 bits) |
Longueur d`en-tête (4 bits) |
Type de service (8 bits) |
Longueur totale (16 bits) |
|
Identification (16 bits) |
Drapeau (3 bits) |
Décalage fragment
(13 bits)
Durée de vie
(8 bits)Protocole
(8 bits)Somme de contrôle en-tête
(16 bits)Adresse IP source (32 bits)Adresse IP destination (32 bits)Données
Voici la signification des différents champs :
* Version (4 bits) : il s`agit de la version du protocole IP que l`on utilise (actuellement on utilise la version 4 IPv4) afin de vérifier la validité du datagramme. Elle est codée sur 4 bits.
* Longueur d`en-tête, ou IHL pour Internet Header Length (4 bits) : il s`agit du nombre de mots de 32 bits constituant l`en-tête (nota : la valeur minimale est 5). Ce champ est codé sur 4 bits.
* Type de service (8 bits) : il indique la façon selon laquelle le datagramme doit être traité.
* Longueur totale (16 bits): il indique la taille totale du datagramme en octets. La taille de ce champ étant de 2 octets, la taille totale du datagramme ne peut dépasser 65536 octets. Utilisé conjointement avec la taille de l`en-tête, ce champ permet de déterminer où sont situées les données.
* Identification, drapeaux (flags) et déplacement de fragment sont des champs qui permettent la fragmentation des datagrammes, ils sont expliqués plus bas.
* Durée de vie appelée aussi TTL, pour Time To Live (8 bits) : ce champ indique le nombre maximal de routeurs à travers lesquels le datagramme peut passer. Ainsi ce champ est décrémenté à chaque passage dans un routeur, lorsque celui-ci atteint la valeur critique de 0, le routeur détruit le datagramme. Cela évite l`encombrement du réseau par les datagrammes perdus.
* Protocole (8 bits) : ce champ, en notation décimale, permet de savoir de quel protocole est issu le datagramme
ICMP : 1
IGMP : 2
TCP : 6
UDP : 17
* Somme de contrôle de l`en-tête, ou en anglais header checksum (16 bits) : ce champ contient une valeur codée sur 16 bits qui permet de contrôler l`intégrité de l`en-tête afin de déterminer si celui-ci n`a pas été altéré pendant la transmission. La somme de contrôle est le complément à un de tous les mots de 16 bits de l`en-tête (champ somme de contrôle exclu). Celle-ci est en fait telle que lorsque l`on fait la somme des champs de l`en-tête (somme de contrôle incluse), on obtient un nombre avec tous les bits positionnés à 1
* Adresse IP source (32 bits) : Ce champ représente l`adresse IP de la machine émettrice, il permet au destinataire de répondre
* Adresse IP destination (32 bits) : adresse IP du destinataire du message
La fragmentation des datagrammes IP
Comme nous l`avons vu précédemment, la taille d`un datagramme maximale est de 65536 octets. Toutefois cette valeur n`est jamais atteinte car les réseaux n`ont pas une capacité suffisante pour envoyer de si gros paquets. De plus, les réseaux sur Internet utilisent différentes technologies, si bien que la taille maximale d`un datagramme varie suivant le type de réseau.
La taille maximale d`une trame est appelée MTU (Maximum Transfer Unit), elle entraînera la fragmentation du datagramme si celui-ci a une taille plus importante que le MTU du réseau.
Type de réseau -> MTU (en octets)
Arpanet -> 1000
Ethernet -> 1500
FDDI -> 4470
La fragmentation d`un datagramme se fait au niveau des routeurs, c`est-à -dire lors de la transition d`un réseau dont le MTU est important à un réseau dont le MTU est plus faible. Si le datagramme est trop grand pour passer sur le réseau, le routeur va le fragmenter, c`est-à -dire le découper en fragments de tailles inférieures au MTU du réseau et de telle façon que la taille du fragment soit un multiple de 8 octets.
Le routeur va ensuite envoyer ces fragments de manière indépendante et les réencapsuler (ajouter un en-tête à chaque fragment) de telle façon à tenir compte de la nouvelle taille du fragment. De plus, le routeur ajoute des informations afin que la machine de destination puisse réassembler les fragments dans le bon ordre. Rien ne dit toutefois que les fragments arriveront dans le bon ordre, étant donné qu`ils sont acheminés indépendamment les uns des autres.
Pour tenir compte de la fragmentation, chaque datagramme possède plusieurs champs permettant leur réassemblage :
champ déplacement de fragment (13 bits) : champ permettant de connaître la position du début du fragment dans le datagramme initial. L`unité de mesure de ce champ est de 8 octets (le premier fragment ayant une valeur de zéro).
champ identification (16 bits) : numéro attribué à chaque fragment afin de permettre leur réassemblage.
champ longueur totale (16 bits) : il est recalculé pour chaque fragment.
champ drapeau (3 bits) : il est composé de trois bits :
Le premier n`est pas utilisé.
Le second (appelé DF : Don`t Fragment) indique si le datagramme peut être fragmenté ou non. Si jamais un datagramme a ce bit positionné à un et que le routeur ne peut pas l`acheminer sans le fragmenter, alors le datagramme est rejeté avec un message d`erreur
Le dernier (appelé MF : More Fragments, en français Fragments à suivre) indique si le datagramme est un fragment de donnée (1). Si l`indicateur est à zéro, cela indique que le fragment est le dernier (donc que le routeur devrait être en possession de tous les fragments précédents) ou bien que le datagramme n`a pas fait l`objet d`une fragmentation
Le routage IP
Le routage IP fait partie intégrante de la couche IP de la suite TCP/IP. Le routage consiste à assurer l`acheminement d`un datagramme IP à travers un réseau en empruntant le chemin le plus court. Ce rôle est assuré par des machines appelées routeurs, c`est-à -dire des machines reliées (reliant) au moins deux réseaux.