Comment le serveur Http distingue-t-il les ordinateurs derrière un routeur

Les serveurs HTTP fonctionnent généralement au port 80. Pourtant, les routeurs NAT, comme la plupart d'entre eux, attribuent actuellement le port aux demandes sortantes afin qu'ils sachent quand la requête est retournée, quel ordinateur est connecté, c'est supposé être. Ils le font parce qu'ils ne peuvent utiliser qu'une seule IP publique, même si tous les ordinateurs derrière le routeur reçoivent une adresse IP publique, ils sont une adresse IP locale. Ce qui signifie qu'ils ne fonctionnent que pour tous derrière ce routeur.

Alors, comment le serveur gère-t-il cela? Cela fonctionne uniquement au port 80, et les envois de routeur à tous les ports qu'il souhaite faire en fonction de ce qui est disponible et de la façon dont il est programmé.

Ma compréhension:

  1. Ordinateur A vers routeur. 22.22.22.22.22: 80

  2. Routeur vers le monde: 12.68.191.1.102: 1 -ISP adresse IP donnée: Port pour distinguer les ordinateurs connectés à celui-ci.

Maintenant quoi

Ou peut-être y a-t-il une différence entre le port et le port source.

Vous confondez les ports source et les ports de destination. Lorsque la demande est envoyée au serveur HTTP, le port de destination est 80 puisque c'est ce que les serveurs Web écoutent généralement. Les routeurs NAT peuvent choisir n'importe quel port source qu'ils souhaitent. Lorsqu'ils reçoivent des réponses, ils utilisent le port de destination (et d'autres informations), qui doivent correspondre au port source qu'ils choisissent pour les paquets sortants, afin de connaître la connexion avec laquelle les paquets sont associés.

Votre ordinateur doit faire la même chose. Dites que vous lancez deux navigateurs différents et que vous pointez chacun sur superuser.com . Comment pensez-vous que votre ordinateur indique à quelle connexion TCP les paquets entrants appartiennent?

Le serveur reçoit toujours les données sur le port 80 – le routeur ne réécrit pas le port, seule l'adresse source – au moins dans le cas «typique».

La vérité est que le serveur ne sait pas quelle machine derrière le routeur NAT demande le trafic initialement, mais il y a quelques choses qu'il peut faire pour savoir –

  1. Il peut regarder les informations que le navigateur envoie au serveur dans le cadre de la demande, et utiliser des éléments comme le champ REFERER (referrer) pour voir la dernière page visitée par le navigateur et la chaîne d'identification du navigateur. (Il ne fait aucun doute que d'autres, il est possible d'"empreindre" un client raisonnablement uniquement si vous êtes désespéré)

  2. La première fois que le navigateur visite le site (ou se connecte ou autrement), les cookies peuvent (et sont généralement) utilisés par le serveur pour suivre le mouvement des navigateurs à travers le site. Ces cookies peuvent être utilisés pour différencier les machines / sessions.