← Все вопросы

Что такое UDP-порт и как порты работают в UDP, если соединения нет?

Задан 32 месяца назад1.1к просмотров2 ответа
8

Если в UDP нет соединения, то зачем тогда порты? Чем UDP-порт отличается от TCP-порта? И могут ли порт 53 для TCP и порт 53 для UDP быть заняты одновременно разными службами?

2 ответа

13
✓ Принятый ответ — помог автору

Порт нужен не для соединения, а для адресации приложения внутри хоста. IP-адрес говорит «какой компьютер», а порт — «какая программа на этом компьютере».

В заголовке UDP-дейтаграммы всего 4 поля, и два из них — это порты:

Поле Размер
Порт источника 2 байта
Порт назначения 2 байта
Длина 2 байта
Контрольная сумма 2 байта

Когда дейтаграмма приходит на хост, ОС смотрит на порт назначения и отдаёт данные тому процессу, который этот порт слушает. Никакого соединения для этого не требуется — порт это просто числовой «адрес окошка» от 0 до 65535.

Про ваш вопрос с 53: да, TCP-53 и UDP-53 — это абсолютно разные, независимые пространства портов. Их различает поле «протокол» в IP-заголовке. DNS как раз классический пример: обычные запросы идут по UDP/53, а передача зоны и большие ответы — по TCP/53. Так что одна служба может слушать оба, и конфликта нет.

Известные UDP-порты: 53 (DNS), 67/68 (DHCP), 123 (NTP), 161 (SNMP).

5

Добавлю практический момент: поскольку в UDP нет состояния соединения, файрволы и NAT работают с ним хитрее. Для UDP нет понятия «открыто/закрыто соединение», поэтому NAT держит временную запись по паре (IP:порт источника → IP:порт назначения) и удаляет её по таймауту, если трафик прекратился. Из-за этого, например, в играх и VoIP периодически шлют keep-alive пакеты, чтобы «дырка» в NAT не закрылась.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект