套接字中记录了用于控制通信操作的各种控制信息,协议栈则需要根据这些信息判断下一步的行动,这就是套接字的作用。在Windows中可以用netstat命令显示套接字内容。
netstat [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-x] [-t] [interval]
本地地址:运行netesta命令的计算机本身(本地端)的IP地址和端口号。安装了多块网卡,会显示出多个IP地址。0.0.0.0表示不绑定IP地址。
外部地址:通信对象(远程端)的IP地址和端口号。0.0.0.0表示还没开始通信,没有绑定IP地址和端口号。此外,UDP协议中的套接字不绑定对方的地址和端口,因此显示*:*
-a 显示所有socket,包括正在监听的。
-n 以数字形式显示地址和端口号。
-t 显示当前连接卸载状态。
-v 显示正在进行的工作。
-p proto 显示proto指定的协议的连接。
-b 显示在创建每个连接或侦听端口时涉及的可执行程序。
-e 显示以太网统计。此选项可以与 -s 选项结合使用。
-f 显示外部地址的完全限定域名(FQDN)。
-o 显示拥有的与每个连接关联的进程PID。
-q 显示所有连接、侦听端口和绑定的非侦听 TCP 端口。
-s 显示每个协议的统计。
-x 显示 NetworkDirect 连接、侦听器和共享端点。
-y 显示所有连接的 TCP 连接模板。无法与其他选项结合使用。
interval 重新显示选定的统计,各个显示间暂停的 间隔秒数。按 CTRL+C 停止重新显示统计。如果省略,则 netstat 将打印当前的配置信息一次。
常见状态:
LISTEN
侦听来自远方的TCP端口的连接请求
SYN-SENT
在发送连接请求后等待匹配的连接请求
SYN-RECEIVED
在收到和发送一个连接请求后等待对方对连接请求的确认
ESTABLISHED
完成连接并正在进行数据通信的状态
FIN-WAIT-1
FIN-WAIT-2
从远程TCP等待连接中断请求
CLOSE-WAIT
等待从本地用户发来的连接中断请求
CLOSING
等待远程TCP对连接中断的确认
LAST-ACK
等待原来的发向远程TCP的连接中断请求的确认
TIME-WAIT
等待足够的时间以确保远程TCP接收到连接中断请求的确认
CLOSED
没有任何连接状态