Мой вопрос, если машина A имеет два IP-адреса X, Y.
Может это открытый порт 80 дважды, как X:80
и Y:80
?
Скажите, действительно ли порт уникален машиной или IP?
IP-адрес определяет сетевой интерфейс (например, порт ethernet на вашем компьютере или соединение WiFi). Номер порта определяет процесс, на который следует направлять сообщения, поступающие на данный сетевой интерфейс. Следовательно, вы можете использовать один и тот же номер порта с разными IP-адресами, поскольку они определяют порт, который нужно прослушивать на данном интерфейсе. Обратите внимание, что вы можете даже повторно использовать номер порта с одним и тем же IP-адресом, если вы используете опцию SO_REUSEADDR при вызове функции bind.
порт и IP имеют сопоставление 1 к 1.
Таким образом, да, у вас может быть открыт порт 80 на двух разных IP на одной машине.
Уникален по IP. Когда вы связываете
(это важная ) часть), вы привязываетесь к IP-адресу и номеру порта, а не к машине и номеру порта. Для привязки ко всем адресам вы можете использовать что-то вроде INADDR_ANY
.
Если вы хотите привязать только несколько адресов, вы должны сделать это «вручную». Когда ОС получает пакет, она сначала проверяет, является ли он адресатом. Затем он пересылает его программе, которая запросила
(через привязку, через соединение и т. Д.), Чтобы он был получателем пакетов с этим конкретным IP-адресом и номером порта.