1.原理
UDP不像TCP有握手机制,所以不能只在客户端单方面测试到达服务端某个UDP端口是否通畅。一般做法是在服务端监听一个端口,客户端连接这个端口。客户端发送数据给服务端,在服务端观察是否可以收到数据。
2.windows系统测试UDP端口
windows可以用可视化工具,sokit-1.3-win32-chs.zip。既能做服务端,也能做客户端。自行百度,操作简单。
3.linux系统测试UDP端口
3.1.服务端监听指定UDP端口:
nc -ul 514 #或者使用 netcat -ul -p 514
3.2.客户端链接该端口,然后随便输入文字:
nc -u x.x.x.x 1080 #或者使用 netcat -u x.x.x.x 1080
4.网上的其他错误案例
4.1.客户端使用nc -uvz
[root@local]$ nc -uvz 8.8.8.8 514 Ncat: Version 7.50 ( https://nmap.org/ncat ) Ncat: Connected to 8.8.8.8:514. Ncat: UDP packet sent successfully Ncat: 1 bytes sent, 0 bytes received in 2.01 seconds.
这里一定要注意:回显success只是表示发送出去了,至于服务端收到没,不知道。
4.2.客户端使用nmap -sU
[root@local]# nmap -sU 8.8.8.8 -p 514 -Pn Starting Nmap 6.40 ( http://nmap.org ) at 2023-02-25 01:06 CST Nmap scan report for 8.8.8.8 Host is up. PORT STATE SERVICE 514/udp open|filtered syslog Nmap done: 1 IP address (1 host up) scanned in 2.06 seconds
原话是:“STATE为open是正常打开的状态,STATE为filtered是被阻断或者没有打开的状态”。
上面的说法就是误导人,你看我测试的STATE为open|filtered,这不就是跟没说一样吗?
转载请注明:零五宝典 » 如何测试两个系统的UDP端口通信是否正常?