TCP三次握手四次挥手

随着经历增多,现在对于TCP协议有了比较形象的认识,在学习游双大佬的书时遇到了对方先断开的情形,引发了我对于tcp不同断开场景的求知欲。

备用知识点

标识位说明

URG:为1时,表示紧急指针有效
ACK:确认标识,连接建立成功后,总为1。为1时确认号有效
PSH:接收方应尽快把这个报文交给应用层
RST:复位标识,重建连接
SYN:建立新连接时,该位为0
FIN:关闭连接标识

初始化序列号ISN(Initial Sequence Number)

序列号是保证TCP通信可靠性的关键基础,TCP通过序列号来判断报文是否丢失、是否需要重传。

每一个新建立的TCP连接都会分配一个初始序列号ISN,为了防止因为延迟、重传等扰乱三次握手,为了TCP协议栈的稳定性,ISN不能随便选取。一般推荐的ISN生成基本规则:

1)递增,直到超过最大值,再从较小的值开始。ISN如果不是递增的,就可能因为网络延迟导致ISN重复,引起后续通信错乱,连接失败。

2)随机,ISN必须是不可预测的随机数,如果ISN可以预测,将会引起很多安全问题。

教科书场景

实验场景:C发起连接,连接成功后C断开连接
在这里插入图片描述

建立连接的过程
第1个报文段C ->S 同步报文段(SYN),也就是发起连接请求,同时带上自己的ISN值为4273807524的序号
第2个报文段S->C 同步报文段(SYN),同时它发送自己的ISN值为4940891641的序号,并对第1个同步报文段进行确认。确认值是4273807525,即第1个同步报文段的序号值加1。(序号值是标识TCP数据流中的每一字节的。但同步报文段比较特殊,即使它没有携带任何应用程序数据,它也要占用一个序号值。
第3个报文段C->S是对第2个同步报文段的确认。至此TCP连接就建立起来了。
关闭连接的过程
第4个报文段C->S这个报文段包含FIN标志,因此它是一个结束报文段,即C要求关闭连接。结束报文段和同步报文段一样,也要占用一个序号值。
第5个报文段S用tcp报文段5来确认结束报文段4
第6个报文段紧接着S发送自己的结束报文段6
第7个报文段C则用报文段7给予确认
实际上,仅用于确认目的的确认报文段5是可以省略的,因为结束报文段6也携带了该确认信息。确认报文段5是否出现在断开连接的过程中,取决于TCP的延迟确认特性。

TCP连接的建立到断开过程中客户端与服务器的状态变化

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值