Mon navigateur est Firefox, avec 3 onglets ouverts :
tab1-->google.com
tab2-->yahoo.com
tab3-->msn.com
Ils utilisent tous port 80
et Photoshop aussi : Comment l'ordinateur sait-il quelles données appartiennent à quel processus ?
Une connexion TCP est identifiée de manière unique par (hôte local, port local, hôte distant, port distant). (Techniquement, le protocole fait également partie des critères, mais si nous nous limitons à TCP, il s'agit bien sûr de TCP).
Un exemple de connexion avec un routeur :
Si vous ouvrez une autre connexion à Google, il utilisera un port de sortie différent, ce qui permettra de l'identifier de manière unique.
C'est également ce que votre système d'exploitation utilise pour acheminer les paquets de réponse vers la bonne application.
Je vais corriger votre diagramme voir l'image ci-dessous.
Il est utile d'utiliser le mot "paquet" au sens général, c'est-à-dire au sens de l'ingénierie électronique, sans la confusion de la terminologie des "couches" ISO OSI.
Il y a un paquet qui contient des informations telles que l'adresse IP source, l'adresse IP de destination, et après cela, il y a d'autres champs qui peuvent être appelés le segment TCP, et ils ont des champs tels que le port source TCP, le port de destination TCP.
Note ajoutée-
Dans des scénarios un peu plus complexes, vous pourriez avoir deux connexions, avec la même IP source accédant à la même IP de destination et au même port de destination, mais une connexion aurait un port tcp local, l'autre un autre port tcp local. Cela pourrait se produire si vous avez plusieurs onglets ouverts dans un navigateur Web, accédant au même serveur Web. Un autre scénario est celui où vous avez plusieurs cartes réseau. N'oubliez pas que les adresses IP appartiennent aux interfaces réseau (ce qui est plus précis que de dire qu'elles appartiennent à des "ordinateurs"). Un ordinateur peut avoir plusieurs interfaces réseau, plusieurs IP. Une connexion est établie entre les interfaces réseau.
@grawity J'ai ajouté le concept de paquet, (puisque cela clarifie le concept de port qu'il ne comprenait pas), et cela couvre également un peu l'IP source et le port source. D'ailleurs, je pense que mon image originale était légèrement erronée car j'ai appelé "port" un identifiant alors que je pense que ce n'est pas le cas. J'ai donc corrigé mon image. (Il faudra cependant que je me penche sur la différence entre un identifiant et un identifiant unique).
Le processus du serveur web sur le serveur est à l'écoute sur le port 80 pour les connexions sur sa propre adresse IP. Une connexion est établie vers une adresse IP ET un port, pas seulement l'un ou l'autre. Ainsi, votre ordinateur peut se connecter au port 80 sur 3 adresses IP différentes sans problème.
Votre PC n'utilise pas le port 80 à l'extrémité locale de la connexion. Le système d'exploitation utilisera le prochain port local libre dans la plage qu'il est écrit d'utiliser. Pour Windows, les ports commençant à 1024 (anciennes versions) ou à 16536 (versions plus récentes) sont utilisés pour les connexions. Les boîtes Linux ont tendance à utiliser des ports dans la plage supérieure, au-dessus de 38000 environ.
Vous pouvez confirmer ce comportement dans Windows (powershell) avec :
netstat -a | findstr <the servers IP address>
ou sous Linux (en tant que root) :
netstat -ntup | grep <the servers IP address>
et notant le port local. Ce n'est pas le port 80.
De plus, certains serveurs n'écoutent que les nouvelles connexions sur un port (comme FTP), et ouvrent une nouvelle connexion pour transférer réellement des données ou fournir des services. Ce comportement dépend toutefois entièrement du démon en question. Si le service veut utiliser d'autres moyens pour suivre les sessions individuelles, il est libre de le faire, et de garder tout le trafic sur un seul port, comme TCP/80.
Edit : pour répondre à votre question élargie :
Votre navigateur connaît un site par son domaine et son adresse IP, et non par son numéro de port. Chaque système d'exploitation et chaque application fournit une version de la méthode Berkeley Sockets. GetHostByName(string name)
qu'il utilise pour rechercher un serveur distant par nom de domaine. Sur la couche TCP, puisque, comme je l'ai mentionné, vous n'utilisez pas TCP/80 localement (seuls les serveurs utilisent 80, et il est impossible qu'un serveur de MSN ne sache pas s'il s'agit de Google), il n'y a aucune ambiguïté.
Il est à noter que lorsqu'un programme utilise un port pour envoyer des données, il semble qu'il envoie le flux de données au port local, mais il est important de se rappeler que lors de la création de ce port, une connexion TCP a été créée entre les hôtes IP, de sorte que le port connaît déjà la (seule) adresse IP distante à laquelle ce port local est connecté.
Aujourd'hui, Windows dispose également d'une plage de ports éphémères élevée par défaut, commençant quelque part entre 65535 et 16384.
Oui, vous avez raison. Le port 80 appartient au serveur. Vous dites : "Ainsi, votre ordinateur peut se connecter au port 80 sur 3 adresses IP différentes sans problème". Si mon ordinateur utilise plusieurs adresses IP pour chaque demande (alors que chaque ordinateur a une adresse IP unique), comment le serveur peut-il me reconnaître ?
Toutes les applications utiliseront un port aléatoire pour un "usage interne". C'est ce qu'on appelle le port local.
En regardant dans Resmon.exe, sous l'onglet Network
vous pouvez voir une liste des connexions TCP. Il s'agit des connexions TCP ouvertes par chaque programme. Cela s'affiche :
Globalement, chaque application/connexion TCP (car certaines applications peuvent en avoir plusieurs, comme un navigateur web avec plusieurs onglets) obtient un port local aléatoire qui peut être utilisé pour chaque connexion TCP ouverte.
EDIT :
Merci à @Hennes d'avoir identifié que les ports sont supérieurs à 1023 et inférieurs à 65536.
Tous les ports jusqu'à 1023 sont réservés, comme le port 80, etc. Et 65535 est le numéro de port maximum.
@Hennes Faux hennes et hitten. Le numéro de port le plus élevé est 65535 (16 bits vont de 0 à 65535). Cela fait 65536 nombres, allant du premier port 0, jusqu'à 2^16 MOINS 1. et un lien pour confirmer que le port le plus élevé est 65535 stackoverflow.com/questions/113224/ Donc votre commentaire voté est faux, et la dernière ligne de la réponse de bitten est fausse.
@barlop D'accord, mec, calme-toi, mec. Simple erreur, ça m'a semblé bizarre quand je l'ai lu, mais je lui ai fait confiance. Je vais l'éditer.
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.
0 votes
Considérez le port 80 comme un numéro d'extension. L'onglet 1 appelle Google sur le poste 0. Il demande ensuite à la secrétaire des communications futures. Il n'est pas nécessaire que cela se produise sur le port 80. Il en va de même pour l'onglet 2, qui appelle quelqu'un d'autre et qui constitue donc une paire IP:80 différente.