TCP三次握手和四次断开解释。

本文详细阐述了TCP协议中的三次握手过程,确保连接建立的可靠性,以及四次断开机制,保证数据完整性和连接的稳定关闭。
摘要由CSDN通过智能技术生成

三次握手和四次断开都是为了确保网络连接的可靠性和稳定性。

客户端(A)和服务端(B)三次握手:

  第一次握手是在A向B传输数据之前由A向B发送一个请求建立连接的报文--SYN(SYN=1),并选择一个序列号(seq)(假设seq=n)一并发送给B。

  第二次握手是当B收到A的请求后向A回复一个确认收到的报文--ACK,此时ACK=1。并且一同发送SYN=1和确认号n+1以及自己的序列号seq(假设seq=m)。

此时我们能确定B可以收到A的请求,也可以向A发送请求。但是只知道A可以向B发送请求,不知道A能否收到B的请求,所以还需要第三次握手,来确认A可以收到B的请求。

  第三次握手是当A收到B的确认包(ACK)和请求包(SYN)后,向B发送确认包ACK=1,确认号为m+1,序列号为n+1。

当B收到A的确认包后,A与B建立连接,可以开始传输数据。

客户端(A)和服务端(B)四次断开:

  第一次断开是当A向B完成数据的传输后,A会向B发送请求释放的报文FIN=1,并附有序列号seq(假设seq=x)。此时A进入“等待状态1”等待B的确认。

  第二次断开是当B收到A的释放报文后,会向A发送ACK确认报文,确认号为x+1。

当A收到B的确认后,进入“等待状态2”此状态TCP为半关闭状态,B可以向A发送数据,但是A不能向B发送数据。此状态是为了将B要给未发送完的数据全部发送给A。

  第三次断开是在B将要发送的数据全部发送给A后,在向A发送一个请求释放报文FIN=1,并附带序列号seq(假设seq=y)。

  第四次断开是A在收到B的请求释放报文后,向B发送确认报文ACK=1,确认号为y+1。并进入“时间等待”等待2MSL(此时间为报文存活的最大时间)。当B收到A的确认报文后,B释放连接。当B释放连接后,A释放连接。

等待2MSL是因为,A所发出的确认报文,有可能因为网络出现问题或者其他原因而丢包。若2MSL结束后B未能断开连接,则A会继续向B发送确认报文,A等待2MSL就是为了处理这种情况的发生。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值