Les applications Tcp/Ip utilisées par les intranets et l'Internet dépendent de plusieurs couches de protocoles. Le terme couche de protocole suggère qu'il y a interaction entre les différents protocoles. Chaque couche de protocoles interagit avec la couche suivante grâce à une interface spécifique.
Construire des systèmes, comme des protocoles, en les disposant en couches présente plusieurs avantages. Chaque couche peut-être définie précisément pour effectuer une fonction bien particulière. La couche représente en quelque sorte une boite noire à qui l'on fournit des données, qui les traite et les propose à la couche suivante. Ainsi, grâce à ses traitements, on peut présenter les données dans un format particulier, acheminer ces données de façon fiable à travers le réseau, choisir une route optimale pour ces données, etc.
En séparant les fonctions des couches de l'implémentation, on peut modifier certaines caractéristiques d'une couche sans toucher aux autres.
Développé en 1978 par l'ISO (Internationnal Organization of Standards) afin que soit défini un standard utilisé dans le développement de systèmes ouverts.
Chaque couche, excepté la 1ere et la dernière, utilise les services de la couche inférieure et propose des services à la couche supérieure.
Il est composé de 7 couches :
La couche physique s'occupe de la transmission des bits de façon brute
sur un canal de communication. Cette couche doit garantir la parfaite transmission
des données (un bit 1 envoyé doit bien être reçu
comme bit valant 1). Concrètement, cette couche doit normaliser les
caractéristiques électriques (un bit 1 doit être représenté par
une tension de 5 V, par exemple), les caractéristiques mécaniques
(forme des connecteurs, de la topologie...), les caractéristiques fonctionnelles
des circuits de données et les procédures d'établissement,
de maintien et de libération du circuit de données.
Son rôle est un rôle de "liant". Elle va transformer
la couche physique en une liaison à priori exempte d'erreurs de transmission
pour la couche réseau. Elle fractionne les données d'entrée
de l'émetteur en trames, transmet ces trames en séquence et gère
les trames d'acquittement renvoyées par le récepteur. Rappelons
que pour la couche physique, les données n'ont aucune signification
particulière. La couche liaison de données doit donc être
capable de reconnaître les frontières des trames. Cela peut poser
quelques problèmes, puisque les séquences de bits utilisées
pour cette reconnaissance peuvent apparaître dans les données.
La couche liaison de données doit être capable de renvoyer une
trame lorsqu'il y a eu un problème sur la ligne de transmission. De
manière générale, un rôle important de cette couche
est la détection et la correction d'erreurs intervenues sur la couche
physique. Cette couche intègre également une fonction de contrôle
de flux pour éviter l'engorgement du récepteur.
L'unité d'information de la couche liaison de données est la
trame qui est composées de quelques centaines à quelques milliers
d'octets maximum.
C'est la couche qui permet de gérer le sous-réseau, le routage
des paquets sur ce sous-réseau et l'interconnexion des différents
sous-réseaux entre eux. Au moment de sa conception, il faut bien déterminer
le mécanisme de routage et de calcul des tables de routage (tables statiques
ou dynamiques...).
La couche réseau contrôle également l'engorgement du sous-réseau.
On peut également y intégrer des fonctions de comptabilité pour
la facturation au volume, mais cela peut être délicat.
L'unité d'information de la couche réseau est le paquet.
Cette couche est responsable du bon acheminement des messages complets au
destinataire. Le rôle principal de la couche transport est de prendre
les messages de la couche session, de les découper s'il le faut en unités
plus petites et de les passer à la couche réseau, tout en s'assurant
que les morceaux arrivent correctement de l'autre côté. Cette
couche effectue donc aussi le ré-assemblage du message à la réception
des morceaux.
Cette couche est responsable du type de service à fournir à la
couche session, et finalement aux utilisateurs du réseau : service en
mode connecté ou non, avec ou sans garantie d'ordre de délivrance,
diffusion du message à plusieurs destinataires à la fois... Cette
couche est donc également responsable de l'établissement et du
relâchement des connexions sur le réseau.
Un des tous derniers rôles à évoquer est le contrôle
de flux.
C'est l'une des couches les plus importantes, car c'est elle qui fournit le
service de base à l'utilisateur, et c'est par ailleurs elle qui gère
l'ensemble du processus de connexion, avec toutes les contraintes qui y sont
liées.
L'unité d'information de la couche réseau est le message.
Cette couche organise et synchronise les échanges entre tâches
distantes. Elle réalise le lien entre les adresses logiques et les adresses
physiques des tâches réparties. Elle établit également
une liaison entre deux programmes d'application devant coopérer et commande
leur dialogue (qui doit parler, qui parle...). Dans ce dernier cas, ce service
d'organisation s'appelle la gestion du jeton. La couche session permet aussi
d'insérer des points de reprise dans le flot de données de manière à pouvoir
reprendre le dialogue après une panne.
Cette couche s'intéresse à la syntaxe et à la sémantique
des données transmises : c'est elle qui traite l'information de manière à la
rendre compatible entre tâches communicantes. Elle va assurer l'indépendance
entre l'utilisateur et le transport de l'information.
Typiquement, cette couche peut convertir les données, les reformater,
les crypter et les compresser.
Cette couche est le point de contact entre l'utilisateur et le réseau.
C'est donc elle qui va apporter à l'utilisateur les services de base
offerts par le réseau, comme par exemple le transfert de fichier, la
messagerie...
Tcp/Ip a été historiquement créé à la demande du ministère de la Défense des états-Unis, c'est pourquoi le modèle garde ce nom.
La couche la plus basse représente la connexion physique avec les câbles,
les circuits d'interface électrique, les cartes réseau, les protocoles
d'accès au réseau (Carrier Sense Multiple Access / Collision
Detection pour les réseaux éthernet et le jeton pour les réseaux
Token Ring). La couche accès réseau est utilisée par la
couche Internet.
La couche Internet doit fournir une adresse logique pour l'interface physique.
C'est la couche Ip qui assure ce travail. Elle fournit un mappage entre l'adresse
logique et l'adresse physique fournit par la couche accès réseau
grâce aux protocoles Arp (Address Resolution Protocol) et Rarp. Les incidents
et les diagnostics associées au protocole Ip relèvent du protocole
Icmp (Internet Control Message Protocol), qui opère aussi au niveau
de la couche internet.
Elle est aussi responsable du routage des paquets entre les hôtes. (Routing
Information Protocol et Open Shortest Path First).
La couche hôte à hôte définit les connexions entre
2 hôtes sur le réseau. Le modèle DoD comprend 2 protocoles
TCP, Transmission Control Protocol et UDP, User Datagram Protocol. Le protocole
Tcp est responsable du service de transmission fiable de données avec
détection et correction d'erreurs. Il permet des connexion full-duplex
dans une seule connexion. Udp est employé quand le volume de données
est très faible. En cas de non réponse, on ré-émet
tout simplement le paquet.
Elle permet aux applications d'utiliser les protocoles de la couche transport. On trouve les mêmes application que dans le modèle Osi.
La suite de protocoles Tcp/Ip comprend un ensemble performant de services qui peuvent utiliser un grande variété de technologies réseau comme les réseaux étendus, les réseaux locaux, les ondes radio, les satellites ou les lignes numéris. Les modules du protocole Tcp/Ip et les relations entre ces modules forment la hiérarchie de l'implémentation Tcp/Ip.
Plusieurs sessions existent entre les hôtes A et B. Comment les logiciels sur chaque hôtes arrivent-ils à différencier les divers protocoles ou applications au niveau d'une couche donnée ?
Le réseau ci-dessus montre un environnement supportant Ip et Icmp. Comment savoir si un paquet sortant du réseau est destiné à Ip ou Icmp ? Pour résoudre ce problème, la trame éthernet contient un champ de 2 octets : Ethertype utilisé par les protocoles de la couche réseau.
Le champ Ethertype de la couche liaison de données autorise le multiplexage de plusieurs protocoles réseau au niveau de la source, et le démultiplexage au niveau de la destination.
Quand la couche Ip reçoit un paquet éthernet, elle doit distinguer les paquets pour Tcp ou Udp grâce à un champ d'identification du protocole de 8 bits situé dans le paquet. Plusieurs implémentations de Tcp/Ip stockent ces valeurs dans un fichier : /etc/protocols.
De la même manière, quand un module Tcp ou Udp reçoit
un paquet de la couche Ip, il doit distinguer l'application qui traitera ce
paquet. Chaque paquet contient un champ de 16 bits indiquant le numéro
du port correspondant à l'application.
Fichier : /etc/services.
Les performances de Tcp/Ip, sa configuration et sa facilité de maintenance dépendent du système d'exploitation sur lequel il est implémenté. En théorie, le système n'est pas nécessaire pour faire tourner Tcp/Ip : il peut être implémenté en Rom. Toutefois, la plupart des implémentations commerciales de Tcp/Ip interagissent avec le système.
Ces interactions entre Tcp/Ip et système peuvent être classés de la façon suivante :
comme faisant partie du noyau (kernel)
comme un pilote de périphérique
comme un processus d'application
Dans un système comme Unix ou Netware, Tcp/Ip est implémenté dans le kernel du système. Cette implémentation permet d'obtenir des fonctions de communication très rapides.
Les systèmes dont l'implémentation de Tcp/Ip est faite sous forme de pilote de périphérique comprennent Windows Nt et Windows 3.11, 95, 98, et Me, Vms, Os/2 et Ms-Dos.
Les systèmes qui implémentent Tcp/Ip sous forme de processus
comprennent les systèmes des mainframes Ibm, Mvs.