Windows上查看本机程序网络通信情况
Windows 命令: netstat -ano
netstat 是用于显示套接字内容的命令
什么是套接字
应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议提供了称为套接字(Socket)的接口,区分不同应用程序进程间的网络通信和连接。
a 显示所有套接字,不仅是正在通信的、还包括尚未开始通信等状态
n 显示IP地址和端口号
o 显示使用该套接字的程序PID
PID — 进程标识符
① 可从任务管理器 –》详细信息 找到该PID对应的应用程序信息
② cmd中输入命令 tasklist | findstr pid 也可获得对应应用程序信息
外部地址(Foreign Address):通信对象(远程端)的IP地址和端口号
0.0.0.0 表示还没有开始通信,没有绑定IP地址和端口号
UDP协议中的套接字不绑定对方的地址和端口,因此会显示 *.*
本地地址 (Local Address):
显示本地IP和端口号,安装了多块网卡,因此会显示出多个IP地址。0.0.0.0表示不绑定IP地址。
通信状态(state):
LISTENING :等待对方连接状态
ESTABLISHED :完成连接并正在进行数据通信的状态表
SYN_SENT: 客户端发起连接,发送SYN给服务器端。如果服务器端不能连接,则直接进入CLOSED状态
SYN_RCVD: 服务器端接受客户端的SYN请求,服务器端由LISTEN状态进入SYN_RCVD状态。同时服务端回应一个ACK,发送一个SYN给客户端;客户端在发起SYN的同时接收到服务器端的SYN,客户端就会由SYN_SENT到SYN_RCVD状态。
FIN_WAIT_1:主动关闭的一方。具体动作是发送FIN给对方。
FIN_WAIT_2:主动关闭的一方,接收到对方的FIN-ACK,进入此状态。
CLOSE_WAIT:接收到FIN以后,被动关闭的一方进入此状态。具体动作是接收的FIN,同时发送ACK。
LAST_ACK:被动关闭的一方,发起关闭请求。具体动作是发送FIN给对方,同时接收到ACK时进入CLOSED状态。
CLOSING:两边同时发起关闭请求时,会有FIN_WAIT_1进入此状态。具体动作是接收到FIN请求,同时响应一个ACK。
TIME_WAIT状态由3个状态转化:
- 由FIN_WAIT_2进入此状态:在双方不同时发起FIN的情况下,主动关闭的一方在完成自身发起的关闭请求后,接收到被动关闭一方的FIN后进入的状态。
- 由CLOSING状态进入:双方同时发起关闭,都做了发起FIN的请求,同时接收到了FIN并做了ACK的情况下,由CLOSING状态进入。
- 由FIN_WAIT_1状态进入:同时接收到FIN、ACK,与2的区别在于本身发起的FIN回应的ACK先于对方的FIN请求到达。这种情况概率最小。
T_2