Answers:
从特定的输出来看,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 : "*");
大约3次写入打开套接字的udptest问题。注意,这不适用于IPv6,并且在检查了大约100个端口后失败。
因此,尽管其他建议可能是有效的,但我认为在这种情况下不会发生这种情况。
有一条ICMP消息来表明端口(甚至是UDP端口)已关闭。因此,如果主机发送此消息,则可以认为该端口已关闭。
https://zh.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端口是否存在”