TCP协议的11种状态集
### tcp协议11种状态集转换“三次握手5种状态,四次挥手6种状态”
服务端:closed—listen—syn_rcvd—established—close_wait—last_ack—close
客户端:closed—syn_send—established—fin_wait1—fin_wait2—time_wait—close
1. tcp三次握手状态集转换:
服务端:
(1)closed—listen(开启相应服务),只有在listen状态服务端才可能建立请求
(注意:closed—listen状态,实际是建立了一个socket 条目信息)
netstat -an | grep -i es 查看socket 条目信息
(2)服务端listen收到客户端的syn请求并响应syn和ack,从listen—syn_rcvd状态(第二次握手)
客户端:
(1)客户端发送syn信息到服务端,closed—syn_send(第一次握手)
(2)客户端在syn_send状态收到syn和ack字段,并回复ack确认(第三次握手)
如图:
2. tcp四次挥手状态集转换:
客户端:
(1)客户端在established状态发送fin字段给服务端,established—fin_wait1(四次挥手第一次)
(2)客户端在fin_wait1接受来自服务端的ack信息
(3)客户端在fin_wait2状态接收服务端fin,相应ack,fin_wait2—time_wait状态
(4)客户端在time_wait等待90秒后,最终回归close状态
服务端:
(1)服务端在established状态收到来自客户端的fin字段,established—close_wait,
(2)服务端在close_wait发送ack确认字段(四次挥手第二次挥手)
(3)服务端在close_wait发送fin断开字段给客户端,close_wait—last_ack(四次挥手第三次)
(4)服务端在last_ack状态收到客户端ack信息,最终回归close原始状态
如此,三次握手和四次挥手的状态集就形成啦!最后给大家安利张图!
原文地址:http://blog.51cto.com/13520779/2062264