Encapsulation Corri
Encapsulation Corri
Les VLAN
Table des matières
1. Introduction......................................................................................................................................2
2. VLAN de niveau 1............................................................................................................................4
3. VLAN de niveau 2............................................................................................................................5
4. VLAN de niveau 3............................................................................................................................6
5. VLAN par protocole.........................................................................................................................6
7. La norme IEEE 802.1Q....................................................................................................................6
[Link] d’application....................................................................................................................11
7.1. Énoncé.....................................................................................................................................12
7.2. Correction................................................................................................................................14
1. Introduction
Les réseaux virtuels (Virtual LAN) sont apparus comme une nouvelle fonctionnalité dans
l’administration réseau avec le développement des commutateurs.
La notion de VLAN est un concept qui permet de réaliser des réseaux de façon indépendante
du système de câblage. Ces réseaux permettent de définir des domaines de diffusions
restreints, cela signifie qu’un message émis par une station du VLAN ne pourra être reçu
que par les stations de ce même VLAN.
Un VLAN (Virtual Local Area Network) est un réseau local regroupant un ensemble de machines
de façon logique et non physique. Dans un réseau local la communication entre les
différentes machines est régie par l'architecture physique. Grâce aux réseaux virtuels, il est
possible de s'affranchir des limitations de l'architecture physique (contraintes
géographiques, contraintes d'adressage, ...) en définissant une segmentation logique (logicielle)
basée sur un regroupement de machines grâce à des critères (adresses MAC, numéros de port,
protocole, etc.).
[Link] 1
Réseau Informatique Semestre 2, 3
Remarques : Les hubs (ou concentrateur) sont devenus aujourd’hui obsolètes et ont laissé place au
switch (ou commutateur) permettant ainsi de réduire la taille des domaines de collision. Les machines
actives utilisant une liaison partagée (avec hub par exemple) se répartissent le débit binaire.
[Link] 2
Réseau Informatique Semestre 2, 3
Les réseaux locaux virtuels résolvent plusieurs problèmes communs sur les réseaux locaux :
• beaucoup d’utilisateurs sont aujourd’hui mobiles et la situation géographique d’un utilisateur
n’a pas forcément de lien avec son appartenance logique : deux collaborateurs situés aux
deux extrémités de l’entreprise peuvent souhaiter appartenir au même domaine de diffusion,
donc au même LAN qui devient ainsi virtuel car il n’a plus de réalité géographique. Il n’est
plus nécessaire de reconfigurer sa machine pour changer de VLAN ;
• les trafics de diffusion sont généralement importants. Les protocoles ARP et DHCP y ont
recours et beaucoup de serveurs en génèrent pour décrire leurs services. Or la plupart des
trames de « broadcast » n’intéresse qu’un nombre restreint de machine. Sur les réseaux en
mode diffusion (bus ou étoile avec hub), ce type de trafic gaspille le débit binaire, augmente
la latence et consomme inutilement de la puissance de calcul ;
• enfin, à l’intérieur d’un domaine de diffusion, le trafic peut être visualisé par toute station
dont la carte réseau supporte le « promiscuous mode » ou encore en utilisant un « sniffer »
tel que « WireShark » par exemple. Des problèmes de confidentialités peuvent donc exister.
Un VLAN redéfinit les domaines de diffusion de façon à regrouper les utilisateurs de
manière logique ou à économiser le débit binaire, améliorer la confidentialité des données et
faciliter la gestion de la mobilité. Il est implémenté sur un « switch » et réalise un domaine «
logique » de diffusion.
Dans l’exemple ci-dessous, les machines « PC1 à PC4 » sont connectées au même switch sur
lequel sont définis deux VLANs : VLAN1 contenant PC1 et PC3, et VLAN2 contenant PC2 et
PC4.
Lorsque PC1 émet une trame de diffusion, requête ARP par exemple, celle-ci est transmise
uniquement vers les machines du VLAN1, donc ici à PC3.
Les machines PC2 et PC4 ignorent le trafic du VLAN1.
[Link] 3
Réseau Informatique Semestre 2, 3
2. VLAN de niveau 1
Dans un VLAN de niveau 1, aussi appelé VLAN par port, l’appartenance d’une machine à
un VLAN est définie par le port auquel elle est connectée. Le switch est équipé
d’une table « port/VLAN » remplie par l’administrateur qui précise le VLAN affecté à
chaque port. Dans cette situation toutes les machines reliées à un même port (cas de l’Ethernet
partagé) doivent appartenir au même VLAN.
C’est une contrainte qu’il faut gérer lorsque le réseau s’agrandit.
Table
Port VLAN
1 1
2 2
3 1
4 2
5 1;2
Si l’on souhaite faire appartenir un port à plusieurs VLAN, il est alors nécessaire de procéder
à du marquage de trames. Les machines doivent être « VLAN-aware » et être capable de
rajouter dans l’en-tête Ethernet de la trame un marqueur (tag) identifiant le VLAN auquel elle
appartient.
Dans l’exemple le serveur appartient aux deux VLANs. Il rajoute à ses trames un marqueur
indiquant à quel VLAN elle est destinée. Les autres machines n’ont pas besoin de gérer le tag.
Lorsque le switch reçoit une trame marquée du serveur, il trouve les ports de sortie et y réémet la
trame à laquelle il a enlevé le marqueur.
Si le serveur souhaite diffuser une même information aux deux VLANs, il doit générer deux
trames : l’une portant le marqueur du VLAN1, l’autre portant le marqueur du VLAN2.
Le VLAN de niveau 1 est simple à mettre en place mais présente quelques inconvénients :
• l’extension est difficile ;
• si une machine doit changer de VLAN (déplacement logique), il faut réaffecter manuellement
le port ;
• si une machine est physiquement déplacée sur le réseau, il faut désaffecter son ancien port et
réaffecter son nouveau port, ce qui nécessite deux manipulations de la part de l’administrateur.
[Link] 4
Réseau Informatique Semestre 2, 3
3. VLAN de niveau 2
Les VLAN de niveau 2 sont aussi nommés VLAN par adresse MAC. Dans cette méthode,
l’adresse MAC d’une machine est affectée à un VLAN. En pratique, c’est encore le port qui est
affecté à un VLAN, mais de manière dynamique. En effet, l’administrateur saisit dans la table du
switch le couple adresse MAC/VLAN. Lorsque le switch découvre sur quel port est connecté la
machine, il affecte dynamiquement le port au VLAN. Il gère donc une deuxième table, la table
port/VLAN. Cette structure permet également de définir plusieurs VLAN par port à condition
d’utiliser le marquage.
[Link] 5
Réseau Informatique Semestre 2, 3
4. VLAN de niveau 3
Dans les VLAN de niveau 3, aussi nommé VLAN de sous-réseau, l’adresse IP est affectée a
un VLAN. Par exemple, le VLAN1 contient les machines d’adresse 10.1.x.x, le VLAN2
celles d’adresses 10.2.x.x. Comme dans le VLAN de niveau 2, l’administrateur remplit une table
d’adresse/VLAN. Lorsque le switch identifie le port auquel appartient la machine, il l’affecte a
son VLAN. Le VLAN de niveau 3 est plus lent que le VLAN de niveau 2 car le switch
doit accéder aux informations de la couche réseau.
[Link] 6
Réseau Informatique Semestre 2, 3
Cette étiquette contient des informations spécifiques au VLAN, notamment un identifiant de VLAN
(ou VID pour VLAN ID), qui est un numéro unique attribué au VLAN. Cette pratique d’ajouter des
informations supplémentaires à la trame est appelée «étiquetage» ou “tagging” en anglais.
Le processus d’étiquetage est totalement transparent pour les dispositifs finaux comme les
ordinateurs ou les serveurs. Le switch se charge d’ajouter l’étiquette VLAN lorsque la trame entre
dans le réseau et de la retirer lorsque la trame sort du réseau, de sorte que les dispositifs connectés
au VLAN n’ont pas besoin de gérer ces étiquettes eux-mêmes. Une fois qu’une trame est étiquetée,
le switch utilise cette information pour prendre des décisions sur la manière de manipuler la trame à
travers le réseau.
Par exemple, si une trame arrive sur un port configuré pour le VLAN 10, l’étiquette indiquera que
cette trame appartient au VLAN 10. Le switch saura alors que cette trame ne peut être envoyée qu’à
d’autres ports qui sont également configurés pour le VLAN 10.
Chaque trame avec une étiquette VLAN comporte des champs indiquant son appartenance à un
réseau VLAN. Il existe deux grands formats de marquage ou d’étiquettes VLAN :
· le format de liaison inter-commutateur ISL de Cisco
· le format standard 802.1Q.
[Link] 7
Réseau Informatique Semestre 2, 3
[Link] 8
Réseau Informatique Semestre 2, 3
3. le champ VLAN Identifier, vlan id, VID : ce champ de 12 bits sert à identifier le réseau local
virtuel auquel appartient la trame. Il est possible de coder 4096 réseaux virtuels avec ce champ.
Les VLANs peuvent être déclarés manuellement ou dynamiquement. Dans la déclaration
dynamique, l’administrateur définit les VLANs sur un switch et un seul. Le protocole : Mutiple
VLAN Registration Protocol (MVRP) permet la diffusion de ces informations aux autres switchs
du réseau.
Le mode d’accès
Le fonctionnement des VLANs au niveau d’un switch apporte un niveau
supplémentaire de granularité et de contrôle. Concrètement, chaque port d’un switch peut
être assigné à un VLAN spécifique, identifié par un numéro unique. Ce numéro de VLAN
sert à étiqueter le trafic entrant et sortant du port, créant ainsi une segmentation logique à
l’intérieur même du switch.
Dans ce scénario, un ordinateur ou un autre dispositif connecté à un port spécifique du
switch ne peut communiquer qu’avec les dispositifs qui sont dans le même VLAN, c’est-à-
dire ceux qui sont connectés à des ports assignés au même numéro de VLAN. Les trames
de données qui traversent le switch sont donc étiquetées en fonction du VLAN auquel
appartient le port d’origine. Le switch utilise ensuite cette étiquette pour déterminer si
la trame peut être transmise à son port de destination. Si le port de destination
appartient au même VLAN que le port d’origine, la trame est transmise; sinon, elle est
bloquée.
Ce mécanisme de segmentation au niveau du switch permet une isolation efficace des groupes de
travail ou des départements au sein d’une organisation. Par exemple, si le département financier est
sur le VLAN 10 et le département marketing sur le VLAN 20, un ordinateur du département
financier ne pourra pas communiquer directement avec un ordinateur du département marketing,
sauf si des règles spécifiques de routage ou de commutation ont été mises en place pour autoriser ce
type de communication.
Cette manière de gérer les VLANs au niveau des ports du switch est communément appelée le «
vlan mode accès ». Dans ce mode, chaque port est strictement associé à un seul VLAN, et tout
dispositif connecté à ce port hérite automatiquement de cette association. Le mode accès est
pleinement compatible avec la technologie Ethernet, ce qui en fait une solution extrêmement
versatile et largement adoptée dans les réseaux modernes.
Dans une configuration Ethernet standard, il n'est pas nécessaire de faire des modifications
spécifiques sur les dispositifs finaux (tels que les ordinateurs ou les serveurs) pour qu'ils puissent
fonctionner dans un environnement VLAN. Le switch, en mode accès, prend en charge la gestion
des étiquettes VLAN, assurant que les trames sont correctement étiquetées et filtrées en fonction
des numéros de VLAN attribués aux ports. Ainsi, la complexité de la gestion des VLANs est
largement absorbée par le switch, rendant le processus transparent pour les utilisateurs finaux et
simplifiant la configuration et la maintenance du réseau.
[Link] 9
Réseau Informatique Semestre 2, 3
En intégrant le mode accès dans un environnement Ethernet, les administrateurs réseau peuvent
donc tirer pleinement parti des avantages des VLANs sans avoir à faire face à des
complications supplémentaires liées à la compatibilité ou à la configuration des dispositifs. Cela
rend la technologie VLAN en mode accès, non seulement puissante en termes de
fonctionnalités, mais aussi pratique et accessible.
Le mode trunk
Dans le contexte des VLANs, le “mode trunk” constitue une alternative au mode accès, mais avec
une fonctionnalité différente. Contrairement au mode accès, où chaque port est dédié à un seul
VLAN, le mode trunk permet à un seul port physique de switch de gérer du trafic appartenant à
plusieurs VLANs simultanément. Cette capacité est particulièrement utile pour connecter
ensemble différents switches, ou encore pour relier un switch à un routeur capable de gérer
plusieurs VLANs.
Cependant, le mode trunk n’est pas directement compatible avec le protocole Ethernet standard,
car il nécessite que l’étiquette VLAN soit explicitement incluse dans chaque trame transmise.
C’est là qu’intervient le protocole 802.1Q, également connu sous le nom de “dot1q”. Ce
protocole insère une étiquette spécifique dans la trame Ethernet pour indiquer à quel VLAN la
trame appartient. En fait, 802.1Q ajoute quatre octets à la trame Ethernet standard, comprenant
entre autres le tag, pour permettre cette fonctionnalité.
La plupart des switches modernes et certains routeurs supportent le protocole 802.1Q, mais il
nécessite généralement une configuration manuelle. Lorsqu’un port est configuré en mode trunk, le
switch ajoute ou lit l’étiquette 802.1Q à chaque trame qui passe par ce port. De cette manière, les
trames de plusieurs VLANs peuvent être acheminées par un seul port trunk sans se mélanger,
car l’étiquette indique clairement à quel VLAN chaque trame appartient.
Il est important de noter que la gestion des trames en mode trunk est plus complexe que celle en
mode accès. Par exemple, pour assurer que le trafic est correctement acheminé, les deux extrémités
d’un lien en mode trunk doivent être correctement configurées pour utiliser le protocole 802.1Q.
Cela implique souvent une coordination étroite entre les administrateurs réseau et une
connaissance approfondie des besoins spécifiques en termes de trafic et de sécurité.
[Link] 10
Réseau Informatique Semestre 2, 3
Configuration des TRUNKs
Dans les réseaux d’entreprise, les VLANs sont devenus une solution incontournable pour améliorer la
gestion, la sécurité et les performances des infrastructures réseau. En segmentant les réseaux en sous-
réseaux virtuels, les VLANs permettent de regrouper des ressources et des utilisateurs partageant des
besoins similaires en matière de trafic réseau, indépendamment de leur emplacement physique.
Cependant, pour que les données de ces VLANs soient acheminées de manière optimale au sein du
réseau, il est nécessaire de mettre en place des liaisons spécifiques appelées « trunks » entre les switchs.
Les trunks permettent de transporter les données de plusieurs VLANs sur une même liaison physique
entre deux switchs. Contrairement aux ports configurés en mode accès, qui ne transportent que les
données d’un seul VLAN, les trunks permettent de transporter les données de plusieurs VLANs
simultanément, ce qui permet une utilisation efficace des ressources réseau. Il est important de noter
que les trunks sont généralement présents au niveau des couches de distribution ou du backbone,
c’est-à-dire là où les switchs sont interconnectés pour assurer le transport des données entre les
différents VLANs. Les trunks ne sont pas destinés aux utilisateurs finaux, car ces derniers sont
connectés à des ports d’accès configurés pour un VLAN spécifique.
Le fonctionnement des tags de VLAN
Lorsqu’un paquet arrive sur le port d’un switch configuré en mode access, le switch
détermine d’abord à quel VLAN appartient ce port. En mode access, chaque port est associé à un
seul VLAN et ne traite que les paquets de ce VLAN spécifique. Le switch vérifie ensuite
l’adresse MAC de destination du paquet et consulte sa table d’adresses MAC pour
déterminer le port de sortie approprié.
Une fois le port de sortie identifié, si ce port est configuré en mode trunk, le switch doit encapsuler
le paquet avec une étiquette VLAN, également appelée tag, avant de le transmettre. Ce
tag contient des informations sur le VLAN d’origine du paquet. Cette encapsulation se
fait généralement selon la norme IEEE 802.1Q (dit DOT1Q), qui ajoute un en-tête VLAN au
paquet Ethernet d’origine.
Le paquet encapsulé est ensuite transmis sur le port trunk vers le switch ou le dispositif
de destination. Lorsque le paquet atteint le switch de destination, ce dernier examine l’étiquette
VLAN et détermine à quel VLAN appartient le paquet. Le switch de destination retire alors
l’étiquette VLAN et transmet le paquet Ethernet d’origine au port de destination approprié, qui
est configuré pour le même VLAN que le port d’origine.
[Link] 11
Réseau Informatique Semestre 2, 3
En gros, retenez que les PC ne peuvent communiquer qu’en Ethernet, alors que les switch
communiquent entre eux en dot1q.
Les préparatifs
Avant de configurer les trunk entre les switchs, votre base de données VLAN doit être préremplie
par tous les VLAN qui devront être acheminés par les ports concernés. C’est pour
cette raison que nous avions vu qu’il était vivement recommandé que tous les switchs
d’un LAN possèdent exactement la même base de données.
La reconfiguration d’un port en Trunk
Afin de configurer le mode trunk sur le port d’un commutateur, il faut paramétrer les
interfaces réseau pour permettre la transmission de données entre plusieurs VLAN. Pour garantir
un échange de données sans erreurs, il est impératif de configurer le mode trunk sur les deux
ports situés de part et d’autre du câble. Autrement dit, chaque interface réseau qui
communique avec un switch doit être reconfigurée en mode trunk. Si l’un des deux switch est
malconfiguré, dans le meilleur des cas votre trame sera retaguée comme vlan natif. C’est à dire que
la trame retombe donc dans le vlan 1. Dans le pire des cas, c’est le protocole spanning
tree, censé créer un arbre par VLAN, dysfonctionnera, causant une défaillance réseau
totale pour tous les utilisateurs. De ce fait n’oubliez surtout pas de configurer les deux
interfaces réseaux.
Pour configurer une interface réseau en mode trunk :
Switch(config)#interface [type_dinterface] [numero_de_linterface]
Switch(config-if)# switchport mode trunk
7. Exercices d’application
7.1. Énoncé
Soit le LAN comportant des VLANs de niveau 1 ci-dessous :
[Link] 12
Réseau Informatique Semestre 2, 3
On suppose dans un premier temps que les VLANs sont non taggés. L’administrateur souhaite faire
appartenir les machines aux VLANs comme ci-dessous :
• machines A,C, E, G : VLAN1 (sur le port 7 des switchs)
• machines B, D, F, H : VLAN2 (sur le port 8 des switchs)
Il complète en conséquence les tables port/VLAN des deux switchs.
On considère que les switchs et les machines viennent d’être mis sous tension. Ainsi les tables
MAC/port sont vides.
Question 1 : Pourquoi a-t-on mis en place deux liens entre les switchs ?
Question 2 : La machine A émet une trame à destination de la machine C. On rappelle que les
tables MAC/port sont vides. Quelles sont les machines qui reçoivent la trame ?
Expliquer.
Question 3 : On considère maintenant que les tables MAC/port sont remplies. La machine A émet
de nouveau une trame vers la machine C. Quelle(s) machine(s) reçoi(en)t la trame ?
Question 4 : La machine A émet une trame en « broadcast ». Quelles sont les machines qui
reçoivent la trame ?
Question 5 : La machine A émet une trame pour la machine H. Expliquer comment est traité la
trame ?
Question 6 : Quelle modification doit-on réaliser pour permettre le trafic entre deux machines
appartenant au même VLAN mais connectées à des switchs différents reliés par un
seul lien (7/SW1-8/SW2) ?
Question 7 : Soit le LAN ci-dessous sur lequel on souhaite implémenter deux VLANs de niveau 2.
• machines A,C : VLAN1
• machines B, D : VLAN2
Quelle table l’administrateur doit-il compléter ?
[Link] 13
Réseau Informatique Semestre 2, 3
7.2. Correction
Question 1 :
Comme il n’y a pas de marquage, il faut donc un lien pour le trafic issu du VLAN1, et un lien pour
le trafic issu du VLAN2.
Les machines d’un même VLAN mais placées sur des switchs différents peuvent ainsi
communiquer.
Question 2 :
SW1 consulte sa table port/VLAN et apprend que la trame provient du VLAN1. SW1 ne sait pas sur
quel port se trouve la machine C car sa table MAC/port est vide. Donc SW1 émet la trame sur les
ports de VLAN1, c’est-à-dire les ports 3 et 7.
SW2 consulte sa table port/VLAN et apprend que la trame provient du VLAN1. SW2 ne sait pas sur
quel port se trouve la machine C car sa table MAC/port est vide. Donc SW2 émet la trame sur les
ports de VLAN1, c’est-à-dire les ports 1 et 3.
Les machines qui reçoivent la trame sont : C, E, G.
Question 3 :
Seule la machine C reçoit la trame.
Question 4 :
Toutes les machines du VLAN1 reçoivent la trame : A, C, E, G.
Question 5 :
SW1 consulte sa table port/VLAN et constate que le port 1 appartient au VLAN1. Il consulte sa
table MAC/port et constate que la machine H est accessible par le port 7.
SW1 consulte sa table port/VLAN est constate que le port 7 appartient au VLAN2, donc il détruit la
trame.
Question 6 :
Il faut rajouter du marquage explicite : le port 7/SW1 et le port 8/SW2 doivent suivre la norme
802.1Q.
Exemple pour une trame de A vers E :
SW1 consulte sa table port/VLAN et constate que E est sur le port 7.
SW1 marque la trame est l’émet sur le port 7.
La trame arrive sur le port 8 de SW2.
SW2 lit la marque et apprend que la trame appartient au VLAN1.
SW2 consulte sa table MAC/port et apprend que E est sur le port 1.
SW2 consulte sa table port/VLAN et constate que le port 1 appartient au VLAN1.
SW2 émet la trame sur le port 1.
Question 7 :
L’administrateur doit compléter manuellement la table port/VLAN.
Question 8 :
La table MAC/VLAN sera construite dynamiquement par le switch dès qu’il aura pris connaissance
des affectations adresses MAC aux ports.
[Link] 14
Réseau Informatique 3ème Semestre
Encapsulation de données
Table des matières
1. Principe.............................................................................................................................................2
2. Couche liaison de données...............................................................................................................4
2.1. En-tête Ethernet........................................................................................................................4
2.2. Trame Ethernet..........................................................................................................................4
3. Couche réseau...................................................................................................................................5
3.1. En-tête IP..................................................................................................................................5
3.2. Paquet IP...................................................................................................................................5
3.3. En-tête ARP IPv4......................................................................................................................7
3.4. Paquet ICMP.............................................................................................................................8
4. Couche transport...............................................................................................................................9
4.1. En-tête TCP...............................................................................................................................9
4.2. Segment TCP..........................................................................................................................10
4.3. En-tête UDP............................................................................................................................11
4.4. Segment UDP..........................................................................................................................11
5. Exercices.........................................................................................................................................12
[Link] 1
Réseau Informatique 3ème Semestre
1. Principe
Lors d’une transmission, les données traversent chacune des couches au niveau de la machine
émettrice. À chaque couche, une information est ajoutée au paquet de données, il s’agit d’un en-
tête, ensemble d’informations qui garanti 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.
À 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é prend le nom de paquet dans la couche réseau
• enfin on parle de trame au niveau de la couche liaison
• et de signal au niveau de la couche physique
Par exemple, l'Internet est basé sur l'Internet Protocol version 4 et la plupart des applications
utilisent aussi bien l'UDP (User Datagram Protocol) que le TCP (Transmission Control Protocol).
Ainsi un fragment de donnée est encapsulé dans un datagramme UDP qui lui-même est encapsulé
dans un paquet IP, ce dernier étant alors envoyé via un protocole de la couche de liaison (par
exemple Ethernet).
La couche de liaison est responsable de la transmission physique des données ; IP ajoute l'adressage
des ordinateurs individuels ; UDP ajoute « l'adressage des applications » (c'est-à-dire le port
spécifiant le service comme, par exemple, un service web ou un serveur TFTP).
Le modèle OSI et la suite des protocoles Internet utilisent l'encapsulation.
[Link] 2
Réseau Informatique 3ème Semestre
Chaque couche du modèle OSI a une fonction déterminée. Cette corrélation indique bien que
certaines informations peuvent se retrouver d'une couche à une autre. Cela n’est possible que
grâce au principe d’encapsulation.
Les données sont enveloppées à chaque couche et portent le nom de PDU (Protocol Data Unit)
et contiennent deux choses : la donnée en elle-même et l’en-tête spécifique à cette couche. La
partie « donnée » de ce paquet est composée de la donnée initiale, mais aussi des en-têtes des
couches qui la précèdent.
Dans une couche N, le PDU est le SDU (Service Data Unit) de la couche N + 1 plus son en-tête
(couche N). Ce SDU ne devient un PDU qu'après l’encapsulation. La couche N ajoute des
informations dans l’en-tête (header) ou le pied (trailer), voire les deux, du SDU afin de le
transformer en un PDU. Ce PDU sera alors le SDU de la couche N - 1. Donc le PDU est un SDU
encapsulé avec un en-tête.
Constitution d'un PDU :
Dans la procédure de réception, chaque en-tête est enlevé lorsque le message « remonte » les
couches, tel qu’illustré par le schéma ci-dessous. Cette « suppression » d’en-tête, c’est la
décapsulation.
[Link] 3
Réseau Informatique 3ème Semestre
Le champ Ether Type peut prendre par exemple les valeurs suivantes :
Type utilisation
0x0800 IPv4, DoD Internet
0x0801 X.75 Internet
0x0802 NBS Internet
0x0803 ECMA Internet
0x0804 ChaosNet
0x0805 X.25 niveau 3
0x0806 ARP
0x0807 XNS
0x86DD IPv6
0x0806 ARP
0x8035 RARP
0x809B AppleTalk
0x88CD SERCOS III
0x0600 XNS
0x8100 VLAN
2.2. Trame Ethernet
Remarques :
• comme expliqué ci-dessus, si le champ type de protocole possède une valeur
hexadécimale inférieure à 0x05DC alors la trame est une trame Ethernet 802.3 et ce
champ indique la longueur du champ données ;
• on notera la présence parfois d'un préambule de 64 bits de synchronisation, alternance de
1 et 0 avec les deux derniers bits à 1 (non représenté sur la trame) ;
[Link] 4
Réseau Informatique 3ème Semestre
3. Couche réseau
3 - 1 Définition du protocole IP
IP signifie "Internet Protocol", protocole Internet. Il représente le protocole réseau le plus répandu.
Il permet de découper l'information à transmettre en paquets, de les adresser, de les transporter
indépendamment les uns des autres et de recomposer le message initial à l'arrivée. Ce protocole
utilise ainsi une technique dite de commutation de paquets. Il apporte, en comparaison à Ipx/Spx
et Netbeui, l'adressage en couche 3 qui permet, par exemple, la fonction principale de routage.
Il est souvent associé à un protocole de contrôle de la transmission des données appelé TCP, on
parle ainsi du protocole TCP/IP. Cependant, TCP/IP est un ensemble de protocole dont voici les
plus connu.
- IP - Internet Protocol - Couche 3 - IP natif.
- ARP - Address Resolution Protocol - Couche 3 - Résolution d'adresse IP en adresse MAC.
- RARP - Reverse Address Resolution Protocol - Couche 3 - Résolution d'adresse MAC en adresse
IP.
- ICMP - Internet Control Message Protocol - Couche 3 - Gestion des messages du protocole IP.
- IGMP - Internet Group Management Protocol - Couche 3 - Protocole de gestion de groupe.
- TCP - Transmission Control Protocol - Couche 4 - Transport en mode connecté.
- UDP - User Datagram Protocol - Couche 4 - Transport en mode non connecté.
Vous trouverez tous les détails du protocole IP dans la Rfc 791.
3 - 2 Structure de l'entête IP
Voici la structure de l'entête IP basé sur 20 octets.
3.3. Paquet IP
20 octets
4 - Définition des différents champs
4.1 - Le champ Vers
Le champ version est codé sur 4 bits. Il représente le numéro de version du protocole IP. Il
permet aux piles IP réceptionnant la trame de vérifier le format et d'interpréter correctement la
suite du paquet. C'est d'ailleurs pour cette raison qu'il est placé au début, une version inconnue
par un équipement conduit au rejet direct.
Voici la liste des différent codes.
- 00 - Réservé
- 01 - Non assigné
- 02 - Non assigné
- 03 - Non assigné
- 04 - IP V4
- 05 - ST Datagram Mode
- 06 - IP V6
- 07 - Non assigné
- 08 - Non assigné
- 09 - Non assigné
- 10 - Non assigné
- 11 - Non assigné
- 12 - Non assigné
- 13 - Non assigné
- 14 - Non assigné
- 15 - Réservé
[Link] 6
Réseau Informatique 3ème Semestre
4.2 - IHL
IHL signifie "Internet header lengh". ce champ est codé sur 4 bits et représente la longueur en mots
de 32 bits de l'entête IP. Par défaut, il est égal à 5 (20 octets), cependant, avec les options de
l'entête IP, il peut être compris entre 6 et 15.
Le fait que le codage soit sur 4 bits, la taille maximum de l'entête IP est donc de 15*32bits = 60
octets
4.3 - Service
Le champs service "Type Of Service" est codé sur 8 bits, il permet la gestion d'une qualité de
service traitée directement en couche 3 du modèle OSI. Cependant, la plupart des équipements de
Backbone, ne tiennent pas compte de ce champ et même certain le réinitialise à 0.
Voici la composition du champ Service :
Vous trouverez tous les détails du champ Service TOS "Type Of Service" dans la Rfc 1349.
4.3.1 - Priorité
Le champ Priorité "Precedence" est codé sur 3 bits. Il indique la priorité que possède la paquet.
Voici les correspondances des différentes combinaisons :
- 0 - 000 - Routine
- 1 - 001 - Prioritaire 0x00 Service normal Transfert banal
- 2 - 010 - Immédiat 0x02 Minimiser le coût “ news ” (nntp)
- 3 - 011 - Urgent 0x04 Maximiser la qualité ICMP Session
- 4 - 100 - Très urgent 0x10 Minimiser le délai telnet
- 5 - 101 - Critique Maximiser le débit Transfert ftp
0x08
- 6 - 110 - Supervision interconnexion
- 7 - 111 - Supervision réseau
4.3.2 - Délai
Le champ Délai "Delay" est codé sur 1 bit. Il indique l'importance du délai d'acheminement du
paquet. Voici les correspondances des différentes combinaisons :
- 0 - Normal
- 1 - Bas
4.3.3 - Débit
Le champ Débit "Throughput" est codé sur 1 bit. Il indique l'importance du débit acheminé. Voici
les correspondances des différentes combinaisons :
- 0 - Normal
- 1 - Haut
[Link] 7
Réseau Informatique 3ème Semestre
4.3.4 - Fiabilité
Le champ Fiabilité "Reliability" est codé sur 1 bit. Il indique l'importance de la qualité du paquet.
Voici les correspondances des différentes combinaisons :
- 0 - Normal
- 1 - Haute
4.3.5 - Coût
Le champ Coût "Cost" est codé sur 1 bit. Il indique le coût du paquet. Voici les correspondances des
différentes combinaisons :
- 0 - Normal
- 1 - Faible
4.3.6 - MBZ
Le champ MBZ "Must Be Zero" est codé sur 1 bit. Comme son nom l'indique, il doit être mis à 0.
4.5 - Identification
Le champ Identification est codé sur 16 bits et constitue l'identification utilisée pour reconstituer
les différents fragments. Chaque fragment possède le même numéro d'identification, les entêtes IP
des fragments sont identiques à l'exception des champs Longueur totale, Checksum et Position
fragment. Numéro permettant d'identifier les fragments d'un même paquet.
[Link] 8
Réseau Informatique 3ème Semestre
4.9 - Protocole
Le champ Protocole est codé sur 8 bits et représente le type de Data qui se trouve derrière l'entête
IP. Numéro du protocole au-dessus de la couche réseau : TCP = 6, UDP = 17, ICMP = 1.
Ce champ permet d'identifier le protocole utilisé par le niveau supérieur :
• Internet Control Message Protocol ou ICMP est repéré par les bits 00000001, qu'on écrit
souvent en hexadécimal avec 01
• Transmission Control Protocol ou TCP par les bits 00000110, soit 06
• User Datagram Protocol ou UDP par les bits 00010001, soit 17 en décimal
Voici la liste des protocoles les plus connu :
- 01 - 00001 - ICMP
- 02 - 00010 - IGMP
- 06 - 00110 - TCP
- 17 - 10001 - UDP
Code Abréviation Nom du protocole
0 Reserved
1 ICMP Internet Control Message
2 IGMP Internet Group Management
3 GGP Gateway-to-Gateway
4 IP IP in IP (encasulation)
5 ST Stream
6 TCP Transmission Control
7 UCL UCL
8 EGP Exterior Gateway Protocol
9 IGP any private interior gateway
10 BBN-RCC-MON BBN RCC Monitoring
11 NVP-II Network Voice Protocol
12 PUP PUP
[Link] 9
Réseau Informatique 3ème Semestre
13 ARGUS ARGUS
14 EMCON EMCON
15 XNET Cross Net Debugger
16 CHAOS Chaos
17 UDP User Datagram
4.10 - Checksum
Le champ Checksum est codé sur 16 bits et représente la validité du paquet de la couche 3. Pour
pouvoir calculer le Checksum, il faut positionner le champ du checksum a 0 et ne considérer que
l'entête IP. Donc par exemple, si deux trames ont la même entête IP (y compris le champ length)
et deux entêtes ICMP et Data différentes (mais de même longueur), le checksum IP sera alors le
même.
- Code de détection d’erreurs portant sur l'entête
- Vérification bout en bout :
la source calcule la valeur du checksum
le récepteur calcule le checksum sur l’entête reçu et vérifie si la valeur calculée
correspond à celle reçue
Tous les équipements de niveau 3, tel que les routeurs, devront recalculer le Checksum, car il
décrémente le champs TTL. De plus, toutes les fonctions de niveau 3 à 7, tel que la NAT, le PAT,
modifiant le contenu de l'entête IP ou des Data, devront recalculer le Checksum.
[Link] 10
16 bits
0x4500 0100 0101 0000 0000
0x0048 0000 0000 0100 1000
0100 0101 0100 1000
0x49BA 0100 1001 1011 1010
1000 1111 0000 0010
0x0000 0000 0000 0000 0000
0x1E06 0001 1110 0000 0110
1010 1101 0000 1000
0x0000 0000 0000 0000 0000
0xC137 1100 0001 0011 0111
1 0110 1110 0011 1111
0x33F6 0011 0011 1111 0110
1 1010 0010 0011 0101
0xC137 1100 0001 0011 0111
10 0110 0011 0110 1100
0x3304 0011 0011 0000 0100
10 1001 0110 0111 0000
1001 0110 0111 0010
0x698D 0110 1001 1000 1101
4.13.1 - Copie
Le champ Copie est codé sur 1 bit et indique comment les options doivent être traitées lors de la
fragmentation. Cela signifie que lorsqu'il est positionné à 1, il faut recopier les options dans chaque
paquet fragmenté.
4.13.2 - Classe
Le champ Classe est codé sur 2 bits et indique les différentes catégorie d'options existantes. Voici la
liste des différentes classe possible :
- 0 - 00 - Supervision de réseau
- 1 - 01 - Non utilisé
- 2 - 10 - Debug et mesures
- 3 - 11 - Non utilisé
4.13.3 - Numéro
Le champ Numéro est codé sur 5 bits et indique les différentes options existantes. Voici la liste des
différents numéros possibles par Classe :
Classe 0,
- 0 - 00000 - Fin de liste d'option. Utilisé si les options ne se terminent pas à la fin de l'en-tête
(bourrage).
- 1 - 00001 - Pas d'opération. Utilisé pour aligner les octets dans une liste d'options.
- 2 - 00010 - Restriction de sécurité et de gestion. Destiné aux applications militaires.
- 3 - 00011 - Routage lâche défini par la source.
- 7 - 00111 - Enregistrement de route.
- 8 - 01000 - Identificateur de connexion.
- 9 - 01001 - Routage strict défini par la source.
Classe 2,
- 4 - 00100 - Horodatage dans l'Internet.
4.14 - Bourrage
Le champ Bourrage est de taille variable comprise entre 0 et 7 bits. Il permet de combler le champ
option afin d'obtenir une entête IP multiple de 32 bits. La valeur des bits de bourrage est 0.
[Link] 11
Réseau Informatique 3ème Semestre
[Link] 12
Réseau Informatique 3ème Semestre
6. Paquet ICMP
Bien qu'il soit à un niveau équivalent au protocole IP, un paquet ICMP est néanmoins encapsulé
dans un datagramme IP. Dans le cadre de l'IPv4, la forme générale d'un tel paquet est la suivante :
La difficulté va donc être de pouvoir découper, puis recomposer les paquets reçus,
même s’ils ne prennent pas le même chemin et arrivent dans le désordre, ou alors que
l’un d’entre eux est perdu.
En effet, sur Internet, il y a souvent beaucoup de chemins possibles pour aller d’une
machine A à une machine B et il peut arriver que des paquets ne suivent pas le même
chemin.
Nous allons donc maintenant voir comment nous allons découper notre datagramme et
identifier chacun des paquets qui seront coupés pour pouvoir les réassembler
correctement.
Ainsi, nous allons faire un premier fragment de 1 500 octets, et un autre de... 120 octets.
OK, donc un datagramme trop gros devra être découpé en fragments les plus gros
possible.
Mais ça veut dire quoi, "les plus gros possible" ? C’est toujours 1 500 ? Ou ça peut être
plus ? Ou moins ?
En fait, cette information doit être donnée par la couche 2, car c’est elle qui va
encapsuler le datagramme IP et qui peut donc dire quelle taille de datagramme elle peut
transporter. D’ailleurs, cette information porte un nom dont vous avez peut-être déjà
entendu parler, il s’agit de la MTU (Maximum Transmission Unit).
La couche 2 va donc dire à la couche 3 quelle est la taille qu’elle peut accepter comme
datagramme, et la couche 3 va faire en sorte de découper les datagrammes trop gros
à cette taille. Par exemple, pour le protocole Ethernet, la MTU est de 1 500 octets.
Mais une des règles d’or du modèle OSI était que les couches étaient indépendantes
entre elles ? Ici, ce n’est pas le cas ?
En fait si, car cette information n’est pas contenue dans les en-têtes. Il n’y aura donc
pas de modification d’un protocole si l’on change cette taille. Le protocole IP utilise cette
information, mais il est capable d’en accepter de différentes valeurs si jamais on change
de protocole de couche 2. Cette information doit donc être définie par tout protocole
de couche 2.
Mais nous avons déjà vu des éléments dans l’en-tête que nous allons étudier plus en
détail.
Par exemple, le premier fragment aura un fragment offset de 0, car il n’y a aucun
fragment avant lui.
Le second fragment aura un fragment offset de 1 480, car il y a 1 480 octets avant lui.
Dans notre exemple, le premier FO (Fragment Offset, mais je suis fainéant) vaut toujours
0. Par contre, le second vaudra non plus 1 480, mais 1480/8 soit 185.
Mais pourquoi s’amuse-t-on à diviser le nombre d’octets par 8 ? On n’a rien d’autre à
faire de mieux que des maths en réseau ?
En fait, c’est une nécessité, et pour le comprendre, nous allons revoir l’en-tête IP.
• La longueur d’un datagramme est codée sur 16 bits et peut donc prendre des
valeurs entre 0 et 65 535.
• Le fragment offset est codé sur 13 bits et peut donc prendre des valeurs entre 0
et 8 191.
Cependant, il est possible de devoir coder un fragment offset pour un datagramme qui
fait plus de 8 191 octets, et dans ce cas, on a un problème !
Les personnes qui ont créé le protocole IP se sont alors dit qu’en multipliant le fragment
offset par 8, on pourrait couvrir toutes les valeurs possibles de taille de datagramme.
Et c’est effectivement vrai : 8*8192=65536.
Le dernier paquet provenant d’un datagramme fragmenté n’a pas besoin d’avoir une
taille de données multiple de 8, car il n’y aura aucun fragment après lui et donc besoin
d’avoir un nombre de données multiple de 8.
La taille des données d’un paquet IP doit obligatoirement être un multiple de 8, sauf
pour le dernier fragment d’un datagramme fragmenté, ou d’un paquet qui n’a pas du
tout été fragmenté.
Il nous reste à voir un dernier champ que sont les flags, codés sur trois bits, chaque bit
représentant une information.
OK, donc pour récapituler, nous avons tous les éléments nécessaires pour fragmenter
un datagramme et être capables de le reconstruire à l’arrivée. Prenons un exemple
concret pour mieux comprendre en détail le fonctionnement de la fragmentation.0
4- Premier exercice de fragmentation
Nous allons faire un premier exercice simple sur la fragmentation pour remettre bout à
bout toutes les notions que nous venons de voir. Nous pourrons ensuite passer à un
exercice plus complexe !
Nous sommes sur un réseau simple que nous avons déjà utilisé par le passé avec deux
machines situées sur deux réseaux différents, et un routeur qui relie ces deux réseaux :
Nous savons que chaque fragment doit être le plus gros possible. Ici, chaque fragment
devra donc faire 1 500 octets, sauf peut-être le dernier.
Notre datagramme d’origine fait 5 600 octets au total, soit 5 580 octets de données.
Nous allons maintenant chercher à savoir combien il nous faut de fragments pour
transporter ces données.
5580/1480=3,7...
Il va donc nous falloir 3 fragments de 1 480 octets, et un dernier fragment de 5580-
(1480*3)=5580-4440=1140 octets
• IPID : 10254
• Flags : MF=1
• FO : 1480/8=185
Dans le troisième fragment :
• IPID : 10254
• Flags : MF=1
• FO : 370 (1480*2/8)
Et dans le dernier fragment :
• IPID : 10254
• Flags : MF=0 (Cette fois, c’est le dernier fragment !)
• FO : 555
Magnifique ! Nous avons réalisé notre première fragmentation !
Ainsi, la machine qui recevra ces fragments pourra les réassembler, même si elle les
reçoit dans le désordre.
Cependant, pour nous assurer que nous n’avons pas fait d’erreur de calcul, nous allons
faire une petite vérification.
Le fragment offset du dernier fragment représente toutes les données des fragments
précédents. Si l’on y ajoute le nombre de ses données, on devrait tomber sur le nombre
de données total. Vérifions cela :
(555*8)+1140=4440+1140=5580 octets
La valeur du fragment offset dépend de la taille des données contenues dans les
fragments précédents et non dans celles contenues dans le fragment lui-même.
Mais même si l’exemple précédent peut vous paraître complexe, il est en réalité très
simple. Et nous allons dès maintenant nous attaquer à une fragmentation plus
complexe. Si vous n’être pas encore très à l’aise avec celle-ci, refaites cet exercice en
changeant la taille du datagramme d’origine, par exemple.
Mais une fois arrivée au routeur 1, la table de routage de celui-ci va lui dire de les
envoyer sur le second réseau qui a une MTU de 820 ! Et là, le routeur a deux choix :
Le découpage des fragments contenant 1 480 octets de données va donc être comme
ceci :
• IPID : 8652
• Flags : MF=0
• FO : 0
Qui va donc être découpé en 4 fragments une première fois lors de l’envoi de la machine
1, puis en 8 fragments au passage par le routeur R1.
• IPID : 8652
• Flags : MF=1
• FO : 0
Le second fragment contenant 680 octets de données :
• IPID : 8652
• Flags : MF=1
• FO : 100 (car le fragment précédent contient 800 octets)
Troisième fragment :
• IPID : 8652
• Flags : MF=1
• FO : 185
Quatrième fragment :
• IPID : 8652
• Flags : MF=1
• FO : 285
Cinquième fragment :
• IPID : 8652
• Flags : MF=1
• FO : 370
Sixième fragment :
• IPID : 8652
• Flags : MF=1
• FO : 470
Septième fragment :
• IPID : 8652
• Flags : MF=1
• FO : 555
Huitième fragment :
• IPID : 8652
• Flags : MF=0
• FO : 655
Nous pouvons faire notre petit calcul pour vérifier que tout cela est bien correct en
tenant compte du dernier fragment offset à 655 et des 340 octets de données
contenues dans le dernier fragment :
(655*8)+340=5240+340=5580 octets
Deux petites remarques au passage, que nous avons abordées, et qui sont importantes
pour bien comprendre la fragmentation :
Le flag More Fragment n’est positionné à 0 que pour le dernier fragment, même si
plusieurs fragmentations successives ont eu lieu.
Le réassemblage des fragments n’a lieu qu’à la destination. Tout routeur intermédiaire
ne réassemble pas ceux-ci (sauf les firewalls, mais nous allons savoir pourquoi très
bientôt !)
Pour ceux qui ne se sentent pas encore tout à fait à l’aise, je vous propose un dernier
petit exercice à faire par vous-même avant d’en lire la correction.
7- Exercice d’entraînement
On prend le schéma réseau précédent, mais avec des MTU différentes, 1 140 pour le
premier réseau et 420 pour le second :
Schéma réseau avec nouvelles MTU
Et la machine 1 souhaite envoyer un datagramme de 4 260 octets à la machine 2.
Cependant, ce que vous venez d’apprendre vous sera utile pour mieux comprendre les
mécanismes réseau, et potentiellement ce que vous pouvez observer sur le réseau. Par
ailleurs, nous allons aborder la sécurité à la fin de cet ouvrage, et nous verrons que pour
faire de la sécurité, il est souvent nécessaire de connaître dans les plus petits détails le
fonctionnement d’un protocole ou d’un système.
D’ailleurs, nous allons maintenant aborder une attaque liée à la fragmentation. Ainsi,
vous verrez qu’avoir des connaissances profondes du fonctionnement d’un système est
le meilleur moyen d’imaginer comment contourner son fonctionnement normal pour
faire de la sécurité.
Nous avons parlé précédemment du MTU path discovery. Je vous invite alors à
vous renseigner sur ce mécanisme, et à vous demander ce que cela aurait pu changer
sur nos précédents exercices.
Correction de l’exercice
Avant de commencer l’exercice, vérifiez bien que les MTU que l’on vous a fournis vous
permettent d’avoir un nombre de données qui est un multiple de 8.
Ici, c’est bien le cas pour une MTU de 1 140 (1 120 est un multiple de 8) et pour 420
(400 étant un multiple de 8).
Dans un premier temps, il faut fragmenter le datagramme d’origine selon la MTU de 1
140 octets, ce qui nous donne 4 fragments.
3 fragments comportant 1 120 octets de données, et un dernier fragment de 4240-
(1120*3)=880 octets.
Écrivons les informations de fragmentation contenues dans leurs en-têtes :
Fragment 1 :
• IPID : 12534
• Flags : MF=1
• FO : 0
Fragment 2 :
• IPID : 12534
• Flags : MF=1
• FO : 140
Fragment 3 :
• IPID : 12534
• Flags : MF=1
• FO : 280
Fragment 4 :
• IPID : 12534
• Flags : MF=0
• FO : 420
Dans un second temps, ces fragments arrivent au routeur 1 qui doit les fragmenter de
nouveau pour qu’ils puissent aller sur le second réseau dont la MTU fait 420 octets.
Chaque gros fragment va donc être découpé en trois fragments, deux premiers
contenant 400 octets de données, et le dernier contenant 1120-(400*2)=320 octets de
données
Le dernier fragment de 880 octets de données va aussi être fragmenté en trois, deux
fragments de 400 octets de données, et un dernier de 80 octets de données.
Ce qui nous donne finalement 12 fragments :
Fragment 1 :
• IPID : 12534
• Flags : MF=1
• FO : 0
Fragment 2 :
• IPID : 12534
• Flags : MF=1
• FO : 50
Fragment 3 :
• IPID: 12534
• Flags : MF=1
• FO : 100
Fragment 4 :
• IPID: 12534
• Flags : MF=1
• FO : 140
Fragment 5 :
• IPID: 12534
• Flags : MF=1
• FO : 190
Fragment 6 :
• IPID: 12534
• Flags : MF=1
• FO : 240
Fragment 7 :
• IPID: 12534
• Flags : MF=1
• FO : 280
Fragment 8 :
• IPID: 12534
• Flags : MF=1
• FO : 330
Fragment 9 :
• IPID: 12534
• Flags : MF=1
• FO : 380
Fragment 10 :
• IPID: 12534
• Flags : MF=1
• FO : 420
Fragment 11 :
• IPID : 12534
• Flags : MF=1
• FO : 470
Fragment 12 :
• IPID : 12534
• Flags : MF=0
• FO : 520
Et comme d’habitude, nous pouvons vérifier notre calcul :
Protocole TCP
Table des matières
1. TCP – Transmission Control Protocol..............................................................................................2
1.1. Introduction...............................................................................................................................2
1.2. Caractéristiques de TCP............................................................................................................2
1.3. Description de l'en-tête.............................................................................................................4
1.4. Les ports....................................................................................................................................6
1.5. Les sockets................................................................................................................................7
1.6. Multiplexing / demultiplexing..................................................................................................9
2. Début et clôture d’une connexion...................................................................................................10
2.1. Établissement d’une connexion..............................................................................................10
2.2. Clôture d’une connexion.........................................................................................................11
2.2.1. Clôture canonique...........................................................................................................11
2.2.2. Clôture abrupte................................................................................................................12
3. Contrôle du transport......................................................................................................................13
3.1. Mécanisme de l’acquittement.................................................................................................13
3.2. Fenêtres glissantes..................................................................................................................14
4. Exemple de paquets capturés..........................................................................................................15
5. Conclusion......................................................................................................................................18
TCP est l'acronyme de « Transmission Control Protocol », il est défini dans la RFC 793. Les données encapsulées dans
un en-tête TCP sont des paquets TCP.
8-protocole_TCP.odt
Réseau Informatique Semestre 3 & 4
Ces 4 PDU seront envoyés à la couche N-1 (la couche réseau en l'occurrence).
8-protocole_TCP.odt 2
Réseau Informatique Semestre 3 & 4
IP locale
Adresse de la machine qui émet.
Port local
Le numéro de port associé au processus. Il est imposé ou est déterminé
automatiquement comme nous le verrons dans le cours de programmation.
IP distante
Adresse de la machine distante.
Port distant
Le numéro de port associé au service à atteindre. Il est obligatoire de le
connaître précisément.
8-protocole_TCP.odt 3
Réseau Informatique Semestre 3 & 4
Numéro de séquence
Numéro d'acquittement
Taille Réservé ECN URG ACK PSH RST SYN FIN Fenêtre
de
l'en-tête
Options Remplissage
Données
PORT SOURCE
Le numéro de port de l’application locale.
PORT DESTINATION
Le numéro de port de l’application distante.
NUMÉRO DE SEQUENCE
C’est un nombre qui identifie la position des données à transmettre par rapport
au segment original. Au démarrage de chaque connexion, ce champ contient une
valeur non nulle et non facilement prévisible, c’est la séquence initiale ou
ISN. Numéro du premier octet transmis dans le segment
Permet de s’assurer que les données ont été reçues dans l’ordre dans lequel elles ont été envoyées
TCP numérote chaque octet transmis en incrémentant ce nombre 32 bits non signé.
Il repasse à 0 après avoir atteint 232 − 1 (4 294 967 295).
Pour le premier octet des données transmis ce nombre est incrémenté de un, et
ainsi de suite...
NUMÉRO d’ACQUITTEMENT
C’est un numéro qui identifie la position du dernier octet reçu dans le flux
entrant. numéro de séquence identifiant le prochain octet attendu par l’émetteur. Permet de s’assurer que
les données ont été correctement reçues. Il doit s’accompagner du drapeau ACK (voir plus
loin).
LONGUEUR d'EN-TÊTE
pour Longueur d’en-tête, il s’agit d’un déplacement qui permet d’atteindre les
données quand il y a des options. Codé sur 4 bits, il s’agit du nombre de mots
de 4 octets qui composent l’en-tête. Le déplacement maximum est donc de 60
octets (24 − 1 × 4 octets). Dans le cas d’un en-tête sans option, ce champ porte
la valeur 5, ainsi 10 mots de 4 octets sont donc possibles pour les options.
RESERVE
Six bits réservés pour un usage futur !
8-protocole_TCP.odt 4
Réseau Informatique Semestre 3 & 4
CODE
Six bits pour influer sur le comportement de TCP en caractérisant l’usage
du segment :
URG Le champ “URGENT POINTER” doit être exploité.
ACK Le champ “ACNOWLEDGMENT NUMBER” doit être exploité.
PSH C’est une notification de l’émetteur au récepteur, pour lui indiquer
que toutes les données collectées doivent être transmises à
l’application sans attendre les éventuelles données qui suivent.
RST Re-initialisation de la connexion
SYN Le champ “SEQUENCE NUMBER” contient la valeur de début de connexion.
FIN L’émetteur du segment a fini d’émettre.
URG = 1 indique que les données du segment sont urgentes et doivent être délivrées immédiatement
ACK = 1 indique que le numéro de séquence est valide et contient le prochain octet de données attendu
PSH = 1 indique une fin de message et que les données doivent être transmises à la couche supérieure
RST = 1 indique un arrêt ou un refus de connexion suite à la détection d’une erreur irrécupérable
SYN = 1 indique une demande de synchro de numéro de séquence : demande d'ouverture de connexion
FIN = 1 indique que l'émetteur n'a plus de données à transmettre : demande de fermeture de connexion
TAILLE DE FENETRE
Le flux TCP est contrôle de part et d’autre pour les octets com- pris dans une
zone bien délimitée et nommée “ fenêtre ”. La taille de celle-ci est définie par
un entier non signé de 16 bits, qui en limite donc théoriquement la taille `a 65
535 octets. Nombre d'octets de données à transmettre à partir de celui indiqué par le champ numéro
d’acquittement. Chaque partie annonce ainsi la taille de son buffer de réception.
Par construction, l’émetteur n’envoie pas plus de données que le récepteur ne
peut en accepter.
Cette valeur varie en fonction de la nature du réseau et surtout de la bande
passante devinée à l’aide de statistiques sur la valeur du RTT.
SOMME DE CONTRÔLE (CHECKSUM)
Un calcul qui porte sur la totalité du segment, en-tête et données.
PRIORITÉ (URGENT POINTER)
Ce champ n’est valide que si le drapeau URG est armé(1). Ce pointeur contient
alors un offset à ajouter à la valeur de SEQUENCE NUMBER du segment en cours
pour délimiter la zone des données urgentes à transmettre à l’application.
Le mécanisme de transmission à l’application dépend du système d’exploitation.
OPTIONS
C’est un paramétrage de TCP. Sa présence est détectée dès lors que Longueur d’en-
tête est supérieur à 5. Permet, par exemple, de définir la taille maximale d’un segment
Les options utilisées :
mss La taille maximale du segment 5 des données applicatives que
l’émetteur accepte de recevoir. Au moment de l’établissement d’une
connexion (paquet comportant le flag SYN), chaque partie annonce sa
taille de MSS. Ce n’est pas une négociation. Pour de l’Ethernet la
valeur est 1460 (= MTU − 2 × 20).
timestamp pour calculer la durée d’un aller et retour (RTT ou “round trip
time”).
8-protocole_TCP.odt 5
Réseau Informatique Semestre 3 & 4
contre les paquet TCP sont toujours alignés sur une taille de mot
de quatre octets ; à cet effet une option “No Operation” ou nop,
codée sur 1 seul octet, est prévue pour compléter les mots.
REMPLISSAGE PADDING
Remplissage pour se caler sur un mot de 32 bits.
DATAS
Les données transportées. Cette partie est de longueur nulle à l’établissement
de la connexion, elle peut également être nulle par choix de l’application.
0 – 1023 Ports bien connus Ports réservés pour des services bien connus
(web, envoi de mail, etc.).
1024 – 49151 Ports réservés Ports réservés pour être utilisés par des
applications propriétaires.
8-protocole_TCP.odt 6
Réseau Informatique Semestre 3 & 4
… … … … ...
8-protocole_TCP.odt 7
Réseau Informatique Semestre 3 & 4
adresse de socket. Cette adresse est constituée d'une adresse IP et d'un numéro
de port. C'est grâce à la programmation de socket que l'on définit le modèle de
communication. Si le socket a été configuré de manière à envoyer ou recevoir,
c'est un modèle Half-Duplex. S'il a été configuré de manière à envoyer et
recevoir simultanément, il s'agit d'un modèle Full-Duplex. Étant donné que les
sockets sont en fait une interface de programmation d'applications (API), on
peut donc s'en servir pour programmer des applications en réseaux (par exemple,
créer une application pour faire communiquer un client et un serveur).
Voici un schéma illustrant une communication entre un client et un serveur :
8-protocole_TCP.odt 8
Réseau Informatique Semestre 3 & 4
8-protocole_TCP.odt 9
Réseau Informatique Semestre 3 & 4
Pour résumer cela, voici un schéma qui montre les valeurs de chaque champ au
niveau du client et au niveau du serveur :
8-protocole_TCP.odt 10
Réseau Informatique Semestre 3 & 4
8-protocole_TCP.odt 11
Réseau Informatique Semestre 3 & 4
La raison est qu’une connexion TCP est “full-duplex”, ce qui implique que les
données circulent indépendamment dans un sens et dans l’autre. Les deux
directions doivent donc pouvoir être interrompues indépendamment l’une de
l’autre.
L’application qui envoie un paquet avec le drapeau FIN indique à la couche TCP
de la machine distante qu’elle n’enverra plus de donnée. La machine distante
doit acquitter ce segment, comme il est indiqué sur la figure ci-dessus, en
incrémentant d’une unité le “sequence number”.
La connexion est véritablement terminée quand les deux applications ont effectué
ce travail. Il y a donc échange de 4 paquets pour terminer la connexion.
Au total, sans compter les échanges propres au transfert des données, les deux
couches TCP doivent gérer 7 paquets, il faut en tenir compte lors de la
conception des applications !
Sur la figure on constate que le serveur continue d’envoyer des données bien que
le client ait terminé ses envois. Le serveur a détecté cette attitude par la
réception d’un caractère de EOF (en C sous Unix ).
Cette possibilité a son utilité, notamment dans le cas des traitements distants
qui doivent s’accomplir une fois toutes les données transmises, comme par
exemple pour un tri.
8-protocole_TCP.odt 12
Réseau Informatique Semestre 3 & 4
3. Contrôle du transport
Le bon acheminement des données applicatives est assurée par un mécanisme
d’acquittement des paquets.
8-protocole_TCP.odt 13
Réseau Informatique Semestre 3 & 4
8-protocole_TCP.odt 14
Réseau Informatique Semestre 3 & 4
Chaque couche TCP envoie sa valeur de MSS en même temps que le paquet de
synchronisation, comme une option de l’en-tête. Cette valeur est calculée
pour éviter absolument la fragmentation de IP au départ des datagrammes.
8-protocole_TCP.odt 15
Réseau Informatique Semestre 3 & 4
8-protocole_TCP.odt 16
Réseau Informatique Semestre 3 & 4
8-protocole_TCP.odt 17
Réseau Informatique Semestre 3 & 4
5. Conclusion
Le protocole TCP a été conçu à une époque où l’usage de la commande ligne était
universel, et les applications graphiques utilisant le réseau très rares !
Une trentaine d’années plus tard, on peut faire le constat pratiquement
inverse : les applications textes interactives (beaucoup de petits messages
applicatifs) disparaissent au profit d’applications moins interactives et qui
sont plus orientées flux de données (vidéo, audio, téléphonie...) avec des
échanges plus volumineux et des besoins en transport qui ont évolué.
Le principe de la fenêtre glissante, si performant qu’il soit pour assurer le
bon acheminement des données, est bloquant pour certaines applications comme le
web. En effet, si le paquet de données de tête n’est pas acquitté, les suivants,
même reçus, sont en attente avant d’être délivrés à l’application.
Si la réponse comporte par exemple de nombreuses zones graphiques et textuelles
différentes la fluidité de la consultation est considérablement amoindrie, et
tenter de la compenser en établissant un grand nombre de connexions simultanées
pour récupérer individuellement les éléments de la page, consomme beaucoup de
ressources système et réseaux (celles de l’établissement des connexions) qui ne
compense que partiellement ce soucis.
L’indépendance de TCP vis `a vis de la structure des données est également un
inconvénient dans certaines applications comme la téléphonie pour la- quelle la
notion de messages successifs est bien plus intéressante.
Depuis le début des années 2000 l’IETF met au point le protocole SCTP qui
fournit des services similaires à ceux de TCP, en abandonne certains et apporte
les nouvelles fonctionnalités adaptées aux nouveaux besoins.
8-protocole_TCP.odt 18
Informatique et Science du Numérique
Protocole UDP
Table des matières
1. Identification de la destination.........................................................................................................2
2. Description de l'en-tête.....................................................................................................................3
3. Ports réservés/disponibles................................................................................................................5
3.1. Attribution des ports (ancienne méthode).................................................................................6
3.2. Attribution des ports (nouvelle méthode).................................................................................6
UDP est l'acronyme de « User Datagram Protocol », il est défini dans la RFC 768. Les données
encapsulées dans un en-tête UDP sont des paquets UDP.
8-protocole_UDP.odt 1
Informatique et Science du Numérique
1. Identification de la destination
Rappel : Au niveau de la couche Internet les datagrammes sont routés d'une
machine à une autre en fonction des bits de l'adresse IP qui identifient le
numéro de réseau. Lors de cette opération aucune distinction n'est faite entre
les services ou les utilisateurs qui émettent ou reçoivent des datagrammes, ie
tous les datagrammes sont mélangés.
La couche UDP ajoute un mécanisme qui permet l'identification du service
(niveau Application). En effet, il est indispensable de faire un tri entre les
divers applications (services) : plusieurs programmes de plusieurs utilisateurs
peuvent utiliser simultanément la même couche de transport et il ne doit pas y
avoir de confusion entre eux.
Pour le système Unix les programmes sont identifiés de manière unique par un
numéro de processus, mais ce numéro est éphémère, non prévisible à distance, il
ne peut servir à cette fonction.
L'idée est d'associer la destination à la fonction qu'elle remplie. Cette
identification se fait à l'aide d'un entier positif que l'on baptise port.
• Le système d'exploitation local a à sa charge de définir le mécanisme qui
permet à un processus d'accéder à un port.
• La plupart des systèmes d'exploitation fournissent le moyen d'un accès
synchrone à un port. Ce logiciel doit alors assurer la possibilité de gérer
la file d'attente des paquets qui arrivent, jusqu'à ce qu'un processus
(Application) les lise. A l'inverse, l'OS (Operating System), bloque un
processus qui tente de lire une donnée non encore disponible.
Pour communiquer avec un service distant il faut donc avoir connaissance de son
numéro de port, en plus de l'adresse IP de la machine elle-même.
On peut prévoir le numéro de port en fonction du service à atteindre.
La figure ci-dessous explicite la notion de port. La couche IP sépare les
datagrammes SCTP, TCP et UDP grâce au champ PROTO de son en-tête, l'association
du protocole de transport et du numéro de port identifie un service sans
ambiguïté.
Conceptuellement on s'aperçoit alors que rien ne s'oppose à ce qu'un même
service (Numéro de port) soit attribué conjointement aux trois protocoles (en
pointillés sur la figure). Cette situation est d'ailleurs courante dans la
réalité des serveurs.
8-protocole_UDP.odt 2
Informatique et Science du Numérique
2. Description de l'en-tête
Un paquet UDP est conçu pour être encapsulé dans un datagramme IP et permettre
un échange de données entre deux applications, sans échange préliminaire.
Ainsi, si les données à transmettre n'obligent pas IP à fragmenter, un paquet
UDP génère un datagramme IP et c'est tout !
8-protocole_UDP.odt 3
Informatique et Science du Numérique
MESSAGE LENGTH
C'est la longueur du paquet, donc comprenant l'en-tête et le message.
• La longueur minimal est 8
• La longueur maximale est 65 535 - H(IP). Dans le cas courant (IP sans
option) cette taille maximale est donc de 65 515.
CHECKSUM
Le checksum est optionnel et toutes les implémentations ne l'utilisent pas.
S'il est employé, il porte sur un pseudo en-tête constitué de la manière
suivante :
8-protocole_UDP.odt 4
Informatique et Science du Numérique
8-protocole_UDP.odt 6
Informatique et Science du Numérique
en œuvre par des applications qui s'exécutent avec des droits privilégiés
(root sur une machine Unix)
2. Le segment [1024,49151] est celui des services enregistrés.
Ils sont énumérés par l'IANA et peuvent être employés par des processus
ayant des droits ordinaires.
Par exemple :
Nom Port Proto Commentaire
bpcd 13782 tcp VERITAS NetBackup
bpcd 13782 udp VERITAS NetBackup
3. Le segment [49152, 65535] est celui des attributions
dynamiques et des services privés.
Note : la présence de ce pseudo en-tête, interaction entre les deux couches IP et UDP, est une des raisons qui font
que le modèle TCP/IP ne s'applique pas parfaitement au modèle OSI.
8. Exercices
5.1. Exercice 1 : décoder la trame Ethernet suivante.
8-protocole_UDP.odt 7