Связь между портом и IP-адресом - PullRequest
7 голосов
/ 30 мая 2010

У меня вопрос, если у машины А два IP-адреса X, Y.

Может ли он открыть порт 80 дважды, как X:80 и Y:80?

Скажите, порт уникален по машине или по IP?

Ответы [ 3 ]

6 голосов
/ 30 мая 2010

IP-адрес определяет сетевой интерфейс (например, порт Ethernet на вашем компьютере или ваше соединение WiFi). Номер порта определяет процесс, к которому следует направлять сообщения, поступающие на данный сетевой интерфейс. Следовательно, вы можете использовать один и тот же номер порта с разными IP-адресами, так как они указывают порт для прослушивания на данном интерфейсе. Обратите внимание, что вы даже можете повторно использовать номер порта с тем же IP-адресом, если используете опцию SO_REUSEADDR при вызове функции bind .

3 голосов
/ 30 мая 2010

Это уникально по IP. Когда вы bind (это важная часть ), вы привязываетесь к IP и номеру порта, а не к машине и номеру порта. Для привязки ко всем адресам вы можете использовать что-то вроде INADDR_ANY.

Если вы хотите связать только несколько адресов, вы должны сделать это «вручную». Когда ОС получает пакет, она сначала проверяет, является ли он пунктом назначения. Затем он передает его в программу, которая имеет requested (через связывание, через соединение и т. Д.), Чтобы он был пунктом назначения пакетов с этим конкретным IP и номером порта.

1 голос
/ 30 мая 2010
Порт

и IP-адреса имеют сопоставление от 1 до 1.

Итак, да, у вас может быть открыт порт 80 на двух разных IP на одной машине.

...