术语解释:
syn
: 同步标识;fin
: 结束标识;ack
: 确认标识;psh
: 有data传输;rst
: 连接重置;seq
: 数据包;
三次握手
三次握手示意图:
三次握手文字描述:
- 客户端发送
SYN=1
,SEQ=number(随机数字)
报文给服务器端,客户端进入SYN_SEND
状态; - 服务器收到
SYN
报文,SYN=1
知道客户端要建立连接,响应ACK NUMBER(客户端的SEQ+1)
,SYN=1
,ACK=1
,SEQ=随机数字
,服务端进入SYN_RECV
状态; - 客户端收到
SYN
,检测ACK NUMBER
和ACK=1
是否正确,如果全部正确,则向服务端发送ACK NUMBER=服务端SEQ+1
和ACK=1
,服务器收到后检查是否正确,正确后建立连接,连接状态进入ESTABLISHED
;
四次挥手
四次挥手示意图
四次挥手文字描述:
- 主机A(主动方,
Active Close
)向主机B(被动方)发送FIN(结束标识)
表示数据发送完成,AC=z
,SEQ=x
,主机A进入FIN_WAIT1
状态,这个状态非常短暂,之后等待对方确认ACK
过程,自己进入FIN_WAIT2
状态,如果超时没有收到ACK
直接进入CLOSED
状态; - 主机B收到
FIN
后,返回主机A内容ACK=x+1
,SEQ=z
,主机B进入CLOSE_WAIT
状态; - 主机B关闭连接后发送给主机A内容
ACK=x
,SEQ=y
,主机A进入到TIME_WAIT
状态,处于这个状态后等待2个报文最大存活周期后进入CLOSED
状态,此时主机B进入LAST_ACK
状态; - 主机A收到后返回
ACK=y+1
,SEQ=x
;