Pour répondre à votre question comment il sait il s'agit de ce que votre navigateur envoie au serveur.
Vous avez raison de dire que le système la résout toujours en une adresse IP, mais le navigateur envoie l'URL à laquelle vous avez tenté d'accéder dans l'en-tête HTTP.
Voici un exemple d'en-tête que j'ai trouvé en ligne, modifié pour donner l'impression que vous avez utilisé Firefox sous Windows et que vous avez tapé apple.com
dans la barre d'adresse :
GET / HTTP/1.1
Host: apple.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Voici à quoi ressemblerait l'en-tête si vous utilisiez son adresse IP :
GET / HTTP/1.1
Host: 17.142.160.59
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Les deux seraient envoyés à la même adresse IP via un socket, mais le navigateur indique au serveur ce à quoi il a accédé.
Pourquoi ? Parce que les serveurs web ayant la même adresse IP peuvent héberger plusieurs sites et donner des pages différentes pour chacun d'eux. Il ne peut pas distinguer qui veut quelle page par l'adresse IP car ils ont tous la même - mais il peut les distinguer par l'en-tête HTTP.