TCP的三次握手和四次断开

三次握手

第1次握手:客户端向服务端发送SYN报文(用于同步请求),报文中指明了客户端的初始化序列号ISN,表示客户端想要进行连接(初始化序列号是随机生成的)

第2次握手:服务端向客户端 发送SYN+ACK报文,报文中指明了服务端的初始化序列化ISN(s);同时,将客户端的初始化序列号ISN(c) + 1 作为确认序号ack,确认应答(对第一次握手做回应),表示收到客户端的SYN报文。

第3次握手:客户端向服务端 发送 ACK报文。和前面一样,把服务端的初始化序列号ISN(s) + 1 作为确认序号ack的值,表示收到服务端的SYN报文。

四次断开

第1次断开:客户端向服务端发生FIN报文,报文会指定一个序列号u,表明想要断开连接。(停止正常的数据发送,不是停止所有数据的发送)

第2次断开:服务端收到后,会发送ACK报文,并且把客户端的序列号u +1 作为ack的值,表明收到了客户端的报文。(服务端进入CLOSE_WAIT状态)

//等待一段时间后,(保证服务端发完了数据包)

第3次挥手:服务端向客户端发送FIN报文,报文会指定一个序列号w。(服务端LAST_ACK状态)

第4次挥手:客户端收到后,发送ACK报文,作为应答。ACK标志符号对应的ack值为w + 1。

//客户端发送完ACK报文后,进入TIME_WAIT状态。等待2MSL时间后,才进入CLOSE状态。

//2MSL,MSL是“最长报文寿命”,2倍的MSL表示一个FIN报文的时间+一个ACK报文的时间(如果最后一次ACK报文丢失,服务端会重复发FIN报文,直到服务端收到最后的ACK报文为止,这段时间就是2MSL)

//所以,等待2MSL作用就是:保证最后发送的ACK报文能送达接收端。即:最后一个ACK报文可能会丢失,TIME_WAIT状态就是用来重发可能丢失的ACK报文的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值