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 :
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.
TCP/IP regroupe
globalement deux notions :
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.
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).
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 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 :
|
Niveau |
Ancien modèle |
Nouveau modèle |
|
Niveau 7 |
Couche
Application |
Niveau
Application |
|
Niveau 6 |
Couche
Présentation |
Niveau
Présentation |
|
Niveau 5 |
Couche
Session |
Niveau
Session |
|
Niveau 4 |
Couche
Transport |
Niveau
Message |
|
Niveau 3 |
Couche
Réseau |
Niveau
Paquet |
|
Niveau 2 |
Couche
Liaison Données |
Niveau
Trame |
|
Niveau 1 |
Couche
Physique |
Niveau
Physique |
Le modèle TCP/IP, inspiré
du modèle OSI, reprend l'approche modulaire (utilisation de modules ou couches)
mais en contient uniquement quatre :
|
Modèle TCP/IP |
Modèle OSI |
|
Couche
Application |
Couche
Application |
|
Couche
Présentation |
|
|
Couche
Session |
|
|
Couche
Transport (TCP) |
Couche
Transport |
|
Couche
Internet (IP) |
Couche
Réseau |
|
Couche
Accès réseau |
Couche
Liaison données |
|
Couche
Physique |
Comme on peut le
remarquer, 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 :
Voici les
principaux protocoles faisant partie de
|
Modèle TCP/IP |
|
Couche
Application |
|
Couche
Accès réseau |
|
Couche
Physique |
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

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 :
La couche accès réseau est
la première couche de
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 :
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).
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.
Les trois
premiers protocoles sont les protocoles les plus importants de cette couche...
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 :
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 :
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:
|
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:
|
<-- |
32 bits |
--> |
|
Version |
Longueur d'en-tête |
Type de service |
Longueur totale |
|
|
Identification |
Drapeau |
Décalage fragment |
||
|
Durée de vie |
Protocole |
Somme de contrôle en-tête |
||
|
Adresse IP source (32 bits) |
||||
|
Adresse IP destination (32 bits) |
||||
|
Données |
||||
Voici la signification des
différents champs:
|
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 |
|
1500 |
|
|
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
(il ajoute un en-tête à chaque fragment) de telle façon à tenir compte de la
nouvelle taille du fragment, et en ajoutant des informations afin que la
machine de destination puisse réassembler les
fragments dans le bon ordre (rien ne dit que les fragments vont arriver 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:
Le routage IP fait
partie intégrante de
Pour plus d'informations
le mieux est de se reporter à la RFC 791 expliquant
de manière détaillée le protocole IP :
|
Le but du
protocole ARP
|
Le protocole ARP a
un rôle phare parmi les protocoles de
Chaque machine connectée
au réseau possède un numéro d'identification de 48 bits. Ce numéro est un
numéro unique qui est fixé dès la fabrication de la carte en usine. Toutefois
la communication sur Internet ne se fait pas directement à partir de ce numéro
(car il faudrait modifier l'adressage des ordinateurs à chaque fois que l'on
change une carte réseau) mais à partir d'une adresse dite logique attribuée par
un organisme: l'adresse
IP.
Ainsi, pour faire
correspondre les adresses physiques aux adresses logiques, le protocole ARP
interroge les machines du réseau pour connaître leur adresse physique, puis
crée une table de correspondance entre les adresses logiques et les adresses
physiques dans une mémoire cache.
Lorsqu'une machine doit
communiquer avec une autre, elle consulte la table de correspondance. Si jamais
l'adresse demandée ne se trouve pas dans la table, le protocole ARP émet une
requête sur le réseau. L'ensemble des machines du réseau vont
comparer cette adresse logique à
Le protocole RARP (Reverse
Address Resolution Protocol) est beaucoup moins utilisé, il signifie Protocole
ARP inversé, il s'agit donc d'une sorte d'annuaire inversé des adresses
logiques et physiques.
En réalité le protocole RARP est essentiellement utilisé pour les stations de
travail n'ayant pas de disque dur et souhaitant connaître leur adresse
physique...
Le protocole RARP permet à
une station de connaître son adresse IP à partir d'une table de correspondance
entre adresse MAC (adresse physique) et adresses IP hébergée par une passerelle
(gateway) située sur le même réseau local (LAN).
Pour cela il faut que
l'administrateur paramètre le gateway (routeur) avec
la table de correspondance des adresses MAC/IP. En effet, à la différence de
ARP ce protocole est statique. Il faut donc que la table de correspondance soit
toujours à jour pour permettre la connexion de nouvelles cartes réseau.
RARP souffre de nombreuses
limitations. Il nécessite beaucoup de temps d'administration pour maintenir des
tables importantes dans les serveurs. Cela est d'autant plus vrai que le réseau
est grand. Cela pose les problèmes de la ressource humaine, nécessaire au
maintien des tables de correspondance et des capacités des matériels hébergeant
la partie serveur du protocole RARP. En effet, RARP permet à plusieurs serveurs
de répondre à des requêtes, bien qu'il ne prévoit pas de mécanismes
garantissant que tous les serveurs soient capables de répondre, ni même qu'ils
répondent de manière identique. Ainsi, dans ce type d'architecture on ne peut
avoir confiance en un serveur RARP pour savoir si à une adresse MAC peut être
liée à une adresse IP parce que d'autres serveurs ARP peuvent avoir une réponse
différente. Une autre limitation de RARP est qu'un serveur ne peut servir qu'un
LAN.
Pour pallier les deux
premiers problèmes d'administration, le protocole RARP peut être remplacé par
le protocole DRARP, qui en est une version dynamique. Une autre approche,
consiste à utiliser un serveur DHCP, qui lui, permet une résolution dynamique
des adresses. De plus, DHCP est compatible avec le protocole BOOTP. Comme ce
dernier il est routable ce qui permet de servir
plusieurs LAN. Il ne marche qu'avec IP.
Le protocole ICMP (Internet
Control Message Protocol) est un protocole qui
permet de gérer les informations relatives aux erreurs aux machines connectées.
Etant donné le peu de contrôles que le protocole IP
réalise, il permet non pas de corriger ces erreurs mais de faire part de ces
erreurs aux protocoles des couches voisines. Ainsi, le protocole ICMP est
utilisé par tous les routeurs,
qui l'utilisent pour signaler une erreur (appelé Delivery
Problem).
Les messages d'erreur ICMP
sont transportés sur le réseau sous forme de datagramme,
comme n'importe quelle donnée. Ainsi, les messages d'erreur peuvent eux-mêmes
être sujet d'erreurs.
Toutefois en cas d'erreur
sur un datagramme transportant un message ICMP, aucun
message d'erreur n'est délivré pour éviter un effet "boule de neige"
en cas d'incident sur le réseau.
Voici à quoi ressemble un
message ICMP encapsulé dans un datagramme IP:
|
En-tête |
Message ICMP
|
|
Signification
des messages ICMP
|
|
Type |
Code |
Message |
Signification
du message |
|
8 |
0 |
Demande
d'ECHO |
Ce
message est utilisé lorsqu'on utilise |
|
3 |
0 |
Destinataire
inaccessible |
Le
réseau n'est pas accessible |
|
3 |
1 |
Destinataire
inaccessible |
La
machine n'est pas accessible |
|
3 |
2 |
Destinataire
inaccessible |
Le
protocole n'est pas accessible |
|
3 |
3 |
Destinataire
inaccessible |
Le port
n'est pas accessible |
|
3 |
4 |
Destinataire
inaccessible |
Fragmentation
nécessaire mais impossible à cause du drapeau (flag) DF |
|
3 |
5 |
Destinataire
inaccessible |
Le
routage a échoué |
|
3 |
6 |
Destinataire
inaccessible |
Réseau
inconnu |
|
3 |
7 |
Destinataire
inaccessible |
Machine
inconnue |
|
3 |
8 |
Destinataire
inaccessible |
Machine
non connectée au réseau (inutilisé) |
|
3 |
9 |
Destinataire
inaccessible |
Communication
avec le réseau interdite |
|
3 |
10 |
Destinataire
inaccessible |
Communication
avec la machine interdite |
|
3 |
11 |
Destinataire
inaccessible |
Réseau
inaccessible pour ce service |
|
3 |
12 |
Destinataire
inaccessible |
Machine
inaccessible pour ce service |
|
3 |
11 |
Destinataire
inaccessible |
Communication
interdite (filtrage) |
|
4 |
0 |
Source Quench |
Le
volume de données envoyé est trop important, le routeur envoie ce message
pour prévenir qu'il sature afin de demander de réduire la vitesse de
transmission |
|
5 |
0 |
Redirection
pour un hôte |
Le
routeur remarque que la route d'un ordinateur n'est pas optimale et envoie
l'adresse du routeur à rajouter dans la table de routage de l'ordinateur |
|
5 |
1 |
Redirection
pour un hôte et un service donné |
Le
routeur remarque que la route d'un ordinateur n'est pas optimale pour un
service donné et envoie l'adresse du routeur à rajouter dans la table de
routage de l'ordinateur |
|
5 |
2 |
Redirection
pour un réseau |
Le
routeur remarque que la route d'un réseau entier n'est pas optimale et envoie
l'adresse du routeur à rajouter dans la table de routage des ordinateurs du
réseau |
|
5 |
3 |
Redirection
pour un réseau et un service donné |
Le
routeur remarque que la route d'un réseau entier n'est pas optimale pour un
service donné et envoie l'adresse du routeur à rajouter dans la table de
routage des ordinateurs du réseau |
|
11 |
0 |
Temps
dépassé |
Ce
message est envoyé lorsque le temps de vie d'un datagramme
est dépassé. L'en-tête du datagramme est renvoyé
pour que l'utilisateur sache quel datagramme a été
détruit |
|
11 |
1 |
Temps de
ré-assemblage de fragment dépassé |
Ce
message est envoyé lorsque le temps de ré-assemblage
des fragments d'un datagramme est dépassé. |
|
12 |
0 |
En-tête erronné |
Ce
message est envoyé lorsqu'un champ d'un en-tête est erronné.
La position de l'erreur est retournée |
|
13 |
0 |
Timestamp request |
Une
machine demande à une autre son heure et sa date système (universelle) |
|
14 |
0 |
Timestamp reply |
La
machine réceptrice donne son heure et sa date système afin que la machine
émettrice puisse déterminer le temps de transfert des données |
|
15 |
0 |
Demande
d'adresse réseau |
Ce
message permet de demander au réseau une adresse IP |
|
16 |
0 |
Réponse
d'adresse réseau |
Ce
message répond au message précédent |
|
17 |
0 |
Demande
de masque de sous-réseau |
Ce
message permet de demander au réseau un masque de sous-réseau |
|
18 |
0 |
Réponse
de masque de sous-réseau |
Ce
message répond au message précédent |
|
17 |
0 |
Timestamp reply |
La
machine réceptrice donne son heure et sa date système afin que la machine
émettrice puisse déterminer le temps de transfert des données |
|
Plus
d'informations
|
Pour plus d'informations
sur le protocole ICMP, le mieux est de se reporter à la RFC 792 expliquant
de manière détaillée le protocole :
TCP (qui signifie Transmission
Control Protocol, soit en français: Protocole
de Contrôle de Transmission) est un des principaux protocoles de la couche
transport du modèle TCP/IP.
Il permet, au niveau des applications, de gérer les données en provenance (ou à
destination) de la couche inférieure du modèle (c'est-à-dire le protocole IP). Lorsque les
données sont fournies au protocole IP, celui-ci les encapsule dans des datagrammes IP, en fixant le champ protocole à 6 (Pour
savoir que le protocole en amont est TCP...). TCP est un protocole
orienté connexion, c'est-à-dire qu'il permet à deux machines qui
communiquent de contrôler l'état de
Les
Grâce au protocole TCP,
les applications peuvent communiquer de façon sûre (grâce au système d'accusés
de réception du protocole TCP), indépendamment des couches inférieures. Cela
signifie que les routeurs (qui travaillent dans
Lors d'une communication à
travers le protocole TCP, les deux machines doivent établir une connexion. La
machine émettrice (celle qui demande la connexion) est appelée client, tandis
que la machine réceptrice est appelée serveur. On
dit qu'on est alors dans un environnement Client-Serveur.
Les machines dans un tel environnement communiquent en mode connecté, c'est-à-dire
que la communication se fait dans les deux sens.
Pour permettre le bon
déroulement de la communication et de tous les contrôles qui l'accompagnent,
les données sont encapsulées, c'est-à-dire qu'on ajoute aux paquets de données
un en-tête qui va permettre de synchroniser les transmissions et d'assurer leur
réception.
Une autre particularité de
TCP est de pouvoir réguler le débit des données grâce à sa capacité à émettre
des messages de taille variable, ces messages sont appelés segments.
TCP permet d'effectuer une
tâche importante: le multiplexage/démultiplexage, c'est-à-dire faire transiter
sur une même ligne des données provenant d'applications diverses ou en d'autres
mots mettre en série des informations arrivant en parallèle.

Ces opérations sont
réalisées grâce au concept de ports (ou sockets), c'est-à-dire un numéro associé à un type
d'application, qui, combiné à une adresse IP, permet
de déterminer de façon unique une application qui tourne sur une machine
donnée.
Un segment TCP est
constitué comme suit:
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
|
Port
Source |
Port
destination |
||||||||||||||||||||||||||||||
|
Numéro d'ordre |
|||||||||||||||||||||||||||||||
|
Numéro d'accusé de réception |
|||||||||||||||||||||||||||||||
|
Décalage |
réservée |
URG |
ACK |
PSH |
RST |
SYN |
FIN |
Fenêtre |
|||||||||||||||||||||||
|
Somme de contrôle |
Pointeur d'urgence |
||||||||||||||||||||||||||||||
|
Options |
Remplissage |
||||||||||||||||||||||||||||||
|
Données |
|||||||||||||||||||||||||||||||
Signification des
différents champs:
Le protocole TCP permet
d'assurer 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 de datagramme.
En réalité, le protocole
TCP possède un système d'accusé de réception permettant au client et au serveur
de s'assurer de la bonne réception mutuelle des données.
Lors de l'émission d'un segment, un numéro d'ordre (appelé aussi numéro
de séquence) est associé. A réception d'un segment de donnée, la machine
réceptrice va retourner un segment de donnée dont le drapeau ACK est à 1 (afin
de signaler qu'il s'agit d'un accusé de réception) accompagné d'un numéro
d'accusé de réception égal au numéro d'ordre précédent.

De plus, grâce à une
minuterie déclenchée dès réception d'un segment au niveau de la machine
émettrice, le segment est réexpédié dès que le temps imparti est écoulé, car
dans ce cas la machine émettrice considère que le segment est perdu...

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 d'ordre qu'il s'agit d'un doublon et ne
conservera que le dernier segment arrivé à destination...
Etant donné que ce
processus de communication, qui se fait grâce à une émission de données et d'un
accusé de réception, est basé sur un numéro d'ordre (appelé généralement numéro
de séquence), il faut que les machines émettrices et réceptrices (client et
serveur) connaîssent le numéro d'ordre initial de
l'autre machine.
L'établissement de la
connexion entre deux applications se fait souvent selon le schéma suivant:
Les deux machines doivent
donc synchroniser leurs séquences grâce à un mécanisme communément appelé three ways handshake (poignée de main en trois temps), que
l'on retrouve aussi lors de la clôture de session.
Ce dialogue permet
d'initier la communication, il se déroule en trois temps, comme sa dénomination
l'indique:

Suite à cette séquence
comportant trois échanges les deux machines sont synchronisées et la
communication peut commencer!
Il existe une technique de
piratage, appelée spoofing IP, permettant de corrompre cette relation
d'approbation à des fins malicieuses !
Dans de nombreux cas, il
est possible de limiter le nombre d'accusés de réception, afin de désengorger
le réseau, en fixant un nombre de séquence au bout duquel un accusé de
réception est nécessaire. Ce nombre est en fait stocké dans le champ fenêtre
de l'en-tête TCP/IP.
On appelle effectivement
cette méthode "méthode de la fenêtre glissante" car on définit
en quelque sorte une fourchette de séquences n'ayant pas besoin d'accusé de
réception, et celle-ci se déplace au fur et à mesure que les accusés de
réception sont reçus.
![]()

De plus, la taille de
cette fenêtre n'est pas fixe. En effet, le serveur peut inclure dans ses accusés
de réception en stockant dans le champ fenêtre la taille de la fenêtre qui lui
semble la plus adaptée. Ainsi, lorsque l'accusé de réception indique une
demande d'augmentation de la fenêtre, le client va déplacer le bord droit de la
fenêtre.
![]()
Par contre, dans le cas
d'une diminution, le client ne va pas déplacer le bord droit de la fenêtre vers
la gauche mais attendre que le bord gauche avance (avec l'arrivée des accusés
de réception).
![]()
Le client peut demander à
mettre fin à une connexion au même titre que le serveur.
La fin de la connexion se fait de la manière suivante:
|
Plus
d'informations
|
Pour plus d'informations
sur le protocole TCP, le mieux est de se reporter à la RFC 793 expliquant
de manière détaillée le protocole :
Le protocole UDP (User Datagram Protocol) est un
protocole non orienté connexion de la couche transport
du modèle TCP/IP.
Ce protocole est très simple étant donné qu'il ne fournit pas de contrôle
d'erreurs (il n'est pas orienté connexion...).
L'en-tête du segment UDP
est donc très simple:
|
Port Source |
Port Destination |
|
Longueur |
Somme de contrôle |
|
Données |
|
|
Signification
des différents champs |
|
Les
routeurs |
Les routeurs sont
les dispositifs permettant de "choisir" le chemin que les datagrammes vont emprunter pour arriver à destination.
Il s'agit de machines ayant plusieurs cartes réseau dont chacune est reliée à
un réseau différent. Ainsi, dans la configuration la plus simple, le routeur
n'a qu'à "regarder" sur quel réseau se trouve un ordinateur pour lui
faire parvenir les datagrammes en provenance de
l'expéditeur.
Toutefois, sur Internet le
schéma est beaucoup plus compliqué pour les raisons suivantes:
Ainsi, les routeurs
fonctionnent grâce à des tables de routage et des protocoles de routage, selon
le modèle suivant:
Ainsi, il
y a deux scénarios, soit l'émetteur et le destinataire appartiennent au même
réseau auquel cas on parle de remise directe, soit il y a au moins un
routeur entre l'expéditeur et le destinataire, auquel cas on parle de remise
indirecte.
Dans le cas de la remise
indirecte, le rôle du routeur, notamment celui de la table de routage, est très
important. Ainsi le fonctionnement d'un routeur est déterminé par la façon
selon laquelle cette table de routage est créée.
La table de routage est
une table de correspondance entre l'adresse de la machine visée et le noeud
suivant auquel le routeur doit délivrer le message. En réalité il suffit que le
message soit délivré sur le réseau qui contient la machine, il n'est donc pas
nécessaire de stocker l'adresse IP complète de la machine: seul l'identificateur
du réseau de l'adresse IP (c'est-à-dire l'ID réseau) a besoin d'être
stocké.
La table de routage est
donc un tableau contenant des paires d'adresses:
|
Adresse
de destination |
Adresse
du prochain routeur directement accessible |
Interface |
Ainsi grâce à cette table,
le routeur, connaissant l'adresse du destinataire encapsulée dans le message,
va être capable de savoir sur quelle interface envoyer le message (cela revient
à savoir quelle carte réseau utiliser), et à quel routeur, directement accessible
sur le réseau auquel cette carte est connectée, remettre le datagramme.
Ce mécanisme consistant à ne connaître que l'adresse du prochain maillon menant
à la destination est appelé routage par sauts successifs (en anglais next-hop routing).
Cependant, il se peut que
le destinataire appartienne à un réseau non référencé dans la table de routage.
Dans ce cas, le routeur utilise un routeur par défaut (appelé aussi passerelle
par défaut).
Voici, de façon
simplifiée, ce à quoi pourrait ressembler une table de routage:
|
Adresse
de destination |
Adresse
du prochain routeur directement accessible |
Interface |
|
194.56.32.124 |
131.124.51.108 |
2 |
|
110.78.202.15 |
131.124.51.108 |
2 |
|
53.114.24.239 |
194.8.212.6 |
3 |
|
187.218.176.54 |
129.15.64.87 |
1 |
Le message est ainsi remis
de routeur en routeur par sauts successifs, jusqu'à ce que le destinataire
appartienne à un réseau directement connecté à un routeur. Celui-ci remet alors
directement le message à la machine visée...
Dans le cas du routage
statique, c'est l'administrateur qui met à jour la table de routage.
Dans le cas du routage dynamique, par contre, un protocole appelé protocole
de routage permet la mise à jour automatique de la table afin qu'elle
contienne à tout moment la route optimale.
Internet est un ensemble
de réseaux connectés. Par conséquent tous les routeurs ne font pas le même
travail selon le type de réseau sur lequel ils se trouvent.

En effet, il y a
différents niveaux de routeurs, ceux-ci fonctionnent donc avec des protocoles
différents:
RIP signifie Routing
Information Protocol (protocole d'information de
routage). Il s'agit d'un protocole de type Vector
Distance (Vecteur Distance), c'est-à-dire que chaque routeur communique aux
autres routeurs la distance qui les sépare (le nombre de saut qui les sépare).
Ainsi, lorsqu'un routeur reçoit un de ces messages il incrémente cette distance
de 1 et communique le message aux routeurs directement accessibles. Les
routeurs peuvent donc conserver de cette façon la route optimale d'un message
en stockant l'adresse du routeur suivant dans la table de routage de telle
façon que le nombre de saut pour atteindre un réseau soit minimal. Toutefois ce
protocole ne prend en compte que la distance entre deux machines en termes de
saut, mais il ne considère pas l'état de la liaison afin de choisir la
meilleure bande passante possible.
OSPF (Open Shortest
Path First) est plus
performant que RIP et commence donc à le remplacer petit à petit. Il s'agit
d'un protocole de type protocole route-link (que
l'on pourrait traduire par Protocole d'état des liens), cela signifie
que, contrairement à RIP, ce protocole n'envoie pas aux routeurs adjacents le
nombre de sauts qui les sépare, mais l'état de la liaison qui les sépare. De
cette façon, chaque routeur est capable de dresser une carte de l'état du
réseau et peut par conséquent choisir à tout moment la route la plus appropriée
pour un message donné.
De plus, ce protocole
évite aux routeurs intermédiaires d'avoir à incrémenter le nombre de sauts, ce
qui se traduit par une information beaucoup moins abondante, ce qui permet
d'avoir une meilleure bande passante utile qu'avec RIP.