在 Windows 中可以用 netstat 命令显示套接字内容,如下图所示,图中的第一行相当于一个套接字,当创建套接字时,就会在这里增加一行新的控制信息,赋予“即将开始通信”的状态,并进行通信的准备工作,例如,分配用于临时存放收发数据的缓冲区空间。
既然有图,我们就来讲讲图上这些到底是什么意思。比如第14行,它表示 PID(Process ID:进程标识符的缩写,是操作系统为了标识程序而分配的编号,使用任务管理器可以查询所对应的程序名称)为1444的程序正在使用 IP 地址为 192.168.31.142 的网卡与 IP 地址为 23.33.16.8 的对象进行通信。注意:如果本机使用某一个端口,对方使用 139 端口,而 139 端口是 Windows 文件服务器使用的端口,因此我们就能够看出这个套接字是连接到一台文件服务器的。我们再来看第1行,这一行表示 PID 为 10648 的程序正在 22 端口等待另一方的连接,其中本地 IP 地址和远程 IP 地址都是 0.0.0.0,这就表示通信还没有开始,IP 地址不确定。(对于处于等待连接状态的套接字,也可以绑定 IP 地址,如果绑定了 IP 地址,那么除绑定的 IP 地址之外,对其他地址进行连接操作都会出错。当服务器上安装有多块网卡时,可以用这种方式 来限制只能连接到特定的网卡。)
说明:
netstat 是用于显示套接字内容的命令,-ano 选项表示以下的意思:
a:不仅显示正在通信的套接字,还显示包括尚未开始通信等状态的所有套接字
n:显示 IP 地址和端口号
o:显示使用该套接字的程序 PID第一列表示:
协议类型:使用 TCP/IP 协议通信的情况下, 会显示 TCP 或者 UDP
第二列表示:
本地地址:Local Address,运行 netstat 命令的计算机本身(本地端)的 IP 地址和端口号。本例中的计算机上只安装了一块网卡,所以只 会显示出一个 IP 地址,如果安装了多块网卡, 则会显示出多个 IP 地址。 0.0.0.0 表示不绑定 IP 地址
第三列表示:
通信对象(远程端)的 IP 地址和端口号。
0.0.0.0 表示还没有开始通信,没有绑定 IP 地址和端口号。此外,UDP 协议中的套接字不绑定对方的地址和端口,因此这里显示*.*第四列表示:
状态:State,表示通信状态。
LISTENING:等待对方连接的状态
ESTABLISHED:完成连接并正在进行数据通信的 状态
CLOSE WAIT:表示被动关闭
SYN_SENT:是三次握手的过程,表示你的机器发 起了连接,对方没有响应
TIME WAIT:等待足够的时间以确保远程 TCP 接收到连接中断请求的确认以上只是列出了几个常见的状态,还有其他哦
第五列表示:
使用该套接字的程序 PID(进程标识符)。可以 使用任务管理器来查询 PID 对应的程序名称, 不过任务管理器默认不显示 PID 的,需要在 "查看"一> "选择歹中设置显示 PID
完结!