Bermude
Les Calculs Du Réseau
Page d'accueil > Hobbies > L'Informatique > Les Calculs Du Réseau
Le réseau cause avec des chiffres. Ça, on le savait. Une adresse IP dans un réseau éthernet se représente avec des chiffres. Mais saviez vous que ces chiffres sont mis sous forme de quadrets pour nous être un peu plus compréhensibles que sous leur forme naturelle ? Nous on préfère les noms. La machine quant à elle préfère les chiffres.

La carte réseau qui équipe votre ordinateur est dotée d'une mini calculatrice qui lui permet de nous comprendre. Elle va effectuer une conversion pour nous présenter des chiffres dans un langage humain. Les adresses IP sont composées d'un quadret qui nous sont nettement plus compréhensibles qu'un nombre. 
 
Prenons l'exemple avec l'adresse IP de mon ordinateur. Expérience que vous pourrez reproduire chez vous en prenant votre propre adresse IP.
ifconfig ou ipconfig sont des programmes de base qui vous permettront peut être de la trouver. Pour simplifier l'expérience, il nous faut une adresse en IPV4. Dans le cas d'un réseau d'une autre version, vous pourrez reproduire l'expérience sur un ordinateur connu dans l'internet.
noob@caraybe:~$ ifconfig eth1 
          eth1 Link encap:Ethernet HWaddr 00:16:0a:19:62:d8  
          inet adr:192.168.0.52 Bcast:192.168.0.255 Masque:255.255.255.0 
          UP BROADCAST RUNNING MULTICAST MTU:1472 Metric:1 
          Packets reçus:1733637 erreurs:0 :0 overruns:0 frame:0 
          TX packets:1334246 errors:0 dropped:0 overruns:0 carrier:0 
          collisions:21963 lg file transmission:1000  
          Octets reçus:2131511754 (2.1 GB) Octets transmis:126856293 (126.8 MB) 
          Interruption:18 Adresse de base:0xf600
Comme un dessin est bien plus représentatif qu'un long discours; comme vous le voyez ci dessus, mon adresse IP est 192.168.0.52 
 
Cette information est aussi disponible dans windows avec la commande ipconfig.
Une adresse IP publique
Nous pouvons aussi faire le test avec une adresse IP publique. Le tout est que cette adresse soit capable de répondre à un ping, commande simple dont je vous expliquerai la raison plus tard.
noob@caraybe:~$ nslookup www.free.fr 
Server:       80.10.246.130 
Address:      80.10.246.130#53 

Non-authoritative answer: 
Name:    www.free.fr 
Address: 212.27.48.10
Dans le dessin précédent; on voit que le serveur de noms qui va me répondre est celui de free.fr et que la commande nslookup a trouvé ma réponse dans le cache.
Livebox / Freebox
Il vous reste ensuite la solution de demander votre adresse IP à http://www.adresseip.com/ qui est une machine qui vous renverra la valeur _SERVER["REMOTE_ADDR"] de ses variables php.
Le Calcul
Nous avons maintenant une adresse IP. Nous allons lui envoyer un paquet ICMP echo de type 8 (un ping). Ceci va nous permettre de nous assurer de sa présence sur le réseau. Il est clair que si vous voulez reproduire l'expérience, vous le ferez avec l'adresse IP que vous aurez découverte dans le chapitre précédent.
Le ping
Ping est un programme qui permet d'envoyer un paquet d'une taille déterminée vers une cible indiquée dans la ligne de commande. Ce paquet va vers la cible depuis votre interface et le ICMP echo de type 8 lui demande de renvoyer le même paquet. C'est là qu'il faut veiller à ce que la cible (ou le routeur que vous traverser pour l'atteindre) vous permette de faire passer ce type de paquet. Dans un sens comme dans l'autre. Soit! 
 
On peut comparer ce programme non pas au ping pong qui consiste à renvoyer toujours la même balle mais à l'ustensile en tennis, qui vous permet de renvoyer la balle qu'il vous envoie. À moins que cet appareil soit doté d'un entonnoir qu'il faut viser pour lui renvoyer les balles, il représente un peu le ping. Il vous ping, vous êtes la cible et vous lui renvoyez la balle en retour. 
 
Blague à part, il est possible avec la commande ping de vérifier qu'une adresse IP existe sur le réseau, de faire des diagnostics sur ce dernier. Il est aussi possible de faire chier l'interface cible en lui envoyant des paquets d'une taille gigantesque qu'il devra renvoyer. Ça l'occupe.
Des maths
Chaque partie du quadret et composé d'un nombre entre 0 et 255. Ce qui représente 1111 1111 en binaire. C'est en 8 bits. Comme pour le binaire, le nombre qui est le plus à droite est le quart de quadret zéro. Celui qui est le plus à gauche est donc composé par la multiplication de 256 trois fois sur lui même. 
 
192.168.0.52 est composé de 192, puis de 168; de zéro et enfin de 52. En suivant la logique précédente; on peut dire qu'à l'emplacement où se trouve 192; on devrait lire 192 x 2563; à l'emplacement où se place le 168, on peut lire 168 x 256 exposant 2 ... et ainsi de suite. 
 
192 x 256 ^ 3 = 192 x 16777216 = 3221225472 
168 x 256 ^ 2 = 168 x 65536 = 11010048 
0 x 256 ^ 1 = 0 x 256 =
52 x 256 ^ 0 = 52 x 1 = 52 
 
Pour récupérer le nombre composé par le quadret, il faut ajouter les resultats précédents ensembles. 
 
3221225472 + 11010048 + 0 + 52 = 3232235572
ce qu'il fallait démontrer
Il suffit maintenant d'envoyer un ping à ce nombre pour nous rendre compte que nous envoyons un ping à l'adresse IP.
noob@caraybe:~$ ping -c 1 3232235572 
PING 3232235572 (192.168.0.52) 56(84) bytes of data. 
64 bytes from 192.168.0.52: icmp_seq=1 ttl=64 time=0.041 ms 
 
--- 3232235572 ping statistics --- 
1 packets transmitted, 1 received, 0% packet loss, time 0ms 
rtt min/avg/max/mdev = 0.041/0.041/0.041/0.000 ms
note : dans windows, le paramètre pour n'envoyer qu'un paquet est -n et non pas -c.