2010-05-30 16 views
7

Ma question est, si la machine A ont deux adresses IP X, Y. Peut-il ouvrir deux fois le port 80, comme X:80 et Y:80?Relation entre le port et l'adresse IP

Dites, est un port unique par machine ou par IP?

+1

Devrait probablement être sur serverfault.com, mais une question intéressante pour les programmeurs qui traitent de ce genre de chose. :) – JYelton

Répondre

6

Une adresse IP spécifie une interface réseau (pensez à un port Ethernet sur votre ordinateur ou votre connexion WiFi). Un numéro de port spécifie le processus d'acheminement des messages arrivant sur une interface réseau donnée. Par conséquent, vous pouvez utiliser le même numéro de port avec des adresses IP différentes, car elles spécifient le port sur lequel écouter sur cette interface donnée. Notez, cependant, que vous pouvez même réutiliser un numéro de port avec la même adresse IP si vous utilisez l'option SO_REUSEADDR lors de l'appel de la fonction bind.

+0

Intéressant ... –

3

C'est unique par IP. Lorsque vous bind, (c'est la importante partie), vous liez à une adresse IP et un numéro de port, pas une machine et un numéro de port. Pour lier à toutes les adresses, vous pouvez utiliser quelque chose comme INADDR_ANY.

Si vous voulez vous lier seulement à quelques adresses, vous devez le faire "à la main". Lorsque l'OS reçoit un paquet, il vérifie d'abord qu'il est la destination. Ensuite, il le transmet au programme qui a requested (via bind, via connect etc) qu'il soit la destination des paquets avec cet IP spécifique et le numéro de port.

1

Le port et les adresses IP ont un mappage 1 à 1. Donc, oui, vous pouvez avoir le port 80 ouvert sur deux adresses IP différentes sur la même machine.