如何在windows下查看端口被哪个进程占用及端口是否通畅(可访问)?
操作环境:windows
在进入本文前,先思考以下几个问题:
1. 如何查看端口使用情况?
2. 如何查看指定端口使用情况?
3. 如何查看端口对应的进程ID(即PID)?
4. 如何根据PID查看是哪个程序占用了端口?
5. 如何查看某个ip地址的端口是否通畅(可访问)?
Windows提供了netstat命令,能够显示当前的 TCP/IP 网络连接情况,注意:只有安装了TCP/IP协议,才能使用netstat命令。
按照下面的步骤:
1. 开始---->运行---->cmd,或者是window+R组合键,调出命令窗口
2. 查看所有端口使用情况
使用命令netstat -ano 该命令显示了端口使用情况 ip地址以及进程pid和端口状态等
命令详解:
NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-t] [interval]
-a 显示所有连接和侦听端口。
-b 显示在创建每个连接或侦听端口时涉及的可执行程序。
在某些情况下,已知可执行程序承载多个独立的
组件,这些情况下,显示创建连接或侦听端口时涉
及的组件序列。此情况下,可执行程序的名称
位于底部[]中,它调用的组件位于顶部,直至达
到 TCP/IP。注意,此选项可能很耗时,并且在您没有
足够权限时可能失败。
-e 显示以太网统计。此选项可以与 -s 选项结合使用。
-f 显示外部地址的完全限定域名(FQDN)。
-n 以数字形式显示地址和端口号。
-o 显示拥有的与每个连接关联的进程 ID。
-p proto 显示 proto 指定的协议的连接;proto 可以是下列任
何一个: TCP、UDP、TCPv6 或 UDPv6。如果与 -s 选
项一起用来显示每个协议的统计,proto 可以是下列任
何一个: IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP
或 UDPv6。
-r 显示路由表。
-s 显示每个协议的统计。默认情况下,显示
IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6
的统计;-p 选项可用于指定默认的子网。
-t 显示当前连接卸载状态。
interval 重新显示选定的统计,各个显示间暂停的间隔秒数。
按 CTRL+C 停止重新显示统计。如果省略,则 netstat
将打印当前的配置信息一次。
端口状态解释:
LISTENING
时表示处于侦听状态,就是说该端口是开放的,等待连接,但还没有被连接。就像你房子的门已经敞开的,但还没有人进来。
ESTABLISHED
的意思是建立连接。表示两台机器正在通信。
CLOSE_WAIT
对方主动关闭连接或者网络 异常导致连接中断
TIME_WAIT
我方主动调用close()断开连接,收到对方确认后状态变为TIME_WAIT
3. 如何查看指定端口9200的使用情况以及其对应进程
使用命令:netstat -ano|findstr "9200"
图中可以看到端口9200的已被占用,并且占用该端口的进程的id为2876
4. 根据步骤三种的进程ID 2876 查看是哪个程序占用的
使用命令 tasklist|findstr "2876"
发现是进程名为CLodopPrint32.exe在使用
5. 如何查看某个ip地址的端口是否通畅(可访问)?
使用telnet命令(如果该命令无法使用请在windows功能界面开启)
下面是命令详解
C:\Users\Administrator>telnet -h
telnet [-a][-e escape char][-f log file][-l user][-t term][host [port]]
-a 企图自动登录。除了用当前已登陆的用户名以外,与 -l 选项相同。
-e 跳过字符来进入 telnet 客户端提示。
-f 客户端登录的文件名
-l 指定远程系统上登录用的用户名称。
要求远程系统支持 TELNET ENVIRON 选项。
-t 指定终端类型。
支持的终端类型仅是: vt100, vt52, ansi 和 vtnt。
host 指定要连接的远程计算机的主机名或 IP 地址。
port 指定端口号或服务名。
C:\Users\Administrator>
执行命令telnet 172.0.0.1 80001,出现如下信息说明端口不通
执行命令telnet 10.10.7.83 6089出现如下信息说明端口6089是通的