0% ont trouvé ce document utile (0 vote)
55 vues36 pages

Champs IP et Protocole ARP en Réseau

Transféré par

ahmedouyahya.d
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPT, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
55 vues36 pages

Champs IP et Protocole ARP en Réseau

Transféré par

ahmedouyahya.d
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPT, PDF, TXT ou lisez en ligne sur Scribd

Paquet/datagramme IP

Rôle des Champs de IP


• Version
– Il s’agit de la version du protocole. Cette valeur est
à 0100 pour IPv4 et 0110 pour IPv6
• IHL, Internet Header Length: longueur de
l’entête du datagramme: Exprimée en mots
de 4 octets chacun. Elle est ≥20 octets=5 mots
• Ce champ est codé sur 4 bits
• ToS ou Type de Service: codé sur 1 octet.
Rôle des Champs (Champ ToS)
• Le Champ ToS est divisé en 5 parties :
1) Les bits 0 à 2 indiquent la "précédence". Autrement
dit la priorité d'acheminement par rapport aux
autres paquets. Cette partie du champ permet de
définir 8 niveaux de priorité d'acheminement.
2) Le bit 3 indique si le paquet peut supporter une
attente de traitement normale ou faible.
3) Le bit 4 indique si le paquet doit être acheminé en
priorité sur des liens à hauts débits ou non
4) Le bit 5 indique si le paquet doit être acheminé sur
des liens très fiables (faible taux d'indisponibilité et
d'erreurs) ou normaux
5) Les bits 6 et 7 sont réservés et donc inutilisés.
Rôle des Champs (Champ ToS)
Ce champ n’a été que rarement utilisé à l’origine mais il est de plus en plus
utilisé avec l’introduction de la QoS.
Rôle des Champs ( Total Length)
• Longueur totale du datagramme, exprimée en
octets, en-tête et données comprises.

Ce champ étant codé sur 2 octets, la longueur


maximale d'un paquet IP est donc de 65 536 octets
(0 à 65535).
Rôle des Champs ( flags)
• Ces trois champs servent à gérer le mécanisme de
fragmentation du datagramme IP, car il est possible
qu'un paquet IP n'entre pas entièrement dans une
trame de niveau 2 parce que sa taille est trop
importante. Il sera donc nécessaire de fragmenter le
paquet pour le véhiculer dans plusieurs trames.
• Mais en raison du mode non connecté de IP, la
fragmentation est assez complexe à gérer.
• Un mot complet de 4 octets est réservé à la gestion
de la fragmentation.
Protocole ARP
• une station ne lit le contenu d'une trame qu'à la
condition qu'elle lui soit adressée. Or le paquet IP est
justement placé dans la trame ! Lorsqu'une couche
haute transmet des données à une autre machine,
elle communique à la couche IP, l'adresse IP de
destination.
• IP communique le paquet à la couche 2 (ici le MAC)
pour l'encapsuler dans une trame MAC avant
émission sur le support. Mais il doit également
communiquer l'adresse MAC de destination de la
trame, pour que la couche 2 puisse formater
correctement la trame ! Comment IP va trouver
l’adresse MAC ?
Protocole ARP
• ARP pour Address Resolution Protocol prend en
charge, comme son nom l'indique, la résolution
d'adresse entre le niveau 2 et le niveau 3. Il a pour
rôle de trouver l'adresse MAC correspondant à une
adresse IP donnée.
• Lorsqu'il a découvert cette adresse, il met à jour une
table ARP !
• ARP est un protocole non routable et il est donc
conçu pour fonctionner entre systèmes qui sont dans
un même réseau Ethernet. En d’autres termes la
portée est limitée au même segment Ethernet et pas
au-delà.
Protocole ARP
Comment fonctionne ARP?
• Le protocole IP vérifie sa table ARP pour
trouver la correspondance MAC de l'adresse
IP transmise par la couche supérieure :
– S'il n'a jamais communiqué avec la station ayant
cette adresse depuis son "boot" (la table ARP est
en RAM!), il ne connaît pas la correspondance et
passe à l'étape suivante.
– S'il trouve la correspondance il transmet l'adresse
MAC à la couche MAC en même temps que son
paquet IP.
Protocole ARP
• S'il ne trouve pas de correspondance, il
transmet l'adresse IP destination au protocole
ARP, en lui demandant de trouver la
correspondance d'adresse MAC :
– ARP formate un paquet ARP Request, qu'il place
directement dans une trame MAC "broadcast".
Celle-ci, parce qu'elle est émise en broadcast, est
lue par toutes les stations du LAN. En particulier
la machine ciblée
Protocole ARP
Protocole ARP
Structure de ARP par l’exemple:
• Voici un paquet ARP encapsulé dans une trame
Ethernet

• La trame Ethernet contient l'en-tête MAC suivi du


paquet ARP. Ces 2 éléments sont constitués d’un
ensemble de champs. Chaque champ contient des
données en Hexa avec le nom du champ. Les
noms/formats des champs ARP sont détaillés dans le
RFC 826.
Structure de ARP ordre:

• Comme tous les protocoles réseaux


d’Internet, tous les champs du datagramme
ARP sont exprimés en ordre réseau (Network
Byte Order) : si une valeur tient sur plusieurs
octets, alors le premier octet transmis est
l’octet de poids fort. Sur un octet, le premier
bit transmis est le bit de poids fort. Ceci est
précisé par la RFC 1700
Structure de ARP par l’exemple:

• Ce diagramme montre qu’il s’agit d’une


ARP_Request(ar$op = 0001) adressée à 10.0.02(ar$tpa).
• Elle a été envoyée par le nœud ayant l’@MAC
00:C0:9F:09:B8:DB et l’@IP 10.0.0.1La trame Ethernet
contient l'en-tête MAC suivi du paquet ARP
• Le paquet est envoyé en broadcast (DA ff:ff:ff:ff:ff:ff)
ARP tailles des champs
ar$hrd (espace d’adresse de matériel) - 16 bits
ar$pro (espace d’adresse de protocole) - 16 bits
ar$hln (longueur d’adresse de matériel) - 8 bits
ar$pln (longueur d’adresse de protocole) - 8 bits
ar$op (opcode) - 16 bits
ar$sha (adresse de matériel de source) - n octets, où n est
tiré du champ ar$hln.
ar$spa (adresse de protocole de source) - m octets, où m
est tiré du champ ar$pln.
ar$tha (adresse de matériel cible) - n octets
ar$tpa (adresse de protocole cible) - m octets
ar$hrd, ar$pro, ar$hln et ar$pln sont les mêmes que dans
l’ARP régulier
ARP résultat de capture
Avec TCPDUMP nous avons:
00:c0:9f:09:b8:db > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806),
length 42: arp who-has 10.0.0.2 tell 10.0.0.1
Et plus bas en Hexadécimal on a:
ARP -bourrage
Le paquet ARP a une taille de 28 octets, et comme la trame
ethernet doit avoir une taille minimale de 46 octets, un
bourrage est donc nécessaire pour arriver à cette taille
Commandes
• La commande arp -a affiche le contenu de la
table, aussi bien sous Windows que sous les
divers Unix :
• Sous IOS: Show IP arp
• Voir en cours les autres commandes
RARP
• L'adresse Ethernet est une adresse
physique c’est une adresse inscrite
matériellement sur la carte réseau.
Par contre, l'adresse IP est une
adresse se trouvant sur disque.
Comment donc un équipement sans
disque (Terminal X, station sans
disque) peut-elle connaître son
adresse IP ?
RARP
• RARP (Reverse Address Resolution
Protocol) est un protocole permettant à un
équipement d'obtenir son adresse IP en
communiquant son adresse Ethernet à un
serveur RARP [RFC 903].
• RARP s'effectuera au Boot de la machine qui
gardera ensuite en mémoire(RAM) son
adresse IP. Après avoir obtenu son adresse
IP, la machine peut récupérer les fichiers de
configuration.
Comment fonctionne RARP ?
• Comme pour ARP, une trame de diffusion Ethernet,
contenant une requête RARP est émise. La requête est la
suivante: "Quelle est l'adresse IP correspondant à mon
adresse Ethernet ?". Un équipement configuré en serveur
RARP envoie une réponse en unicast.
• Il est possible que plusieurs serveurs RARP existent d'où la
génération de plusieurs réponses à la requête. La première
réponse est considérée. La présence de plusieurs serveurs
est intéressante dans le cas de panne d'un serveur, mais cela
engendre du trafic supplémentaire.
• Une requête RARP ne peut traverser un routeur. C'est
pourquoi dans le cas où aucun serveur RARP n'existe sur le
réseau physique Ethernet, la requête n'est pas satisfaite et
elle est répétée après Time-Out.
ICMP(Protocole de message de contrôle sur Internet)
• le protocole IP ne permet pas l'envoi de messages d'erreur,
c'est grâce à ICMP qu'une machine émettrice peut savoir
qu'il y a eu un incident sur le réseau. Ce protocole est
détaillé dans la RFC792.
• un paquet ICMP est néanmoins encapsulé dans un
datagramme IP. Pour IPv4, la forme générale d'un
tel paquet est la suivante :
ICMP(Protocole de message de contrôle sur Internet)
• Etant donné le peu de contrôles que IP réalise, ICMP permet non
pas de corriger ces erreurs mais de faire part de ces erreurs aux
protocoles des couches voisines. Ainsi, le protocole ICMP est
utilisé pour signaler une erreur (appelée Delivery Problem).
• Les messages d'erreur ICMP sont transportés sur le réseau sous
forme de datagramme, comme n'importe quelle donnée.
• Ainsi, les messages d'erreur peuvent eux-mêmes être sujet
d'erreurs.
Toutefois en cas d'erreur sur un datagramme transportant un
message ICMP, aucun message d'erreur n'est délivré pour éviter
un effet "boule de neige" en cas d'incident sur le réseau.
ICMP(Protocole de message de contrôle sur Internet)
Les différents champs que l'on peut trouver sont les suivants :
• le champ "Type" correspond au type de message ICMP. Nous verrons
plus loin les différents types de messages ICMP ;
• le champ "Code" sert à affiner le type du message ICMP. Les codes
ICMP sont en fonction des différents types de messages ICMP ;
• le champ "Checksum" est la somme de contrôle. Ce champ est le
complément à 1 sur 16 bits de la somme des compléments à 1 des
octets de la trame ICMP en commençant par le champ Type ICMP.
Lors du calcul de ce champ, celui-ci est initialisé à zéro. Cet algorithme
peut être remplacé dans le futur. Il est défini dans la RFC 1071 ;
• le champ "Data" contient les données du message ICMP.
L'interprétation de son contenu doit se faire en fonction du type de
message ICMP.
ICMP(Types de messages)
Signification du
Type Code Message
message
Ce message est utilisé
lorsqu'on utilise la
commande PING.
Cette commande,
permettant de tester
8 0 Demande d'ECHO
le réseau, envoie un
datagramme à un
destinataire et lui
demande de le
restituer
Destinataire Le réseau n'est pas
3 0
inaccessible accessible
Destinataire La machine n'est pas
3 1
inaccessible accessible
Destinataire Le protocole n'est pas
3 2
inaccessible accessible
Destinataire Le port n'est pas
3 3
inaccessible accessible
Programmes utilsant ICMP
Il existe différents programmes ou
fonctionnalités qui tirent parti des facilités
offertes par le protocole ICMP. Ces
programmes sont :

• Ping ; nmap ; Bing ;Path


MTU Discovery ;
Traceroute.
ICMP(PING)
"ping" est un programme qui utilise les paquets ICMP de type "Echo" et "Echo
reply".
Cet utilitaire permet de savoir si une machine est présente sur le réseau en
lui envoyant un paquet ICMP Echo. En recevant ce paquet, la machine
répond par un paquet ICMP Echo Reply.
Si l'on ne reçoit pas de réponse, bien souvent cela signifie que la machine
n'est pas présente sur le réseau (mais il peut y avoir aussi d'autres causes à
cette absence de réponse).
• L'utilitaire "ping" permet aussi de spécifier la taille des données ICMP que
l'on va envoyer et comme il affiche le temps entre l'émission du paquet et
la réponse, il est possible de déduire la bande passante entre ces deux
machines.
• Comme l'utilitaire "ping" affiche le nombre de paquets émis et le nombre
de paquets reçus, il est aussi possible de porter un jugement sur la qualité
de la ligne entre ces deux machines.
ICMP(PING)
"ping" est un programme qui utilise les paquets ICMP de type "Echo" et
"Echo reply".
Cet utilitaire permet de savoir si une machine est présente sur le réseau en
lui envoyant un paquet ICMP Echo. En recevant ce paquet, la machine
répond par un paquet ICMP Echo Reply.
Si l'on ne reçoit pas de réponse, bien souvent cela signifie que la machine
n'est pas présente sur le réseau (mais il peut y avoir aussi d'autres causes à
cette absence de réponse).
• L'utilitaire "ping" permet aussi de spécifier la taille des données ICMP que
l'on va envoyer et comme il affiche le temps entre l'émission du paquet et
la réponse, il est possible de déduire la bande passante entre ces deux
machines.
• Comme l'utilitaire "ping" affiche le nombre de paquet émis et le nombre
de paquets reçus, il est aussi possible de porter un jugement sur la qualité
de la ligne entre ces deux machines.
ICMP(NMAP)
• NMAP est un programme de découverte et d'analyse des
machines d'un réseau développé par Fyodor (alias Gordon Lyon).
• Une des fonctionnalités, entre autres, de ce programme est sa
faculté à découvrir les services ouverts sur une machine cible.
Pour cela, il envoie une demande d'ouverture de session avec un
service TCP ou UDP supposé actif sur la machine cible et si la
réponse est un paquet ICMP dont le type est "Destination
Unreachable" et dont le code est "port unreachable", cela
signifie que ce service n'est pas actif. Sur la base de cette
information NMAP fait ces remontées.
ICMP(BING)
binG est un utilitaire qui permet de mesurer la bande passante réelle
entre deux points distants d'un réseau.
• Il part du principe que si l'on connait le temps de transit (et donc par
conséquent la bande passante) entre la machine locale et le point A
et le temps de transit entre la machine locale et le point B, il est
possible de déduire la bande passante entre le point A et le point B.
• "bing" mesure la bande passante réelle et pas la bande passante
disponible, pour cela, il envoie des paquets ICMP "Echo" de taille
différente aux deux extrémités A et B et analyse le temps transit des
paquets et de leur réponse pour en déduire la bande passante.
• Cet utilitaire est maintenant délaissé
ICMP(Path MTU Discovery)
• Le MTU, c'est-à-dire Maximum Transmission Unit, est la taille maximale que peut avoir un
paquet entre deux points d'un réseau. Si un paquet plus grand que cette taille doit être
envoyé, il doit alors être fractionné en plusieurs paquets plus petits .
• "Path MTU discovery" est un programme qui recherche le plus petit MTU entre la machine
locale et une destination quelconque. Le but de cette découverte est d'envoyer des paquets
qui ne dépassent pas cette taille afin d'éviter le processus toujours long et couteux de
fragmentation et défragmentation de paquets.
• Pour cela, le programme envoie un paquet d'une taille arbitraire en positionnant le bit DF
(Don't Fragment) dans l'entête IP et analyse une éventuelle réponse. Si cette réponse est un
paquet ICMP "Destination Unreachable" dont le code vaut 4 (pour "fragmentation needed and
DF set"), cela signifie que la taille initiale du paquet nécessite une fragmentation et donc que le
MTU du chemin complet est plus petit.
• En itérant ainsi plusieurs fois ou alors par dichotomie, il est possible de connaitre le plus petit
MTU sur le chemin.
ICMP(Traceroute)
• "traceroute" est un programme qui permet de connaître la liste des différents
routeurs empruntés entre la machine locale et une destination quelconque.
• Pour cela, le programme envoie un paquet TCP ou UDP ou ICMP avec un TTL
(Time To Live) au niveau IP qui commence à 1 et qui est incrémenté jusqu'à ce
que l'on atteigne la destination (bien souvent limité à 30 sauts au maximum).
• En effet, lorsqu'un paquet est traité par un routeur, le TTL de ce paquet est
diminué de 1. Lorsque ce TTL arrive à 0, le routeur retourne à l'émetteur un
paquet ICMP dont le type est "Time Exceeded". En analysant la réponse reçue,
on en déduit l'adresse IP du routeur qui a envoyé ce paquet.
• En itérant successivement le processus, il est ainsi possible de connaitre la liste
des routeurs empruntés.
ICMP(Traceroute)
• "traceroute" est un programme qui permet de connaitre la liste des différents
routeurs empruntés entre la machine locale et une destination quelconque.
• Pour cela, le programme envoie un paquet TCP ou UDP ou ICMP avec un TTL
(Time To Live) au niveau IP qui commence à 1 et qui est incrémenté jusqu'à ce
que l'on atteigne la destination (bien souvent limité à 30 sauts au maximum).
• En effet, lorsqu'un paquet est traité par un routeur, le TTL de ce paquet est
diminué de 1. Lorsque ce TTL arrive à 0, le routeur retourne à l'émetteur un
paquet ICMP dont le type est "Time Exceeded". En analysant la réponse reçue,
on en déduit l'adresse IP du routeur qui a envoyé ce paquet.
• En itérant successivement le processus, il est ainsi possible de connaitre la liste
des routeurs empruntés.

Vous aimerez peut-être aussi