tcp client发送连接请求报文,报文首部同步标记位 SYN=1 同时随机序列号 seq=x,此时 tcp client 进入 SYNC-SENT
状态的
tcp server 若同意连接则确认报文为 ACK=1,SYN=1,ASK=x+1,seq=y
返回给客户端,并进入 SYNC_RCVD
状态
tcp client 收到回复并确认 ACK 是否为1,seq 是否为 x+1,并返回报文 ACK=1,ASK=y+1
,此时双方进入 ESTABLISHED
状态
主动方发送报文FIN=1,seq=last+1
并进入FIN_WAIT_1
,此时报文不能携带任何数据
被动方收到连接释放报文,并发送确认报文 ACK=1,ack=u+1,seq=v
,并进入 CLOSE_WAIT
状态,但此时如果缓冲区存在未发送数据,那么需要继续发送(这也是 CLOSE_WAIT 持续的时长),主动方收到此条报文后进入 FIN_WAIT_2
,因为还需要处理未发送数据
上一步执行完毕,被动方发送 FIN=1,ack=w+1,seq=u+1
并进入 LAST-ACK
状态,而主动方收到此条报文后进入 TIME_WAIT
(2msl maximum segment life),之后才会进入 CLOSED
在主动方进入 CLOSED
之前,需要发送报文确认退出
1MSL保证主动方最后的 ACK 能到达对端,1MSL 确保 ACK 重传
三次握手,四次挥手确保连接和断开的可靠
记录了哪些数据被接受,哪些未接收,序列号保证了消息的顺序性
ACK应答,超时重传,失序重传,丢弃重复数据,流量控制,拥塞控制
Round-Trip Time 消息往返时间 Retransmission Timeout 超时重传