Décapsulation des trames Ethernet

Objectif :

Etudier la décapsulation d'une trame Ethernet afin d'en voire les champs correspondant à chaque couche du modèle OSI .

Références bibliographiques :

Ce cours est principalement basé sur le cours Entête du protocole ARP publié sur le site frameip.com .

1) Introduction :

Les constructeurs informatiques ont proposé des architectures réseaux propres à leurs équipements. Par exemple, IBM a proposé SNA, DEC a proposé DNA... Ces architectures ont toutes le même défaut : du fait de leur caractère propriétaire, il n'est pas facile des les interconnecter, à moins d'un accord entre constructeurs. Aussi, pour éviter la multiplication des solutions d'interconnexion d'architectures hétérogènes, l'ISO (International Standards Organisation), organisme dépendant de l'ONU et composé de 140 organismes nationaux de normalisation, a développé un modèle de référence appelé modèle OSI (Open Systems Interconnection). Ce modèle décrit les concepts utilisés et la démarche suivie pour normaliser l'interconnexion de systèmes ouverts (un réseau est composé de systèmes ouverts lorsque la modification, l'adjonction ou la suppression d'un de ces systèmes ne modifie pas le comportement global du réseau).
Au moment de la conception de ce modèle, la prise en compte de l'hétérogénéité des équipements était fondamentale. En effet, ce modèle devait permettre l'interconnexion avec des systèmes hétérogènes pour des raisons historiques et économiques. Il ne devait en outre pas favoriser un fournisseur particulier. Enfin, il devait permettre de s'adapter à l'évolution des flux d'informations à traiter sans remettre en cause les investissements antérieurs. Cette prise en compte de l'hétérogénéité nécessite donc l'adoption de règles communes de communication et de coopération entre les équipements, c'est à dire que ce modèle devait logiquement mener à une normalisation internationale des protocoles.
Le modèle OSI n'est pas une véritable architecture de réseau, car il ne précise pas réellement les services et les protocoles à utiliser pour chaque couche. Il décrit plutôt ce que doivent faire les couches. Néanmoins, l'ISO a écrit ses propres normes pour chaque couche, et ceci de manière indépendante au modèle, i.e. comme le fait tout constructeur.

2) Les différentes couches du modèle :

2.1. Le modèle OSI comporte 7 couches :

Decapsulation Capture trame Ethernet

Les principes qui ont conduit à ces 7 couches sont les suivants :
- une couche doit être créée lorsqu'un nouveau niveau d'abstraction est nécessaire,
- chaque couche a des fonctions bien définies,
- les fonctions de chaque couche doivent être choisies dans l'objectif de la normalisation internationale des protocoles,
- les frontières entre couches doivent être choisies de manière à minimiser le flux d'information aux interfaces,
- le nombre de couches doit être tel qu'il n'y ait pas cohabitation de fonctions très différentes au sein d'une même couche et que l'architecture ne soit pas trop difficile à maîtriser.
Les couches basses (1, 2, 3 et 4) sont nécessaires à l'acheminement des informations entre les extrémités concernées et dépendent du support physique. Les couches hautes (5, 6 et 7) sont responsables du traitement de l'information relative à la gestion des échanges entre systèmes informatiques. Par ailleurs, les couches 1 à 3 interviennent entre machines voisines, et non entre les machines d'extrémité qui peuvent être séparées par plusieurs routeurs. Les couches 4 à 7 sont au contraire des couches qui n'interviennent qu'entre hôtes distants

2.2. La couche physique :

La couche physique s'occupe de la transmission des bits de façon brute sur un canal de communication. Cette couche doit garantir la parfaite transmission des données (un bit 1 envoyé doit bien être reçu comme bit valant 1). Concrètement, cette couche doit normaliser les caractéristiques électriques (un bit 1 doit être représenté par une tension de 5 V, par exemple), les caractéristiques mécaniques (forme des connecteurs, de la topologie...), les caractéristiques fonctionnelles des circuits de données et les procédures d'établissement, de maintien et de libération du circuit de données.
L'unité d'information typique de cette couche est le bit, représenté par une certaine différence de potentiel.

2.3. La couche liaison de données :

Son rôle est un rôle de "liant" : elle va transformer la couche physique en une liaison a priori exempte d'erreurs de transmission pour la couche réseau. Elle fractionne les données d'entrée de l'émetteur en trames, transmet ces trames en séquence et gère les trames d'acquittement renvoyées par le récepteur. Rappelons que pour la couche physique, les données n'ont aucune signification particulière. La couche liaison de données doit donc être capable de reconnaître les frontières des trames. Cela peut poser quelques problèmes, puisque les séquences de bits utilisées pour cette reconnaissance peuvent apparaître dans les données.
La couche liaison de données doit être capable de renvoyer une trame lorsqu'il y a eu un problème sur la ligne de transmission. De manière générale, un rôle important de cette couche est la détection et la correction d'erreurs intervenues sur la couche physique. Cette couche intègre également une fonction de contrôle de flux pour éviter l'engorgement du récepteur.
L'unité d'information de la couche liaison de données est la trame qui est composées de quelques centaines à quelques milliers d'octets maximum.

2.4. La couche réseau :

C'est la couche qui permet de gérer le sous-réseau, i.e. le routage des paquets sur ce sous-réseau et l'interconnexion des différents sous-réseaux entre eux. Au moment de sa conception, il faut bien déterminer le mécanisme de routage et de calcul des tables de routage (tables statiques ou dynamiques...).
La couche réseau contrôle également l'engorgement du sous-réseau. On peut également y intégrer des fonctions de comptabilité pour la facturation au volume, mais cela peut être délicat.
L'unité d'information de la couche réseau est le paquet.

2.5. Couche transport :

Cette couche est responsable du bon acheminement des messages complets au destinataire. Le rôle principal de la couche transport est de prendre les messages de la couche session, de les découper s'il le faut en unités plus petites et de les passer à la couche réseau, tout en s'assurant que les morceaux arrivent correctement de l'autre côté. Cette couche effectue donc aussi le réassemblage du message à la réception des morceaux.
Cette couche est également responsable de l'optimisation des ressources du réseau : en toute rigueur, la couche transport crée une connexion réseau par connexion de transport requise par la couche session, mais cette couche est capable de créer plusieurs connexions réseau par processus de la couche session pour répartir les données, par exemple pour améliorer le débit. A l'inverse, cette couche est capable d'utiliser une seule connexion réseau pour transporter plusieurs messages à la fois grâce au multiplexage. Dans tous les cas, tout ceci doit être transparent pour la couche session.
Cette couche est également responsable du type de service à fournir à la couche session, et finalement aux utilisateurs du réseau : service en mode connecté ou non, avec ou sans garantie d'ordre de délivrance, diffusion du message à plusieurs destinataires à la fois... Cette couche est donc également responsable de l'établissement et du relâchement des connexions sur le réseau.
Un des tous derniers rôles à évoquer est le contrôle de flux.
C'est l'une des couches les plus importantes, car c'est elle qui fournit le service de base à l'utilisateur, et c'est par ailleurs elle qui gère l'ensemble du processus de connexion, avec toutes les contraintes qui y sont liées.
L'unité d'information de la couche réseau est le message.

2.6. La couche session :

Cette couche organise et synchronise les échanges entre tâches distantes. Elle réalise le lien entre les adresses logiques et les adresses physiques des tâches réparties. Elle établit également une liaison entre deux programmes d'application devant coopérer et commande leur dialogue (qui doit parler, qui parle...). Dans ce dernier cas, ce service d'organisation s'appelle la gestion du jeton. La couche session permet aussi d'insérer des points de reprise dans le flot de données de manière à pouvoir reprendre le dialogue après une panne.

2.7. La couche présentation :

Cette couche s'intéresse à la syntaxe et à la sémantique des données transmises : c'est elle qui traite l'information de manière à la rendre compatible entre tâches communicantes. Elle va assurer l'indépendance entre l'utilisateur et le transport de l'information.
Typiquement, cette couche peut convertir les données, les reformater, les crypter et les compresser.

2.8. La couche application :

Cette couche est le point de contact entre l'utilisateur et le réseau. C'est donc elle qui va apporter à l'utilisateur les services de base offerts par le réseau, comme par exemple le transfert de fichier, la messagerie...

3) Transmission de données au travers du modèle OSI :

Le processus émetteur remet les données à envoyer au processus récepteur à la couche application qui leur ajoute un en-tête application AH (éventuellement nul). Le résultat est alors transmis à la couche présentation.
La couche présentation transforme alors ce message et lui ajoute (ou non) un nouvel en-tête (éventuellement nul). La couche présentation ne connaît et ne doit pas connaître l'existence éventuelle de AH ; pour la couche présentation, AH fait en fait partie des données utilisateur. Une fois le traitement terminé, la couche présentation envoie le nouveau "message" à la couche session et le même processus recommence.

Les données atteignent alors la couche physique qui va effectivement transmettre les données au destinataire. A la réception, le message va remonter les couches et les en-têtes sont progressivement retirés jusqu'à atteindre le processus récepteur :

Decapsulation Capture trame Ethernet

3.1. Entête Ethernet :

a.Définition du protocole :

La technologie Ethernet se décline dans de nombreuses variantes tel que :
- Deux topologies différentes qui sont bus et étoile
- Multi supports permettant d'être capable de faire usage de câbles coaxiaux, de fils en cuivre à paires torsadées ou de fibres optiques.
- Une Offre d'une large gamme de débit avec 10 Mbps, 100 Mbps, 1 Gbps et 10 Gbps
L'Ethernet est basé sur un principe de dialogue sans connexion et donc sans fiabilité. Les trames sont envoyées par l'adaptateur sans aucune procédure de type « handshake » avec l'adaptateur destinataire. Le service sans connexion d'Ethernet est également non-fiable, ce qui signifie qu'aucun acquittement, positif ou négatif, n'est émis lorsqu'une trame passe le contrôle CRC avec succès ou lorsque celle-ci échoue. Cette absence de fiabilité constitue sans doute la clé de la simplicité et des coûts modérés des systèmes Ethernet. Ce service de couche 2 du modèle OSI est similaire au service en mode datagramme de couche 3 assuré par IP et au service sans connexion de couche 4 d'UDP.

b.Structure de l'entête :

Voici un exemple d'une trame Ethernet saisie avec Ethereal. Vous trouverez ci-dessous sa structure basé sur 14 octets.

Decapsulation Capture trame Ethernet

Voici un exemple d'une trame Ethernet 802.1Q saisie avec Ethereal. Vous trouverez ci-dessous sa structure basé sur 18 octets.

Decapsulation Capture trame Ethernet

c. Définition des différents champs :

1 - Préambule :
Ce champ est codé sur 7 octets et permet de synchroniser l'envoi. Chacun des octets vaut 10101010 et cette série permet à la carte réceptrice de synchroniser son horloge.
2 - SFD :
Ce champ est codé sur 1 octets et indique à la carte réceptrice que le début de la trame va commencer. La valeur de SFD (Starting Frame Delimiter) est 10101011.
3 - Adresse destination :
Ce champ est codé sur 6 octets et représente l'adresse MAC (Medium Access Control) de l'adaptateur destinataire. Dans le cadre d'un broadcast, l'adresse utilisée est FF-FF-FF-FF-FF-FF.
Cette adresse est ce que l'on appelle l'adresse physique d'une carte Ethernet (Hardware address). En fait cette adresse est divisée en deux parties égales :
- Les trois premiers octets désignent le constructeur. C'est le l'organisation OUI (Organizationally Unique Identifier) gérer par l'IEEE, qui référence ces correspondances.
- Les trois derniers octets désignent le numéro d'identifiant de la carte, dont la valeur est laissée à l'initiative du constructeur qui possède le préfixe
L'association de l'IEEE et du constructeur assure ainsi l'unicité de l'attribution des numéros d'adresse MAC.
4 - Adresse source :
Ce champ est codé sur 6 octets et représente l'adresse MAC (Medium Access Control) de l'adaptateur émetteur.
Cette adresse est ce que l'on appelle l'adresse physique d'une carte Ethernet (Hardware address). En fait cette adresse est divisée en deux parties égales :
- Les trois premiers octets désignent le constructeur. C'est le l'organisation OUI (Organizationally Unique Identifier) gérer par l'IEEE, qui référence ces correspondances.
- Les trois derniers octets désignent le numéro d'identifiant de la carte, dont la valeur est laissée à l'initiative du constructeur qui possède le préfixe
L'association de l'IEEE et du constructeur assure ainsi l'unicité de l'attribution des numéros d'adresse MAC.
5 - Ether Type :
Ce champ est codé sur 2 octets et indique le type de protocole inséré dans le champ donnée. Voici un extrait des différentes correspondances :
0x6000 - DEC
0x0609 - DEC
0x0600 - XNS
0x0800 - IPv4
0x0806 - ARP
0x8019 - Domain
0x8035 - RARP
0x809B - AppleTalk
0x8100 - 802.1Q
0x86DD - IPv6

6 - 802.1Q :
     1 - Priorité :
Ce champ est codé sur 3 bits et représente une information sur la priorité de la trame. Il y a donc 8 niveaux où 000 représente une priorité basse et 111 une haute.
     2 - CFI :
Ce champ est codé sur 1 bit et doit être marqué à 0. CFI (canonical format indicator) est utilisé pour des raisons de compatibilité entre les réseaux Ethernet et les réseaux de type Token ring.
     3 - VLAN ID :
Ce champ est codé sur 12 bits et représente le numéro du VLAN. Il est donc possible d'intégrer la trame dans 1 VLAN parmi 4096 possibilités. La valeur 0 indique qu'il n'y a pas de VLAN, c'est souvent utilisée dans le cas où l'on désire appliquer une priorité sans avoir besoin de la notion de VLAN.
7 - Données :
Ce champ est codé entre 64 et 1500 octets et contient les données de la couche 3. Dans le cas de TCP/IP, c'est ici que vient se loger le datagramme IP. L'unité de transfert maximale est le MTU (Maximale Transfer Unit) et sa valeur est classiquement de 1500 octets. Si les données sont inférieurs à 46 octets, alors elles devront être complétées avec des octets de bourrage (padding) et c'est la couche réseau qui sera chargée de les éliminer.
8 - FCS :
Ce champ est codé sur 4 octets et représente la séquence de contrôle de trame. Il permet à l'adaptateur qui réceptionnera cette trame de détecter toute
erreur pouvant s'être glissée au sein de la trame.
Les erreurs binaires sont principalement créées par les variations d'affaiblissement du signal et l'induction électromagnétique parasite dans les câbles Ethernet ou les cartes d'interface. La valeur de FCS (Frame Check Sequence) est le résultat d'un calcul polynomial appelé CRC (Cyclic Redundancy Code). A la réception de la trame, la couche liaison effectue le même calcul et compare les deux résultats qui doivent être égaux afin de valider la conformité de la trame reçue.

2 - Entête IP :

a. 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é.

b. Structure de l'entête :

Voici la structure de l'entête IP basé sur 20 octets.

Decapsulation Capture trame Ethernet

Voici le complément de l'entête IP qui est optionnel basé sur 4 octets.

Decapsulation Capture trame Ethernet

c. Définition des différents champs :

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.

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
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 :

Decapsulation Capture trame Ethernet

     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 :

  1. 000 - Routine
  2. 001 - Prioritaire
  3. 010 - Immédiat
  4. 011 - Urgent
  5. 100 - Très urgent
  6. 101 - Critique
  7. 110 - Supervision interconnexion
  8. 111 - Supervision réseau
      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 :
  1. Normal
  2. Bas
     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 :
  1. Normal
  2. Haut
      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 :
  1. Normal
  2. Haut
     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 :
  1. Normal
  2. Faible
      6 - MBZ :
Le champ MBZ "Must Be Zero" est codé sur 1 bit. Comme son nom l'indique, il doit être mis à 0.
4 - Longueur totale :
Le champ Longueur totale est codé sur 16 bits et représente la longueur du paquet incluant l'entête IP et les Data associées. La longueur totale est exprimée en octets, ceci permettant de spécifier une taille maximum de 216 = 65535 octets. La longueur des Data est obtenu par la combinaison des champs IHL et Longueur totale :
Longueur_des_data = Longueur_totale - ( IHL * 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.

6 - Flags :
Le champ Flags est codé sur 3 bits et indique l'état de la fragmentation. Voici le détail des différents bits constituant ce champ.
     1 - Reserved :
Le premier bit est réservé et positionné à 1.
     2 - DF :
Appelé DF "Don't Fragment", le second bit permet d'indiqué si la fragmentation est autorisée. Si un Datagramme devant être fragmenté possède le flag DF à 1, alors, il sera alors détruit.
     3 - MF :
Appelé MF "More Fragments", le troisième bit indique s'il est à 1 que le fragment n'est pas le dernier.
7 - Position fragment :
Le champ Position fragment est codé sur 13 bits et indique la position du fragment par rapport à la première trame. Le premier fragment possède donc le champ Position fragment à 0.
8 - TTL :
Le champ TTL (Time To Live) est codé sur 8 bits et indique la durée de vie maximale du paquet. Il représente la durée de vie en seconde du paquet. Si le TTL arrive à 0, alors l'équipement qui possède le paquet, le détruira.
Attention, à chaque passage d'un routeur le paquet se verra décrémenté de une seconde. De plus, si le paquet reste en file d'attente d'un routeur plus d'une seconde, alors la décrémentation sera plus élevée. Elle sera égale au nombre de seconde passé dans cette même file d'attente. Par défaut, si les temps de réponse sont corrects, alors on peut, entre guillemet, en conclure que le Time To Live représente le nombre de saut maximum du niveau.
Le but du champ TTL est d'éviter de faire circuler des trames en boucle infinie.
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.
Voici la liste des protocoles les plus connu :

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.
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.
11 - Adresse IP source :
Le champ IP source est codé sur 32 bits et représente l'adresse IP source ou de réponse. Il est codé sur 4 octets qui forme l'adresse A.B.C.D.
12 - Adresse IP destination :
Le champ IP destination est codé sur 32 bits et représente l'adresse IP destination. Il est codé sur 4 octets qui forme l'adresse A.B.C.D.

13 - Options :
Le champ Options est codé entre 0 et 40 octets. Il n'est pas obligatoire, mais permet le "Tuning de l'entête IP". Afin de bien gérer les Options, cela doit commencer par un octets de renseignement. Voici le détail de cette octet :

Decapsulation Capture trame Ethernet
      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é.
     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 :
     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,     Classe 2, 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.

3.Entête TCP :

a. Définition du protocole :

Le protocole TCP est basé en couche 4. Il ouvre une session et effectue lui-même le control d'erreur. Il est alors appelé "mode connecté".

b. Structure de l'entête :

Voici la structure de l'entête TCP basé sur 20 octets.
Decapsulation Capture trame Ethernet

Voici le complément de l'entête TCP qui est optionnelle basé sur 4 octets.
Decapsulation Capture trame Ethernet

c. Mode de transfert :

Voici les différents types de communication basés sur le mode connecté de TCP :
1 - Ouverture de session :
==> SYN=1 - ACK=0 - SeqNum=100 - AckNum=
<== SYN=1 - ACK=1 - SeqNum=300 - AckNum=101
==> SYN=0 - ACK=1 - SeqNum=101 - AckNum=301
2 - Transfert des données :
==> ACK=1 - SeqNum=101 - AckNum=301 - Data=30 octets
<== ACK=1 - SeqNum=301 - AckNum=131 - Data=10 octets
==> ACK=1 - SeqNum=131 - AckNum=311 - Data=5 octets
<== ACK=1 - SeqNum=311 - AckNum=136 - Data=10 octets
3 - Fermeture de session :

<== ACK=1 - FIN=1 - SeqNum=321 - AckNum=136
==> ACK=1 - FIN=0 - SeqNum=136 - AckNum=321

4 - Fermeture brutale de connexion :
1ère cas possible :

==> ACK=1 - RST=0 - SeqNum=200 - AckNum=400
<== ACK=0 - RST=1 - SeqNum=400 - ACKNum=
2eme cas possible :
<== ACK=0 - RST=0 - SeqNum=200 - Data=30 octets
==> ACK=0 - RST=1 - SeqNum=230 - Data=

d - La fenêtre coulissante :

La fenêtre coulissante, plus connue sous le nom de "Sliding Windows" est employée pour transférer des données entre les hôtes. La fenêtre définit le volume de données susceptibles d'être passées via une connexion TCP, avant que le récepteur n'envoie un accusé de réception. Chaque ordinateur comporte une fenêtre d'émission et une fenêtre de réception qu'il utilise pour buffériser les données en continu, sans devoir attendre un accusé de réception pour chaque paquet.
Cela permet au récepteur de recevoir les paquets dans le désordre et de profiter des délais d'attente pour réorganiser les paquets. La fenêtre émettrice contrôle les données émises, si elle ne reçoit pas d'accusé de réception au bout d'un certain temps, elle retransmet le paquet.

e - Définition des différents champs :

1 - Port source :
Le champ Port source est codé sur 16 bits et correspond au port relatif à l'application en cours sur la machine source.
2 - Port destination :
Le champ Port destination est codé sur 16 bits et correspond au port relatif à l'application en cours sur la machine de destination.
3 - Numéro de séquence :
Le champ Numéro de séquence est codé sur 32 bits et correspond au numéro du paquet. Cette valeur permet de situer à quel endroit du flux de données le paquet, qui est arrivé, doit se situer par rapport aux autres paquets.
4 - Numéro de l'accusé de réception :
Le champ Numéro de séquence est codé sur 32 bits et définit un acquittement pour les paquets reçus. Cette valeur signale le prochain numéro de paquet attendu. Par exemple, si il vaut 1500, cela signifie que tous les Datagrammes <1500 ont été reçus
5 - Offset :
Le champ Offset est codé sur 4 bits et définit le nombre de mots de 32 bits dans l'entête TCP. Ce champ indique donc où les données commencent.
6 - Réservé :
Le champ Réservé est codé sur 6 bits et il servira pour des besoins futurs. Ce champ doit être marqué à 0. Au jour d'aujourd'hui, on peut considérer que les besoins futurs se transforment en un champ non utilisé.
7 - Flags :
- Le champ URG est codé sur 1 bit et indique que le champ Pointeur de donnée urgente est utilisé.
- Le champ ACK est codé sur 1 bit et indique que le numéro de séquence pour les acquittements est valide.
- Le champ PSH est codé sur 1 bit et indique au récepteur de délivrer les données à l'application et de ne pas attendre le remplissage des tampons.
- Le champ RST est codé sur 1 bit et demande la réinitialisation de la connexion.
- Le champ SYN est codé sur 1 bit et indique la synchronisation des numéros de séquence.
- Le champ FIN est codé sur 1 bit et indique fin de transmission.
8 - Fenêtre :
Le champ Fenêtre "Windows" est codé sur 16 bits et correspond au nombre d'octets à partir de la position marquée dans l'accusé de réception que le récepteur est capable de recevoir. Le destinataire ne doit donc pas envoyer les paquets après Numéro de séquence + Window.
9 - Checksum :
Le champ Checksum est codé sur 16 bits et représente la validité du paquet de la couche 4 TCP.
Le Checksum est constitué en calculant le complément à 1 sur 16 bits de la somme des compléments à 1 des octets de l'en-tête et des données pris deux par deux (mots de 16 bits). Si le message entier contient un nombre impair d'octets, un 0 est ajouté à la fin du message pour terminer le calcul du Checksum.

Cet octet supplémentaire n'est pas transmis. Lors du calcul du Checksum, les positions des bits attribués à celui-ci sont marquées à 0.
Le Checksum couvre de plus, une pseudo en-tête de 96 bits préfixée à l'en-tête TCP. Cette pseudo en-tête comporte les adresses Internet sources et destinataires, le type de protocole et la longueur du message TCP (incluant la data). Ceci protège TCP contre les erreurs de routage.

Decapsulation Capture trame Ethernet

La longueur TCP compte le nombre d'octets de l'en-tête TCP et des données du message, en excluant les 12 octets de la pseudo en-tête.
10 - Pointeur de donnée urgente :
Le champ Pointeur de donnée urgente est codé sur 16 bits et communique la position d'une donnée urgente en donnant son décalage par rapport au numéro de séquence. Le pointeur doit pointer sur l'octet suivant la donnée urgente. Ce champ n'est interprété que lorsque le Flag URG est marqué à 1. Dès que cet octet est reçu, la pile TCP doit envoyer les données à l'application.
11 - Options :
Les champs d'options peuvent occuper un espace de taille variable à la fin de l'en-tête TCP. Ils formeront toujours un multiple de 8 bits. Toutes les options sont prises en compte par le Checksum. Un paramètre d'option commence toujours sur un nouvel octet. Il est défini deux formats types pour les options:
- Cas 1 - Option mono-octet.
- Cas 2 - Octet de type d'option, octet de longueur d'option, octet de valeur d'option.
La longueur d'option prend en compte l'octet de type, l'octet de longueur lui-même et tous les octets de valeur et est exprimée en octet.
La liste d'option peut être plus courte que ce que l'offset de données pourrait le faire supposer. Un octet de remplissage "Bourrage" devra être dans ce cas rajouté après le code de fin d'options.
12 - 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 TCP multiple de 32 bits. La valeur des bits de bourrage est 0.

4) Conclusion :

L'analyse des trames réseaux est un point sensible de tout développement de protocole. La capture de trames permet d'analyser le bon fonctionnement des différents protocoles ainsi que les différents temps d'exécution de ces protocoles.

[1]Entête du protocole ARP

cours Réseaux application programme algorithme exercice analyse protocoles décapsulation trames Ethernet

Révisé le :01-12-2017 www.technologuepro.com Facebook Twitter RSS