端口状态 LISTENING ESTABLISHED TIME_WAIT及CLOSE_WAIT

 

CLOSED

没有使用这个套接字[netstat 无法显示closed状态]
LISTEN套接字正在监听连接[调用listen后]
SYN_SENT套接字正在试图主动建立连接[发送SYN后还没有收到ACK]
SYN_RECEIVED正在处于连接的初始同步状态[收到对方的SYN,但还没收到自己发过去的SYN的ACK]
ESTABLISHED连接已建立
CLOSE_WAIT  (服务器)远程套接字已经关闭:正在等待关闭这个套接字[被动关闭的一方收到FIN]

FIN_WAIT_1

(客户端)

套接字已关闭,正在关闭连接[发送FIN,没有收到ACK也没有收到FIN]
CLOSING套接字已关闭,远程套接字正在关闭,暂时挂起关闭确认[在FIN_WAIT_1状态下收到被动方的FIN]

LAST_ACK

(服务器)

远程套接字已关闭,正在等待本地套接字的关闭确认[被动方在CLOSE_WAIT状态下发送FIN]

FIN_WAIT_2

(客户端)

套接字已关闭,正在等待远程套接字关闭[在FIN_WAIT_1状态下收到发过去FIN对应的ACK]

TIME_WAIT

(客户端)

这个套接字已经关闭,正在等待远程套接字的关闭传送[FIN、ACK、FIN、ACK都完毕,这是主动方的最后一个状态,在过了2MSL时间后变为CLOSED状态]                                                                                               

 

 

 

 

Client:

TCP 的Client发出FIN结束报文以后,client 进入TIME_WAIT_1状态,从而等待server的ACK , 收到ACK以后表明从client到server的连接断开了,此时client进入TIME_WAIT_2状态。

如果client收server传来的FIN以后,client 会发送一个ACK,然后进入TIME_WAIT状态。client需要在TIME_WAIT保持2MSL的时间才会进入CLOSED状态。
 

Server:

当server 收到client发过来的断开连接的FIN包以后,会进入CLOSE_WAIT状态,并向上层应用通告这个消息,同时返回ACK ,至此client到server的连接断开了。

上层应用处理完相关的信息以后会向client发送FIN, 进入LAST_ACK状态,等待client返回ACK ,如果收到ACK,至此server到client的连接断开,server进入CLOSED状态。
 

所以TIME_WAIT 表示主动关闭,是主动关闭连接时形成的,CLOSE_WAIT 表示被动关闭 ,是被动关闭连接是形成的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值