黄老师

在我们平时使用电脑网络的过程中呀,不管是普通用户碰到网络应用出问题,还是企业里的网络管理员要对网络进行调试和维护,常常都得去测试 Windows 10 系统里的 UDP 端口情况呢。那到底怎么去测试它呀,下面就给大家详细讲讲一些简单又实用的办法,而且还会给大家展示实实在在的代码示例哦。
咱们可以把 UDP 端口想象成是一栋大楼里的一个个房间,每个房间都对应着不同的网络服务呢。就好比咱们平时上网,DNS(域名系统)服务用的就是 UDP 的 53 端口,它就像一个专门负责把域名转换成 IP 地址的 “小房间”。UDP 协议和大家比较熟悉的 TCP 协议不太一样哦,它不需要像 TCP 那样先建立连接再传数据,传起数据来速度挺快的,不过呢,它有时候不太 “靠谱”,数据可能会丢包。但正是因为它速度快这个特点呀,很多像实时语音通话、在线游戏这类对实时性要求高的应用,就经常会用到 UDP 端口来传输数据啦。
比如说咱们在家里玩网络游戏的时候,玩着玩着突然就卡掉线了,这有可能就是游戏服务器那边对应的 UDP 端口被网络运营商给屏蔽了呀,数据传不过来,游戏可不就掉线了嘛。再比如说企业里开视频会议,要是画面老是卡,声音也断断续续的,很可能就是公司的防火墙把视频会议系统使用的 UDP 端口给拦住了,数据没法顺畅地传输。还有啊,要是咱们在家里调试智能家居设备,发现怎么都连不上网,那也得先看看是不是设备的 UDP 通讯端口出了啥问题呢。
Windows 10 系统自带的 PowerShell 可是个挺好用的工具呢,里面有个叫 Test-NetConnection 的命令,用起来可方便了。咱们先在开始菜单里找到「PowerShell」,然后打开它,就能输入命令来测试啦。
比如说,咱们要测试一下 192.168.1.1 这个 IP 地址对应的 53 端口(就是 DNS 服务常用的那个端口哦)是不是通畅的,就可以输入下面这样的命令:
Test-NetConnection -ComputerName 192.168.1.1 -Port 53 -Protocol UDP
输入完命令按下回车键之后呀,要是显示「TcpTestSucceeded: True」,那就说明这个端口是通的,没什么问题;要是显示「False」呢,那就意味着这个端口可能被拦截了,或者压根就没开放呢。
要是咱们想批量测试好几个端口,也不难哦,还可以写个简单的循环脚本来实现呢。就像下面这样的代码示例:
$ports = 53,161,1900 foreach ($port in $ports) { $result = Test-NetConnection -ComputerName 192.168.1.1 -Port $port -Protocol UDP Write-Host "端口 $port 状态: $($result.TcpTestSucceeded)" }
有时候咱们想知道自己电脑上都有哪些 UDP 端口正在被使用,这时候用 netstat 命令就挺合适的。咱们先以管理员身份打开命令提示符(CMD),然后输入下面这个命令:
netstat -ano | findstr /i "udp"
输入完命令按回车键之后呀,显示出来的结果里,「本地地址」那一项最后冒号后面跟着的数字就是端口号啦,而「PID」呢,就是对应的进程编号哦。比如说,咱们看到结果里有「192.168.1.100:5353」这样的显示,那咱们就可以通过这个 PID 去查一查,看看是哪个程序正在占用这个端口呢。
Nmap 这个工具在网络管理领域那可是挺有名气的呀,虽然乍一看它好像挺复杂的,但其实用来测试 UDP 端口的时候,只需要输入一行命令就行啦。咱们得先从它的官方网站上下载适合 Windows 10 的版本,下载好之后解压,然后在命令提示符(CMD)里切换到它的安装目录(要是已经把 Nmap 的安装目录添加到系统环境变量里了,那就可以直接在任意位置输入命令啦),接着输入下面这样的命令:
nmap -sU 192.168.1.0/24 -p 1-1000
这里面的参数呢,给大家简单解释一下哈:
- -sU 这个参数就是告诉 Nmap,咱们要扫描的是 UDP 端口哦。
- -p 1-1000 呢,就是指定咱们要扫描从 1 号到 1000 号这些端口啦。
等命令执行完之后呀,咱们看结果里如果显示「open」,那就说明这个端口是开放的;要是显示「filtered」呢,那就有可能是被防火墙给拦住了呀。
PortQry 可是微软官方出的专门用来检测端口的工具哦,挺好用的呢。咱们先把它下载下来,然后放到 C 盘根目录下(当然,放别的地方也行,只要你能找到就行啦,这里以 C 盘根目录为例哈),之后就可以用下面这样的命令来测试端口啦:
portqry -n 114.114.114.114 -e 53 -p UDP
这个命令就是用来检测 114.114.114.114 这个 IP 地址对应的 53 端口(还是 DNS 服务那个端口哦)的情况啦。要是返回的结果显示「LISTENING」,那就说明这个端口是正常的,正在监听着呢;要是显示「FILTERED」,那就表示这个端口被过滤了,可能是有啥东西拦住了数据;要是显示「NOT LISTENING」呢,那就说明这个端口压根就没开放呀。
要是咱们测试的时候发现端口被拦截了,那很可能就是防火墙的事儿了呀,这时候咱们可以用命令来快速放行 UDP 端口哦。比如说要放行 UDP 的 5000 端口,就可以在 PowerShell 里输入下面这样的命令:
先放行 UDP 5000 端口的入站规则哈,输入下面这个命令:
New-NetFirewallRule -DisplayName "允许UDP 5000" -Direction Inbound -LocalPort 5000 -Protocol UDP -Action Allow
然后再放行 UDP 5000 端口的出站规则,输入下面这个命令:
New-NetFirewallRule -DisplayName "允许UDP 5000" -Direction Outbound -LocalPort 5000 -Protocol UDP -Action Allow
有时候咱们发现电脑上有个陌生的 UDP 端口在运行,想知道是哪个程序在用它呀,也可以用命令来查一查哦。比如说咱们要查一查 123 这个端口对应的是哪个程序,就在 PowerShell 里输入下面这样的命令:
Get-Process -Id (Get-NetUDPEndpoint -LocalPort 123).OwningProcess
输入完命令按回车键之后呀,要是查出来是像「svchost.exe」这样的程序,那就知道是系统里的某个服务(比如系统时间同步服务之类的)在使用这个端口啦。
给大家讲个实际的例子哈,某公司用的视频会议系统呢,是通过 UDP 的 3478 端口来传输数据的,但是最近老是出现连接失败的情况呀。这时候公司的 IT 管理员就开始排查问题了,步骤是这样的:
首先呢,IT 管理员在视频会议的服务器上运行了下面这个命令:
netstat -ano | findstr :3478
通过这个命令呀,就是要确认一下这个 3478 端口在服务器上是不是处于监听状态呢,要是没在监听,那肯定是服务器这边的配置出问题了呀。
然后呢,IT 管理员又在员工的电脑上执行了下面这个命令:
Test-NetConnection -ComputerName 服务器IP -Port 3478 -Protocol UDP
结果发现连接不上呀,那说明从员工电脑到服务器的这个端口通信有问题呢。
接着呀,IT 管理员又用了 Nmap 这个工具,输入了下面这样的命令来扫描一下这个端口的情况:
扫描完一看结果,显示的是「filtered」,那就说明这个端口很可能是被防火墙给拦住了呀。
最后呢,IT 管理员就登录到公司的防火墙管理界面,添加了相应的规则,把 UDP 的 3478 端口给放行啦,这么一弄,视频会议系统的连接问题就解决了呢。
所以呀,大家掌握了这些测试 UDP 端口的方法之后呢,不管是家里那些智能设备连网出问题了,还是在公司里做网络维护工作,都能比较轻松地去测试 UDP 端口,找到问题所在啦。要是还想了解更多关于网络端口测试方面的详细内容呀,或者想要更多实用的脚本示例,不妨多关注关注我们的技术专栏哦,后续还会给大家分享一些批量检测端口的自动化工具呢。