Netstat
状态分类
用
netstat -an
命令查看!再
stat
下面有一些英文,简单说一下这些英文具体都代表什么:
LISTEN
:
(Listening for a connection.)
侦听来自远方的
TCP
端口的连接请求
SYN-SENT
:
(Active; sent SYN. Waiting for a matching connection request after having sent a connection request.)
再发送连接请求后等待匹配的连接请求
SYN-RECEIVED
:
(Sent and received SYN. Waiting for a confirming connection request acknowledgment after having both received and sent connection requests.)
再收到和发送一个连接请求后等待对方对连接请求的确认
ESTABLISHED
:
(Connection established.)
代表一个打开的连接
FIN-WAIT-1
:
(Closed; sent FIN.)
等待远程
TCP
连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2
:
(Closed; FIN is acknowledged; awaiting FIN.)
从远程
TCP
等待连接中断请求
CLOSE-WAIT
:
(Received FIN; waiting to receive CLOSE.)
等待从本地用户发来的连接中断请求
CLOSING
:
(Closed; exchanged FIN; waiting for FIN.)
等待远程
TCP
对连接中断的确认
LAST-ACK
:
(Received FIN and CLOSE; waiting for FIN ACK.)
等待原来的发向远程
TCP
的连接中断请求的确认
TIME-WAIT
:
(In 2 MSL (twice the maximum segment length) quiet wait after close. )
等待足够的时间以确保远程
TCP
接收到连接中断请求的确认
CLOSED
:
(Connection is closed.)
没有任何连接状态
TCP
连接建立
首先要说明的是要明确
TCP
连接建立的过程需要
3
次握手,下面举例说明各种状态存在的时刻:
1.
首先在服务器
A
上开启
FTP
服务,开始侦听来自远端
TCP
端口的连接请求,这个时候查看服务器
A
状态为:
LISTENING
2.
在客户端
B
上向
A
发送
FTP
连接请求,这个时候数据包同步位置
1
,这是
TCP
三次握手的第一步。在发送后没收到确认时,在客户端
B
上其状态为:
SYN-SENT
。此时客户端
B
启动连接定时器。如果在
75
秒内没有收到应答,则放弃连接建立。
3.
在服务器
A
上收到从
B
上发送的
SYN
同步包后,确认,然后再向
B
发送
SYN
的同步包,此数据包同时将
TCP
标记中的同步位和确认位置
1
,它既对第一步中的客户端同步数据包进行确认,表示愿意与客户端同步,同时再对客户端主机进行同步请求,这是
TCP
连接的第一步。这个时候在服务器
A
上,状态为:
SYN-RECEIVED
。此时服务器
A
启动连接定时器。如果在
75
秒内没有收到应答,则放弃连接建立。
4.
在客户端
B
上接收到从
A
上发过来的确认同步包后进行确认,此数据包中将
TCP
标记中的确认位置
1
,表示这是一个确认数据包,此时在客户端
B
状态转换为:
ESTABLISHED
5.
服务器
A
接收到从
B
发过来的确认包后,状态转换为:
ESTABLISHED
此时
TCP
连接正式建立。
TCP
连接关闭
6.
应用程序在在连接不需要的时候,通过客户端
B
向服务器
A
发送的终止信息的
FIN
包后,客户端
B
处于
FIN-WAIT-1
状态。
7.
从服务器
A
接收到客户端
B
发送的终止数据包,它告诉客户端
B
已成功接收客户端的上数据包,此时等待应用程序来关闭连接,此时服务器
A
进入
CLOSE_WAIT
状态。
8.
客户端
B
接收到带有确认位的数据包后,对此进行确认,同意关闭
TCP
连接此时客户端
B
转移到
FIN-WAIT-2
状态。当连接从
FIN-WAIT-1
状态转移到
FIN-WAIT-2
状态时,将一个
FIN-WAIT-2
定时器设置为
10
分钟。
9.
服务器
A
在应用程序同意终止连接后,向客户端
B
发送终止
FIN
包,此时服务器状态转为
LAST-ACT
。
10.
客户端
B
在接收到从服务器
A
发送的终止包后,同意终止连接,然后再向服务器端发送确认信息,此时客户端
B
转向
TIME-WAIT
状态。当连接进入
TIME-WAIT
状态时,该定时器被激活。
11.
服务端
A
在收到客户端
B
的确认后,关闭连接,服务器
A
状态转向
CLOSED
。
12.
客户端
B
在
TIME-WAIT
定时器超时时,与该连接相关的内核数据块被删除,连接终止,转向
CLOSED
状态。
此时
TCP
连接正式关闭。
备注
1.
一个由客户端发起的关闭
TCP
连接的示意图:
2.
连接终止请求对与建立连接的双方是可以同时发出的,在发出终止请求后,双方都进入
FIN-WAIT-1
状态,随着定时器的超时,双方都进入
CLOSING
状态,在这个定时器再次超时后,均转入
TIME-WAIT
状态,在
TIME-WAIT
的定时器超时后,双方均放弃这次连接,连接转为
CLOSE
状态。如图示:
服务器
socket
状态转换