如何测试两个系统的UDP端口通信是否正常?

NetWork 383℃

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端口通信是否正常?