nmap не обнаруживает явно открытый порт udp

nmap не обнаруживает явно открытый порт udp

Я открыл порт 4000 на своей локальной машине следующим образом:

nc -lvup 4000

а затем попытался подключиться к тому же порту следующим образом:

nc -vu 127.0.0.1 4000

и смог успешно подключиться и отправлять и получать текст туда и обратно. Однако, когда я слушаю тот же порт, что показан в первом фрагменте, а затем пытаюсь выполнить сканирование UDP с помощью

nmap -sU 127.0.0.1 -p 4000

Результат следующий:

Nmap scan report for localhost (127.0.0.1)
Host is up (0.000061s latency).

PORT     STATE  SERVICE
4000/udp closed icq

Разве не должно быть написано "открыто", поскольку порт явно открыт, как установлено первым тестом? Пожалуйста, дайте понять, так как я действительно озадачен этим.

решение1

Нет. Ты не понимаешь, что происходит. Это UDP, нетсоединения.

Когда вы запускаете второй ncи вводите в него что-то, он просто отправляет пакеты. Затем выдругими способами(наблюдая за другой стороной коммуникации, например, за экраном другого компьютера) подтверждают, что коммуникация происходит. Если бы не было "прослушивания" nc, "отправляющий" nc с радостью отправлял бы те же самые пакеты, не имея ни малейшего понятия, были ли они получены или потеряны.

Так же как и nmap. Он отправляет пакеты, не видит никаких ответов и решает, что его пакеты просто исчезли в черной дыре.

Это UDP, он такой. У него нет внутреннего подтверждения приема. Если приложению это нужно, оно само делает подтверждения. И поскольку у нас нет протокола уровня приложения, чтобы сделать это здесь, то nmap не видит ответа, не обнаруживает "открытый порт".

Для сравнения, в TCP встроены подтверждения (ACK), поэтому мы можем надежно определить, открыт ли порт.

Связанный контент