La requête HTTP en question n'est en fait valide que si le navigateur parle à un intermédiaire (proxy).
Votre exemple ressemblerait un peu plus à ce qui suit si le navigateur parlait directement avec un serveur Web:
GET /hello.htm HTTP/1.1
Host: www.pippo.it
Maintenant, pour mettre cela en perspective, considérons le modèle OSI:
Nous avons 3 systèmes en action:
- Un client exécutant le navigateur
- Un serveur web au service du site
- Un serveur DNS connaissant l'adresse IP du site
Les protocoles impliqués sont, de bas en haut (ensemble pertinent minimum à OP):
La communication HTTP se fait via le protocole TCP (TCP est au dessus du protocole IP) tandis que la communication DNS, dans ce cas, se fait via le protocole UDP (UDP est aussi au dessus du protocole IP).
Voici la séquence de communication en bref:
Le client , l' exécution du navigateur, demande au serveur DNS pour un A
enregistrement pour www.pippo.it
, en utilisant le protocole UDP.
1.1. Sur le client, c'est le système d'exploitation qui s'occupe de la résolution et parle au navigateur --- le navigateur ne parle jamais directement au serveur DNS, plutôt via le système d'exploitation en appelant gethostbyname () ou le plus récent getaddrinfo () . Sous Windows, l'ordre dans lequel le système d'exploitation résout les adresses est probablement défini par quelque chose comme ceci , tandis que sous Linux, la priorité de résolution est définie par/etc/nsswitch.conf
Le serveur DNS , utilisant le protocole UDP, répond au client avec un enregistrement / adresse IP, si elle existe
Le client ouvre une connexion TCP sur le port 80 du serveur Web et écrit le texte suivant:
Requête HTTP:
GET /hello.htm HTTP/1.1
Host: www.pippo.it
Vous pouvez imiter la même chose en faisant quelque chose comme ceci dans votre console ou invite de commande:
> telnet www.pippo.it 80
Trying 195.128.235.49...
Connected to www.pippo.it.
Escape character is '^]'.
GET /hello.htm HTTP/1.1
Host: www.pippo.it
suivi de deux lignes vides. Si le contenu demandé existe, le serveur Web l'imprimera à l'écran. S'il y a un navigateur de l'autre côté, le texte de la réponse est analysé par le navigateur et toutes les balises, liens, scripts et images sont affichés dans ce que nous appelons une page Web.
En réalité, il y a plus de détails, par exemple, les navigateurs peuvent mettre en cache les adresses IP si vous avez déjà visité un domaine, de sorte que la résolution DNS devient inutile. En outre, les navigateurs modernes peuvent essayer de résoudre le problème avant d'en avoir réellement besoin ( prélecture DNS ) pour accélérer votre navigation.
En outre, votre ordinateur peut contenir des enregistrements statiques dans un hosts
fichier. Si un enregistrement correspond à la demande, l'entrée statique locale est utilisée en premier et aucun serveur DNS n'est jamais contacté. Ceci est configurable, et pas nécessairement vrai, mais c'est la valeur par défaut sur les systèmes d'exploitation que je connais.