【TCP连接的状态】
linux查看tcp的状态命令:
1)、netstat -nat 查看TCP各个状态的数量
2)、lsof -i:port 可以检测到打开套接字的状况
3)、 sar -n SOCK 查看tcp创建的连接数
4)、tcpdump -iany tcp port 9000 对tcp端口为9000的进行抓包
查看占用端口的进程PID
> netstat -aon|findstr 5037
TCP 127.0.0.1:5037 0.0.0.0:0 LISTENING 15448
通过PID查看所有进程
> tasklist /fi "PID eq 15448"
映像名称 PID 会话名 会话# 内存使用
========================= ======== ================ =========== ============
adb.exe 15448 Console 1 5,728 K
杀死占用端口的进程
> taskkill /pid 15448 /f
成功: 已终止 PID 为 15448 的进程。
LISTENING:侦听来自远方的TCP端口的连接请求.
首先服务端需要打开一个socket进行监听,状态为LISTEN。
SYN-SENT:客户端SYN_SENT状态:
当请求连接时客户端首先要发送同步信号给要访问的机器,此时状态为SYN_SENT,如果连接成功了就变为ESTABLISHED,正常情况下SYN_SENT状态非常短暂。
SYN-RECEIVED:服务器端状态SYN_RCVD
当服务器收到客户端发送的同步信号时,将标志位ACK和SYN置1发送给客户端,此时服务器端处于SYN_RCVD状态,如果连接成功了就变为ESTABLISHED,正常情况下SYN_RCVD状态非常短暂。
如果发现有很多SYN_RCVD状态,那你的机器有可能被SYN Flood的DoS(拒绝服务攻击)攻击了。
ESTABLISHED:代表一个打开的连接。
ESTABLISHED状态是表示两台机器正在传输数据,观察这个状态最主要的就是看哪个程序正在处于ESTABLISHED状态。
FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2:从远程TCP等待连接中断请求
CLOSE-WAIT:等待从本地用户发来的连接中断请求
CLOSING:等待远程TCP对连接中断的确认
LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认
TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认
CLOSED:没有任何连接状态