tcp/ip的状态及状态转移分析

状态描述下一状态事件条件
LISTEN等待其他链接
SYN-SENT某端发送了SYN消息,请求连接后处于此状态ESTABLISHED收到对端发送的ACK消息
SYN-RECEIVED某段收到另一端发送的SYN消息,回复ACK后,处于此状态ESTABLISHED收到对端发送的ACK消息
ESTABLISHED已连接状态FIN-WAIT-1 或 CLOSE-WAIT主动发送CLOSE消息或收到对端发送的CLOSE消息
FIN-WAIT-1某端主动发送CLOSE消息FIN-WAIT-2收到对端的ACK消息
FIN-WAIT-2某端在FIN-WAIT-1状态时收到ACK消息TIME-WAIT收到对端发送的CLOSE消息
TIME-WAIT某端在FIN-WAIT-2时收到对端发送的CLOSE消息CLOSED2msl时间到达
CLOSE-WAIT某端收到对端的CLOSE消息,给对方发送ACK消息之后处于此状态LAST-ACK开发者调用Close函数主动关闭,向对端发送CLOSE消息
LAST-ACK向对端发送CLOSE消息后处于此状态CLOSED收到处于TIME-WAIT状态的端的ACK回复
CLOSED关闭,默认不显示

在实际状态中,最常见的状态应该为CLOSED(默认不显示),LISTEN,ESTABLISHED,TIME-WAIT.其余的状态理论上来说存在的时间都会非常短。如果有其他状态长期存在,那么程序可能会有异常存在。以下是异常状态分析:

状态原因
SYN-SENT某端连接了无响应的ip,可能是ip无效,也可能是该ip设备不在线,超时后释放
SYN-RECEIVED理论来说对端发起了连接,但是本端回复确认后,对方又不返回了。这种情况不好测试。可以在网络非常卡的情况下,某端连接请求发出后,立马拔掉网线,然后看对端状态……
FIN-WAIT-1对端拔掉网线,本段在处于连接状态时发起关闭请求。否则理论来说,几乎不会出现。
FIN-WAIT-2对端的程序忙于处理其他的,没有来记得CLose掉对应的Socket
CLOSE-WAIT对端发起了关闭请求,本端一直没有关闭,可能是程序忙于读写,也可能是程序bug忘记CLose掉了。
LAST-ACK除了拔网线和操作系统bug,想不到怎么出现……
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值