Comment se fait-il qu’Apache et Firefox puissent utiliser simultanément le port 80 (ou parfois le port 8080)?

Le serveur Web Apache utilise le port 80 pour écouter les demandes entrantes et les réponses via le port 80. Firefox utilise le port 80 pour envoyer des demandes aux serveurs Web, puis écoute le port 80 pour obtenir la réponse du serveur Web. J’ai déjà lancé Apache et Firefox avant et je me demande comment deux programmes différents peuvent partager le même port.

Chaque côté d’une connexion réseau TCP est défini par un touple de (ipaddress, port #). Quand un paquet quitte votre système, tout ce qu’il sait, c’est qu’il doit trouver l’adresse IP 192.168.1.1 et aller à la personne qui a un socket lié au port 80. Un socket serveur sera défini par l’adresse sur laquelle Apache écoute et port 80. Le socket client ouvert par Firefox aura la même adresse IP mais un autre numéro de port atsortingbué aléatoirement que vous ne voyez normalement pas. Vous pouvez le voir en utilisant netstat ou tcpview (Windows) Par exemple, lorsque je lance netstat en ce moment, je vois:

tcp4 0 0 xxxx62993 stackoverflow.co.https ESTABLISHED 

où xxxx correspond à l’adresse IP de mon ordinateur portable et 62993 au numéro de port aléatoire atsortingbué à mon navigateur Web.

Firefox n’écoute pas le port 80. Il envoie une requête à un port de serveur et gère la réponse.