Подтвердить что ты не робот

Могут ли сокеты TCP и UDP использовать один и тот же порт?

Прежде всего, есть ли проблема с использованием UDP и TCP на одном сервере?

Во-вторых, могу ли я использовать один и тот же номер порта?

4b9b3361

Ответ 1

Да, вы можете использовать один и тот же номер порта для TCP и UDP. Многие протоколы уже делают это, например DNS работает на udp/53 и tcp/53.

Технически пулы портов для каждого протокола полностью независимы, но для протоколов более высокого уровня, которые могут использовать либо TCP, либо UDP, это означает, что они по умолчанию имеют один и тот же номер порта.

При написании своего сервера помните, что последовательность событий для сокета TCP намного сложнее, чем для сокета UDP, поскольку, так же как и обычные вызовы socket и bind, вы также должны иметь listen и accept.

Кроме того, что вызов accept будет возвращать новый сокет, и это тот сокет, который вам нужно будет также опросить для событий приема. Ваш сервер должен быть готов продолжить соединения accept ing на исходном сокете, одновременно обслуживая несколько клиентов, каждый из которых будет запускать события приема в своих собственных сокетах.

Ответ 2

Во-первых, нет проблем с использованием как tcp, так и udp на сервере.

Во-вторых, мы можем иметь как UDP, так и TCP-запросы на одном и том же порту, потому что каждый запрос идентифицируется с помощью пятикратного набора, содержащегося в исходном IP-адресе, IP-адреса назначения, Source Port, Destination Port, PROTOCOL (поскольку протокол может быть TCP или UDP).