Могут ли два разных приложения связывать один и тот же порт на хосте, если они используют разные протоколы?

615
yoyo_fun

 мой вопрос достаточно ясен, я думаю. Если два приложения используют разные протоколы транспортного уровня (например, TCP и UDP или что-то еще), могут ли они открыть один и тот же номер порта?

Как ОС выполняет мультиплексирование, если это так?

Сколько транспортных протоколов может быть в сетевом стеке ОС? Если количество различных протоколов не ограничено, значит ли это, что компьютер может иметь неограниченные открытые порты для связи?

0

1 ответ на вопрос

2
Spiff

Yes, the TCP ports and the UDP ports are completely separate sets of ports, even though they're both UInt16s and managed similarly.

You can create your own transport protocol and give it as many bits as you want for your transport's equivalent of a port number, and never run out of port numbers. You could also create something on the order of 256 transport protocols (although some are already taken), and define huge integers as your port number variable for all of them.

Есть ли способ проверить, сколько транспортных протоколов работает в вашей ОС? yoyo_fun 8 лет назад 0
Кроме того, согласно этой статье, не существует только 255 возможностей для раздела протокола? https://en.wikipedia.org/wiki/List_of_IP_protocol_numbers yoyo_fun 8 лет назад 0
@yoyo_fun К сожалению, вы правы, поле номера протокола IP составляет всего 8 бит, а не 16. Исправлено. Spiff 8 лет назад 1
Таким образом, вы можете использовать столько протоколов транспортного уровня, сколько захотите, но только с другим сетевым протоколом, а не ip. yoyo_fun 8 лет назад 0
@yoyo_fun Конечно. Помимо физического уровня и, возможно, самой нижней части канального уровня, сетевые протоколы могут быть реализованы программно, поэтому, если вы разрабатываете свои с нуля, вы заставляете их делать все, что вы хотите. Вам даже не нужно беспокоиться о модели слоя, если вы не хотите. Spiff 8 лет назад 0