답변:
Connection to Connection to 10.1.0.100 53 port [udp/domain] succeeded!
openbsd-netcat을 사용 하는 특정 출력으로 판단하십시오 .
테스트를 위한 코드를 살펴보면 UDP 소켓에 바인딩하는 것입니다. 즉 열린 연결이 있습니다.
if (vflag || zflag) {
/* For UDP, make sure we are connected. */
if (uflag) {
if (udptest(s) == -1) {
ret = 1;
continue;
}
}
/* Don't look up port if -n. */
if (nflag)
sv = NULL;
else {
sv = getservbyport(
ntohs(atoi(portlist[i])),
uflag ? "udp" : "tcp");
}
fprintf(stderr,
"Connection to %s %s port [%s/%s] "
"succeeded!\n", host, portlist[i],
uflag ? "udp" : "tcp",
sv ? sv->s_name : "*");
udptest 는 오픈 소켓에 3 번 정도 쓴다. IPv6에서는 작동하지 않으며 약 100 개의 포트를 확인한 후에는 실패합니다.
따라서 다른 제안은 유효 할 수 있지만이 특별한 경우에는 발생하지 않는다고 생각합니다.
실제로는 그렇지 않습니다. 다음을 수행하여 확인할 수 있습니다.
$ nc -vz -u 8.8.8.8 53
Connection to 8.8.8.8 53 port [udp/domain] succeeded!
$ nc -vz -u 8.8.8.8 54
Connection to 8.8.8.8 54 port [udp/*] succeeded!
$ nc -vz -u 8.8.8.8 59
Connection to 8.8.8.8 59 port [udp/*] succeeded!
$
따라서 UDP를 사용하면 정보를 다시 제공하지 않으면 실제로 확인할 수있는 것이 아닙니다.
포트, 심지어 UDP 포트가 닫 혔음을 알리는 ICMP 메시지가 있습니다. 따라서 호스트가이 메시지를 보내면 포트가 닫혀 있다고 가정 할 수 있습니다.
https://ko.wikipedia.org/wiki/Internet_Control_Message_Protocol#Destination_unreachable
글쎄, 나는 다른 의견을 가지고있다 :
a:~# nc -luk 10.12.0.12 667 // listen on UDP port 667
b:~# nc -uv 10.12.0.12 667 // check if port is open
nc: 10.12.0.12 (10.12.0.12) 667 [667] open
I love stackexchange // send a message
a:~# nc -luk 10.12.0.12 667
I love stackexchange // receive the message.
따라서이를 기반으로 해당 udp 포트에서 a와 b 사이의 연결이 가능한지 확인할 수 있습니다. 나중에 tcpdump를 사용하여 계속 확인할 수 있습니다.
10.12.0.12
시겠습니까? 왜 두 컴퓨터에서 사용됩니까?
udptest
찾고있는 기능이 있으며 내 질문에 대답합니다. 당신이 제공 한 링크에서 "* udptest () * UDP 포트가 있는지 확인하기 위해 몇 가지 쓰기를하십시오"