一、简介
最近调试项目的时候有需要测试UDP连接,所以顺便研究了一下。
MaQaQ:省流,不介意下载工具的话就直接拉到最后看Advanced Port Scanner。
二、TCP
1、telnet(需要开启telnet功能)
控制面板 -> 程序 -> 启用或关闭 Windows功能 -> Telnet client
cmd 指令:telnet ip port,如 telnet 192.168.2.2 8888
成功会直接从cmd切换成telnet的窗体:

失败会在cmd提示:

2、ssh
cmd 指令:ssh -v -p port ip,如ssh -v -p 8888 192.168.2.2
成功会在cmd显示详情:

失败会在cmd提示time out:

3、curl
cmd 指令:curl -v ip:port,如curl 192.168.2.2:8888(-v指令用于显示详情,可以不加,但加上会更直观)
成功会在cmd显示详情:

失败会在cmd提示Fail

三、UDP
1、PowerShell(测试失败,仅供尝试)
win+x管理员打开PowerShell,执行:
$udpClient =New-Object System.Net.Sockets.UdpClient
$udpclient.Connect("192.168.2.3",8880)
$data = [System.Text.Encoding]::ASCII.GetBytes("Test")
$udpClient.Send($data,$data.Length)
可以新建个文档存起来,比如testUdp.ps1,然后执行:powershell -ExecutionPolicy Bypass -File 文档路径
测试了一下,不管连不连通都是一样的返回结果(数字4,应该是发送字节数),没有深究,直接弃用。
2、PortQryV2
PortQryV2是微软提供的工具,可以测TCP/UDP,微软官网下载地址:Download PortQry Command Line Port Scanner Version 2.0 from Official Microsoft Download Center,也可以从在网盘下载,链接: https://pan.baidu.com/s/1_5ZC-m-b8PJh8F-D8sgflg?pwd=tup3 提取码: tup3,官方使用说明:使用 PortQry 命令行工具 - Windows Server | Microsoft Learn。
下载得到PortQryV2.exe,双击打开后解压即可:

然后cmd进入到解压后文件夹的目录下,运行指令:portqry -n 服务器IP地址 -p UDP -e 端口号,PortQryV2默认为模式为TCP,所以需要指定-p UDP,如下所示:

测试发现:
① PortQryV2仅在本地能测出端口关闭:

② 如果是另一台服务器(2.89)测试本机(2.2),则无法判断是否有进程监听:

③ 如果本机监听了端口+同时向测试机发送数据,那么远程测试机可以得到确定的LISTENIING状态,否则都是第②种状态:

另外补充指令:
portqry -local 用于查询本机所有TCP/UDP端口
portqry -n 192.168.2.2 -r 1:65535 用于查询指定服务器的所有TCP端口
3、netcat
官网下载:netcat 1.11 for Win32/Win64,网盘:https://pan.baidu.com/s/1wuwd5qTRc2FxCaNgFnjsHg?pwd=s6yb 提取码: s6yb,这个解压的时候会被杀软识别到,记得关掉杀软或者手动去隔离区捞回来。
同样是cmd进入到解压后文件夹的目录下,输入指令:nc -u -v -z 目标IP地址 目标端口(-u -v -z也可以直接合并成-uvz),如下:

如果是测试远端服务器的话,要等久一点,本地的结果出来比较快。而且这个不管是否有发送数据,都会检测出来open,所以无法检测到是否有进程监听了端口。
4、Advanced Port Scanner
官网下载: Advanced Port Scanner ,网盘:https://pan.baidu.com/s/1-geIj2AqvYHzhskJfZQRPA?pwd=h3sp 提取码: h3sp,安装的时候如果想修改文件夹位置记得勾上高级设置。
这个是带图形化界面的,操作比较简单,可以批量查询,填上IP跟端口号即可:

这个如果UDP没有在发送数据,就检测不到。
四、总结
1、Advanced Port Scanner比较直观,tcp跟udp都能测;
2、如果不想用工具,tcp用ssh或者curl都行,udp就根据情况吧