Couche réseau: Ping - pierre

Transcription

Couche réseau: Ping - pierre
Réseaux :
Couche réseau:
Protocole ICMP (Internet Control Message Protocol) :
Le but est d’échanger des messages d’erreur et des demandes d’informations, soit traités par
IP soit par une couche supérieure :
Header IP
ICMP Header
ICMP Data
Réseau
ICMP
Paquet IP
Liaison
Header
Ethernet
…
Liaison
Physique
On peut noter que l’entête IP fait 20octets alors que la longueur du message ICMP est variable.
Quelques types des messages ICMP :
(Les informations comme type et code peuvent être récupérer grâce à une capture WireShark en analysant la couche réseau)
Ping :
La commande ping s’exécute dans l’invite de commande, elle est basée sur les messages ICMP
de type 8 (echo request) et 0 (echo reply)
 Réception d’un message type 8 ⇒ émission d’un message type 0
La commande ping renseigne l’adresse IP, le nombre de paquets, la latence, la taille et le TTL.
On appelle RTT le temps aller-retour, il peut être différent car les machines n’empruntent pas
forcément le même chemin de plus la charge du réseau peut jouer un rôle important.
Exemple d’une commande ping :
ping www.google.fr
Envoi d’une requête ping de 32octets
vers 209.85.135.103 (www.google.fr)
La lecture des informations est simple, on peut détailler ce qu’est le TTL :
Il s’agit du nombre de « bonds » nécessaires à un message pour attendre sa cible, dans la
commande ci-dessus le TTL était de 255 :
Ma machine
•
TTL=241
www.google.com
x
x
243
x
x
245
x
x
247
x
x
x
249
x
251
x
x
x
253
•
TTL=255
Le TTL qu’on lit est celui de message « retour » (echo reply).
Commande ping avec WireShak :
D’un couple (request, reply) à l’autre le numéro de séquence change cela permet d’identifier
chaque requête (et de l’associer à sa réponse).
Le champ « Checksum » correspond à la somme de contrôle, il permet de savoir si le checksum
calculé correspond au checksum reçu (pour savoir si l’envoi est correct, dans le cas inverse on
demande le renvoi).
TraceRoute :
La commande tracert s’exécute dans l’invite de commande, elle est basée sur les messages
ICMP de type 11 / code 0 (time exceeded) et type 3 / code 4 (port unreachable).
 Envoi de datagrammes UDP qui déclenchent ces messages d’erreur ICMP
Fonctionnement : (sens A → B)
Exemple : tracert www.google.fr
On attend la cible en 16 sauts
* correspond à des machines qui « cachent » leur adresse.
La première adresse correspond au routeur
MTU :
Le MTU correspond au plus grand paquet que l’on peut envoyer :
MTU=4000
MTU=1500
X
1500
1500
1000
Fragmentation
Path MTU :
Découverte de la taille maximale des paquets au long de la route A → B pour éviter la
fragmentation :
 Émission avec le bit DF = 1 (en-tête IP)
 Si un routeur doit fragmenter, il retourne à la source un message d’erreur ICMP.
(La plus grande taille sans avoir à fragmenter est 1472 octets)
Il existe également une taille « minimum » :
Si on ping sans données (0 octet); on remarque avec WireShark qu’on a un paquet qui fait tout
de même 42 octets :
- L’entête du paquet ICMP sur 8 octets
o le type sur 1octet
o le code sur 1 octet
o le checksum sur 2 octets
o etc…
- L’entête IP sur 20 octets
- Les adresses MAC sur 12 octets (6 pour la source, 6 pour la destination)
- Le protocole de la couche liaison sur 2 octets