Académique Documents
Professionnel Documents
Culture Documents
1. PRÉSENTATION
Un protocole est une méthode standard qui permet la communication entre des processus. Pour gérer les
communications sur le réseau, des protocoles définissent un ensemble de règles et de procédures à
respecter pour émettre et recevoir les données.
Ils existent différents protocoles assurant les fonctions des différentes couches du modèle OSI.
La couche liaison de données assure un transit fiable des données sur une liaison physique. Elle contrôle
l’accès au réseau et l’adressage physique.
Le protocole de la couche liaison de donnée le plus utilisé est le protocole Ethernet II.
64 octets minimum
Préambule : il s'agit d'un signal d'horloge permettant la synchronisation entre l'émetteur et le récepteur
(la valeur de chaque octet est 10101010).
SFD (Starting Frame Delimiter) : il indique le début de la trame (sa valeur est 10101011).
Adresse destinataire : il s'agit de l'adresse physique de l'équipement à qui la trame est envoyée.
Adresse source : il s'agit de l'adresse physique de l'équipement qui envoie la trame.
Type de protocole : il indique le protocole de couche supérieure (c'est à dire la couche réseau) utilisé.
Type de protocole
valeur protocole de la
(en hexadécimal) couche réseau
0800 IPv4
86DD IPv6
0806 ARP
8035 RARP
8138 IPx
8141 SNMP
Données : il s'agit des données du protocole de couche supérieure, par exemple un datagramme IP. Si
le datagramme occupe moins de 46 octets, des octets de bourrage sont ajoutés pour atteindre cette
valeur.
FCS : (Frame Check Sequence) il s'agit du résultat d'un calcul portant sur les quatre autres champs. A
la réception de la trame, la couche liaison de donnée effectue le même calcul et compare les deux
résultats. Si ces résultats sont différents, une erreur de transmission s'est produite. La trame est alors
ignorée.
Le calcul effectué est un calcul polynomial appelé CRC (Cyclique Redundancy Code).
La couche réseau de modèle OSI permet la connectivité et la sélection du chemin entre deux systèmes hôtes
à travers les différents nœuds du réseau.
Constitution du paquet IP :
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
Longueur
Version Type de service Longueur totale du datagramme
d'en-tête
(4 bits) (8 bits) (16 bits)
(4 bits)
Identification Drapeau Position du fragment
(16 bits) (3 bits) (13 bits)
Durée de vie Protocole Somme de contrôle de l’en-tête
(8 bits) (8 bits) (16 bits)
Adresse IP source
(32 bits)
Adresse IP destination
(32 bits)
Options
(facultatif et longueur variable)
Données
(longueur variable)
Version : il s'agit de la version du protocole IP que l'on utilise. Actuellement on utilise encore
essentiellement la version 4. La version 6 utilise une autre structure de datagramme.
Longueur d'en-tête (en anglais IHL pour Internet Header Length) : il s'agit du nombre de mots de 32
bits constituant l'en-tête. La valeur minimale est 5 ce qui correspond à 5 x 32 bits = 20 octets.
Type de service : il indique la façon selon laquelle le datagramme doit être traité.
Les 3 premiers bits indiquent la priorité de 000 (priorité la moins élevée – 0 1 2 3 4 5 6 7
par défaut) jusqu’à 111 (priorité la plus élevée – supervision réseau).
Priorité Service
Les 4 bits suivants indiquent respectivement au routeur :
o de choisir le chemin ayant un délai de transmission le plus court
+fiable
+débit
-délai
-coût
possible 0
o un débit élevé
o de diriger les datagrammes vers des liaisons fiables
o de choisir un chemin ayant un coût minimum
Le dernier bit est réservé pour des évolutions futures. Il doit rester à 0.
Longueur totale du datagramme : 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ù se situe le début des
données. Si un datagramme est fragmenté, ce champ fait référence à la longueur du fragment courant et
non à la longueur du datagramme initial.
Remarque : la fragmentation
Si un routeur reçoit un datagramme trop long pour le support sur lequel il doit l’envoyer, il est obligé de
fragmenter ce datagramme. C'est-à-dire le découper en fragments de taille inférieure.
Le routeur va ensuite envoyer ces fragments de manière indépendante et les réencapsuler (il ajoute un en-tête
à chaque fragment) 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...). Les informations permettant le réassemblage sont
contenue dans les champs identification, drapeau et déplacement de fragment.
Identification (en anglais ID pour identification) : il sert à identifier un datagramme ou les fragments d’un
datagramme. Ce champ à la même valeur pour tous les fragments provenant d’un même datagramme.
Drapeau (en anglais flag) : il sert à gérer la fragmentation.
o Le premier n'est pas utilisé et doit rester à 0.
o Le second (appelé DF : Don't Fragment, en français Ne pas fragmenter) sert à interdire la
fragmentation d’un datagramme. Lorsque l’indicateur est à 1 la fragmentation est interdire. Lorsque
l’indicateur est à 0 la fragmentation est autorisée. 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
o Le dernier (appelé MF : More Fragments, en français Fragments à suivre) indique que d’autres
fragments vont suivre. Lorsque l’indicateur est à 1, d’autres fragments vont encore arriver. Lorsque
l’indicateur est à 0, le fragment est le dernier (donc que le routeur devrait être en possession de
tous les fragments précédents) ou bien le datagramme n'a pas fait l'objet d'une fragmentation.
Position du fragment ou décalage de fragment : il permet de connaître la place qu’a le premier octet
de donnée du fragment dans le datagramme initial. L'unité de mesure de ce champ est de 8 octets. Ainsi
une valeur de 10 signifie que le premier octet de données du fragment est en fait l’octet 80 du
datagramme. Le premier fragment ou un datagramme non fragmenté a une valeur de zéro.
Durée de vie (en anglais TTL pour Time To Live) : il 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 : il indique à quel protocole de niveau plus élevé est destiné le datagramme.
Protocole
valeur protocole de la
(en décimal) couche transport
6 TCP
17 UDP
1 ICMP
Somme de contrôle de l'en-tête (en anglais header checksum) : il contient une valeur 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 sur 16 bits de la somme des compléments à 1 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 : il représente l'adresse IP de la machine émettrice, il permet au destinataire de
répondre.
Adresse IP destination : il représente l’adresse IP du destinataire du message.
Options : il s’agit d’options diverses. L'espace restant après les options sera rempli avec des zéros
pour avoir une longueur multiple de 32 bits.
Données : il s’agit des données du datagramme proprement dites.
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
Type d’adresse physique Type d’adresse logique
(2 octets) (2 octets)
Longueur de l’adresse Longueur de l’adresse
Opération
physique logique
(2 octets)
(1 octet) (1 octet)
Adresse physique de l’émetteur …
(4 premiers octets …)
… suite de l’Adresse physique de l’émetteur Adresse IP de l’émetteur …
(… 2 derniers octets) (2 premiers octets …)
… suite de l’Adresse IP de l’émetteur … Adresse physique du destinataire …
(… 2 derniers octets) (2 premiers octets …)
… suite de l’Adresse physique du destinataire
(… 4 derniers octets)
Adresse IP du destinataire
(4 octets)
Une station A veut envoyer un paquet IP à une station B du réseau local. La station A connaît l’adresse IP
de la station B mais ne connaît pas son adresse MAC.
• Etape 1 : La station A fabrique un paquet de requête ARP contenant l’adresse MAC de A, l’adresse IP
de A, l’adresse IP de B. L’adresse MAC de destination inconnue aura pour valeur 0.
• Etape 2 : Ce paquet est encapsulé dans une trame qui va être diffusée à toutes les stations du réseau
local. L’adresse source est l’adresse MAC de A. L’adresse de destination sera l’adresse de diffusion
(FF FF FF FF FF FF). Le type de protocole a pour valeur 08 06 (protocole ARP).
• Etape 3 : Toutes les stations du réseau local vont donc devoir prendre en compte cette trame et
analyser le paquet qui s’y trouve encapsulé. Les stations qui ne reconnaissent pas leur propre
adresse IP dans le champ IP destination ne font rien de plus. Par contre la station B qui reconnaît son
adresse IP doit fabriquer un paquet réponse ARP qui contient l’adresse MAC de B, l’adresse IP de B,
l’adresse MAC de A et l’adresse IP de A.
• Etape 4 : Ce paquet est encapsulé dans une trame qui va être envoyée à la station A. L’adresse
source est l’adresse MAC de B. L’adresse de destination est l’adresse MAC de A. Le type de
protocole a pour valeur 08 06 (protocole ARP). La station B va également mettre à jour sa table ARP.
• Etape 5 : La station A qui reçoit directement la trame (point à point) va pouvoir envoyer son paquet IP
dans une trame ayant la bonne adresse MAC de destination. La station A va également mettre à jour
sa table ARP. Ceci permettra de ne pas refaire une requête ARP lors du prochain envoi à la station B.
La couche transport assure le contrôle du transfert de bout en bout entre les deux systèmes d’extrémité. Elle
segmente puis rassemble le flux de données. Elle permet également d’établir et de raccorder les circuits virtuels
lorsque plusieurs connexions sont initiées. Finalement, elle assure la fiabilité du transport en assurant d’une
part la détection des pannes et la reprise de l’information et d’autre part le contrôle du flux d’informations.
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
(16 bits) (16 bits)
Longueur Somme de contrôle
(16 bits) (16 bits)
Données
(longueur variable)
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
(16 bits) (16 bits)
Numéro de séquence
(32 bits)
Numéro d’acquittement
(32 bits)
Déplacement
Réservé Drapeaux Fenêtre
(6 bits) (6 bits) (16 bits)
(4 bits)
Somme de contrôle Pointeur de message urgent
(16 bits) (16 bits)
Options
(facultatif et longueur variable)
Données
(longueur variable)
SYN
RST
FIN
réception.
o PSH (PUSH) : si ce drapeau est à 1, le paquet fonctionne suivant la méthode
PUSH.
o RST (RESET) : si ce drapeau est à 1, la connexion est réinitialisée.
o SYN : si ce drapeau est à 1, on demande l’établissement de la connexion.
o FIN : si ce drapeau est à 1, la connexion s'interrompt.
Fenêtre : Champ permettant de connaître le nombre d'octets que le récepteur souhaite recevoir sans
accusé de réception
Somme de contrôle (en anglais Checksum ou CRC): La somme de contrôle est réalisée en faisant la
somme des champs de données de l'en-tête, afin de pouvoir vérifier l'intégrité de l'en-tête
Pointeur d'urgence : Indique le numéro d'ordre à partir duquel l'information devient urgente
Options : Des options diverses. L'espace restant après les options sera rempli avec des zéros pour
avoir une longueur multiple de 32 bits.
Données : il s’agit des données du segment proprement dites.
L'établissement de la connexion entre deux applications se fait souvent selon le schéma suivant :
Les ports TCP doivent être ouverts
L'application sur le serveur est passive, c'est-à-dire que l'application est à l'écoute, en attente d'une
connexion
L'application sur le client fait une requête de connexion sur le serveur dont l'application est en
ouverture passive. L'application du client est dite "en ouverture active"
Etant donné que le processus de communication est basé sur un numéro d'ordre, il faut que les machines
émettrices et réceptrices (client et serveur) connaissent le numéro d'ordre initial de l'autre machine. Les deux
machines doivent donc synchroniser leurs séquences grâce à un mécanisme en trois échanges
communément appelé three ways handshake (littéralement : poignée de main en trois temps).
Dans un premier temps la machine émettrice (le client)
transmet un segment dont le drapeau SYN est à 1 (pour Etablissement de la connexion :
signaler qu'il s'agit d'un segment de synchronisation), avec un client serveur
numéro d'ordre que l'on appelle numéro d'ordre initial du
client. SYN 1, ACK 0
Dans un second temps la machine réceptrice (le serveur) SQ n
envoie un accusé de réception, c'est-à-dire un segment dont le
drapeau ACK est à 1 et le drapeau SYN est à 1 (car il s'agit là SYN 1, ACK 1
encore d'une synchronisation). Ce segment contient le numéro SQ m
d'ordre de cette machine (du serveur) qui est le numéro AR n+1
d'ordre initial du serveur. Le champ accusé de réception
contient le numéro d'ordre initial du client incrémenté de 1 (qui
SYN 0, ACK 1
assure que le serveur répond à la requête du client).
SQ n+1
Enfin, le client transmet au serveur un accusé de réception,
AR m+1
c'est-à-dire un segment dont le drapeau ACK est à 1, dont le
drapeau SYN est à zéro (il ne s'agit plus d'un segment de
synchronisation). Son numéro d'ordre est incrémenté et le SQ : numéro d’ordre
numéro d'accusé de réception représente le numéro d'ordre AR : numéro d’accusé de réception
initial du serveur incrémenté de 1. SYN : bit SYN
ACK : bit ACK
SQ 57
AR 204
De plus, grâce à une minuterie déclenchée dès réception d'un Re-émission des données
segment au niveau de la machine émettrice, le segment est réexpédié perdues :
dès que le temps imparti est écoulé, car dans ce cas la machine
client serveur
émettrice considère que le segment est perdu.
SQ 57
Toutefois, si le segment n'est pas perdu et qu'il arrive tout de même à AR 204
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. SQ 57
AR 204
SQ 204
AR 58
SQ 204
AR 60
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 :
Une des machines envoie un segment avec le drapeau FIN à 1, et l'application se met en état
d'attente de fin, c'est-à-dire qu'elle finit de recevoir le segment en cours et ignore les suivants
Après réception de ce segment, l'autre machine envoie un accusé de réception avec le drapeau FIN
à 1 et continue d'expédier les segments en cours. Suite à cela la machine informe l'application qu'un
segment FIN a été reçu, puis envoie un segment FIN à l'autre machine, ce qui clôture la connexion...
5. LE PROTOCOLE ICMP
Le protocole ICMP (Internet Control Message Protocol) est un protocole qui permet de gérer les informations
relatives aux erreurs. 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).
Le message ICMP est encapsulé dans un paquet IP.
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
Type Code Somme de contrôle
(8 bits) (8 bits) (16 bits)
Message
(longueur variable)
Ce message est utilisé pour la commande PING. Cette commande, permettant de tester le réseau,
8 0 Demande d'ECHO
envoie un datagramme à un destinataire et lui demande de le restituer
0 0 Réponse d’ECHO Ce message est utilisé pour la commande PING. Il s’agit de la restitution du datagramme envoyé
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)
Le volume de données envoyé est trop important, le routeur envoie ce message pour prévenir qu'il
4 0 Source Quench
sature afin de demander de réduire la vitesse de transmission
Le routeur remarque que la route d'un ordinateur n'est pas optimale et envoie l'adresse du routeur à
5 0 Redirection pour un hôte
rajouter dans la table de routage de l'ordinateur
Redirection pour un hôte et Le routeur remarque que la route d'un ordinateur n'est pas optimale pour un service donné et
5 1
un service donné envoie l'adresse du routeur à rajouter dans la table de routage de l'ordinateur
Le routeur remarque que la route d'un réseau entier n'est pas optimale et envoie l'adresse du
5 2 Redirection pour un réseau
routeur à rajouter dans la table de routage des ordinateurs du réseau
Redirection pour un réseau Le routeur remarque que la route d'un réseau entier n'est pas optimale pour un service donné et
5 3
et un service donné envoie l'adresse du routeur à rajouter dans la table de routage des ordinateurs du réseau
Ce message est envoyé lorsque le temps de vie d'un datagramme est dépassé. L'en-tête du
11 0 Temps dépassé
datagramme est renvoyé pour que l'utilisateur sache quel datagramme a été détruit
Temps de ré-assemblage Ce message est envoyé lorsque le temps de ré-assemblage des fragments d'un datagramme est
11 1
de fragment dépassé dépassé.
Ce message est envoyé lorsqu'un champ d'un en-tête est erronné. La position de l'erreur est
12 0 En-tête erronné
retournée
13 0 Timestamp request Une machine demande à une autre son heure et sa date système (universelle)
La machine réceptrice donne son heure et sa date système afin que la machine émettrice puisse
14 0 Timestamp reply
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
Demande de masque de
17 0 Ce message permet de demander au réseau un masque de sous-réseau
sous-réseau
Réponse de masque de
18 0 Ce message répond au message précédent
sous-réseau
valeur protocole
associé
application
(en décimal)
remarque :
Les ports 0 à 1023 sont les «ports reconnus» ou réservés («Well Known Ports»). Ils sont, de manière
générale, réservés aux processus système ou aux programmes exécutés par des utilisateurs privilégiés. Un
administrateur réseau peut néanmoins lier des services aux ports de son choix.
Les ports 1024 à 49151 sont appelés «ports enregistrés» («Registered Ports»).
Les ports 49152 à 65535 sont les «ports dynamiques et/ou privés» («Dynamic and/or Private Ports»).
Ainsi, un serveur (un ordinateur que l'on contacte et qui propose des services) possède des numéros de port
fixes auxquels l'administrateur réseau a associé des services. Ainsi, les ports d'un serveur sont généralement
compris entre 0 et 1023 (fourchette de valeurs associées à des services connus).
Du côté du client, le port est choisi aléatoirement parmi ceux disponibles par le système d'exploitation. Ainsi,
les ports du client ne seront jamais compris entre 0 et 1023 car cet intervalle de valeurs représente les ports
connus.
Chaque protocole est encapsulé dans un protocole particulier de niveau inférieur. Ainsi un message HTTP
est encapsulé dans un segment TCP. Ce segment TCP est encapsulé dans un datagramme IP. Et enfin, ce
datagramme IP est encapsulé dans une trame Ethernet II.
80 25 110 53 69
06 17
0x806 0x800
La trame 802.1Q
Pour identifier les trames issues de différents réseaux locaux virtuels (VLAN) l'organisme IEEE a développé
la norme 802.1Q. Ce standard complète l'en-tête de la trame Ethernet pour y ajouter une balise de VLAN
(VLAN TAG). Ce champ TAG est constitué de 4 octets. Le champ FCS est recalculé en prenant en compte
le TAG.
Constitution de la trame 802.1Q :
adresse adresse TAG type de données FCS
destinataire source (inséré) protocole (modifié)
TPID TCI
16 bits 16 bits
• Priorité : il indique la priorité (de 0 à 7) d'une trame d'un VLAN relativement aux autres VLAN. On
met ainsi en place une politique de qualité de service QoS (Quality of Service) décrite dans la norme
802.1P.
• CFI (Canonical Format Indicator) : il assure la compatibilité entre les adresses MAC Ethernet et
Token Ring. Un commutateur Ethernet fixera toujours cette valeur à 0. Si un port Ethernet reçoit
une valeur 1 pour ce champ, alors la trame ne sera pas propagée puisqu'elle est destinée à un port
«sans balise» (untagged port).
• VID (Vlan IDentifier) : il identifie le réseau local virtuel (VLAN) auquel appartient la trame. Il est
possible de coder 4096 VLAN.
La trame 802.11
2 octets 2 octets 6 octets 6 octets 6 octets 2 octets 6 octets 0 à 2312 octets 4 octets
Sens de la trame :
To DS From DS Signification
Trame entre deux stations d’un réseau ad-hoc ou trame de contrôle entre un point d’accès et une station.
0 0
Trame issue d’une station sans fil et à destination d’une autre station. Cette trame transitant via un point
1 0
d’accès, c’est l’adresse du point d’accès qui est utilisée comme destination suivante.
Trame issue d’un point d’accès et à destination d’une station sans fil, la source pouvant être filaire ou sans
0 1
fil.
Trame issue d’un point d’accès et à destination d’un autre point d’accès, utilisée pour l’interconnexion de
1 1
réseaux locaux par un pont sans fil.
Adresses :
DA adresse destination adresse MAC de la station destination présente sur un réseau sans fil ou sur un réseau filaire.
SA adresse source adresse MAC de la station source présente sur un réseau sans fil ou sur un réseau filaire.
TA adresse de l’émetteur radio adresse MAC de la station ayant placé le message sur le réseau sans fil.
RA adresse du récepteur radio adresse MAC de la station recevant le message sur le réseau sans fil.
Le N.A.V. permet l’évitement des collisions dans 802.11. L’émetteur d’une trame 802.11 réserve le canal
pour une durée déterminée. Les autres stations ne doivent pas émettre durant ce temps là. La mise en place
du NAV s’effectue par l’intermédiaire du champ « duration ». La valeur est exprimée en microseconde (μs).