下面以Linux平台为例,讲述测试TCP和UDP端口的方法。
有两个命令可以用来测试端口,一个是telnet,一个是nc,但telnet只能用于测试TCP端口,而nc即可用于测试TCP端口也可用来测试UDP端口。
【telnet命令的用法】
telnet IP port
例如:
[root@localhost]# telnet 192.168.0.181 20060
Trying 192.168.0.181...
Connected to 192.168.0.181.
Escape character is '^]'.
quit // 输入quit并回车退出telnet。
Connection closed by foreign host.
[root@localhost]#
【nc命令的用法】
1. 测试TCP端口
nc -vz IP port
例如:
[root@localhost]# nc -vz 192.168.0.181 20060
Connection to 192.168.0.181 20060 port [tcp/*] succeeded!
[root@localhost]#
2. 测试UDP端口
nc -vuz IP port
举例说明
Windows的IP是192.168.0.3,Linux的IP是192.168.0.32。
在Windows上运行TCP/UDP调试工具,如下图。
在调试工具上没创建端口号为34567服务时,在Linux如下执行nc命令无任何输出。如下:
[root@localhost]# nc -vuz 192.168.0.3 34567
[root@localhost]# // 执行nc命令后无任何信息输出。
在调试工具上创建端口号为34567服务后,在Linux执行nc命令后有“succeeded”信息输出。如下:
[root@localhost]# nc -vuz 192.168.0.3 34567
Connection to 192.168.0.3 34567 port [udp/*] succeeded!
[root@localhost]#
--- 注意 ---
执行nc命令时,有时随便写个主机名和有效的端口号也能输出“succeeded”信息,如下:
[root@localhost]# nc -vuz srtsrtseggg 61357
Connection to srtsrtseggg 61357 port [udp/*] succeeded!
[root@localhost]#
那是因为DNS服务器有污染(或者叫广告插入),对于任意不存在的域名都会给出解析IP。这可以用wget命令检验,如下:
[root@localhost]# wget --spider srtsrtseggg
Spider mode enabled. Check if remote file exists.
--2016-06-08 01:59:04--http://srtsrtseggg/
Resolving srtsrtseggg... 123.129.254.17
Connecting to srtsrtseggg|123.129.254.17|:80...
...
看到解析出来的IP,还有HTTP响应。