• Aucun résultat trouvé

Au cœur de notre machine

Dans le document Apprenez le fonctionnement des réseaux TCP/IP (Page 180-183)

Nous sommes donc devant notre clavier et entrons dans notre navigateur préféré l'adresse du site que nous voulons atteindre : 88.191.135.63.

Ici, nous utilisons l'adresse IP du site à joindre qui est www.lalitte.com, car nous ne savons pas encore utiliser les noms de machine et ne connaissons pour l'instant que les adresses IP.

On entre la demande dans le navigateur

Nous allons maintenant voir tout ce qui se passe au niveau de notre machine à partir du moment où vous tapez sur la touche entrée.

En couche 7

Nous sommes au niveau de votre navigateur web, Firefox chez moi, et celui-ci souhaite envoyer une requête sur le réseau vers le serveur d'adresse IP 88.191.135.63.

Firefox va utiliser le protocole applicatif HTTP pour envoyer une requête web. Le protocole HTTP fonctionnant sur TCP, Firefox va envoyer sa requête au protocole TCP de couche 4.

Plus exactement, et pour les connaisseurs du web, voici à peu de chose près la requête applicative qui est envoyée : GET http://88.191.135.63 HTTP/1.0

HOST: 88.191.135.63\r\n

Accept : text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

User-Agent : Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:19.0) Gecko/20100101 Firefox/19.0 Ce sont donc ces informations qui vont être envoyées au serveur web 88.191.135.63.

Pour l'instant, voici où nous en sommes de l'envoi de notre trame finale:

GET http://88.191.135.63...

Données applicatives En couche 4

La couche 4 reçoit les informations précédentes et voit qu'une requête doit être envoyée au serveur 88.191.135.63.

Mais attention ! Avant que la requête puisse être envoyée, il faut d'abord initialiser la connexion TCP !

Donc avant de pouvoir envoyer nos données applicatives, nous allons devoir envoyer un segment TCP qui demande à la machine 88.191.135.63 si elle veut bien ouvrir une connexion avec nous.

Cette requête ne sera donc qu'une demande d'ouverture de connexion SYN qui ne contient pas de données applicatives.

Ce premier segment TCP envoyé ne contiendra donc pas de données.

Il va cependant falloir former l'en-tête TCP.

Pour former l'en-tête, nous avons notamment besoin des ports TCP utilisés.

Le port destination est donné par Firefox, c'est le port 80 qui est utilisé par défaut pour le web.

Le port source est un port choisi aléatoirement au-dessus de 1024, la pile TCP/IP va donc nous donner un port aléatoire, par exemple 1337.

On y ajoute les flags, avec notamment le flag SYN qui est positionné, vu qu'il s'agit de l'initialisation d'une connexion.

Notre trame continue de se former avec pour l'instant le segment TCP:

1337 80 ??? flags ??? checksum Segment TCP

La couche 3 récupère donc les informations de couche 4 ainsi que l'adresse IP destination.

Comme la couche 3 est en charge du dialogue entre réseaux et notamment de l'aiguillage des paquets, elle va devoir savoir à quel routeur envoyer les informations. Pour cela, elle va voir sa table de routage, qui pour notre exemple est :

Table de routage

Réseau à joindre passerelle 192.168.0.0/24 192.168.0.1 0.0.0.0/0 192.168.0.254 Pour aller vers 88.191.135.63, la passerelle à utiliser est 192.168.0.254.

La couche 3 sait donc maintenant à qui adresser la future trame, elle connaît aussi les adresses IP source et destination ; elle va pouvoir former son datagramme et l'envoyer à la couche 2...

??? 192.168.0.1 (source) 88.191.135.63 (destination) 1337 80 ??? flags ??? checksum Datagramme IP, contenant le segment TCP

Mais avant, elle va faire un petit travail supplémentaire pour faciliter le travail de la couche 2, elle va s'occuper de la requête ARP pour indiquer à la couche 2 l'adresse MAC à joindre.

Elle va donc en premier lieu aller voir dans la table ARP si l'adresse MAC du routeur 192.168.0.254 n'est pas déjà présente.

Si elle est présente, c'est parfait, on connaît maintenant l'adresse MAC.

Si elle n'est pas présente, un broadcast ARP va être envoyé sur le réseau pour demander l'adresse MAC de 192.168.0.254.

Le routeur va nous répondre et nous connaîtrons son adresse MAC que nous allons inscrire aussi dans la table ARP.

Ainsi, la couche 3 va pouvoir envoyer à la couche 2 le datagramme ainsi que l'adresse MAC de la prochaine machine à joindre.

Je suis quand même obligé de vous dire qu'il se passe beaucoup plus de choses et que nous simplifions ici grandement les mécanismes réseau réels. Ce n'est pas grave, tout ce que nous voyons nous permet sans problème de comprendre le fonctionnement d'Internet sans avoir à rentrer dans les détails.

En couche 2

Notre dernière étape avant l'envoi sur le réseau !

La couche 2 possède maintenant tous les éléments pour envoyer la trame sur le réseau, elle va donc pouvoir la former:

@MAC Trame Ethernet qui contient le Datagramme IP, contenant le segment TCP

Si vous ne vous souvenez plus très bien des champs de chaque couche, n'hésitez pas à revenir quelques chapitres en arrière pour comprendre chacun d'entre eux.

La couche 2 va pouvoir alors envoyer cette trame sous forme de 0 et de 1 sur le réseau !

Allez, pour le plaisir je vous donne un aperçu de ce que cela peut donner en hexadécimal (en binaire ce serait un peu long...) Code : Console

Secret (cliquez pour afficher)

Contenu de la trame Ethernet

Voilà donc notre trame partie sur le réseau (à la vitesse de la lumière, si si, pour de vrai !)

Nous allons maintenant voir quel est le premier équipement qu'elle va rencontrer sur le réseau et comment il va la recevoir.

Dans le document Apprenez le fonctionnement des réseaux TCP/IP (Page 180-183)