您的位置:首页 > 教育 > 培训 > 计算机网络之快重传和快恢复以及TCP连接与释放的握手

计算机网络之快重传和快恢复以及TCP连接与释放的握手

2024/10/5 19:21:03 来源:https://blog.csdn.net/2302_77397775/article/details/139335870  浏览:    关键词:计算机网络之快重传和快恢复以及TCP连接与释放的握手

快重传和快恢复

快重传可以让发送方尽早得知丢失消息,

当发送消息M1,M2,M3,M4,M5后,假如消息M2丢失,那么按照算法会发送对M2报文前一个报文M1的重复确认(M1正常接受到,已经发送了确认),然后之后收到M4,M5,也会发送两个重复确认,这样,规定只要收到3次重复确认,立即重传下一消息M3;

54b2e8655b1847b89b46f72c7f2c00d4.png

然后执行快恢复算法,发送方调整门限值为原来拥塞窗口值的一半,然后拥塞窗口值等于门限值,开始执行慢开始算法。这叫做乘法减少MD(multiplicative decrease),之前拥塞避免阶段拥塞窗口逐个增加一个报文段大小,叫做加法增大AI(addition increase),l两者合称AIMD算法。

之前假设接收方缓存足够大,接收方窗口rwnd(render window)实际有限,又叫做通知窗口.发送方发送窗口大小一定不能超过拥塞窗口和接收窗口大小。

d7c57edb57dc42e080f5f73cf25ebc45.png

 

即 发送窗口上限值=min(rwnd,cwnd)

主动队列管理AQM

路由器按照先进先出的队列处理分组,当队列满时候,后序排在队列尾部的分组会被丢弃,叫做尾部丢弃策略。

尾部丢弃会导致数据丢失,产生丢失重传现象,这时进入慢开始阶段,由于多条连接在IP层的复用,所以会让许多TCP连接同时进入慢开始状态。叫做全局同步。

主动队列管理AQM(active queue management)是在队列长度达到某个警戒值即开始丢弃新到达分组,提醒对方放慢发送速率。

fe9606f7b2e34eb9b6d1e9ae98e5a89a.png

 

实现方法可以采用随机早期检测RED(eandom early detection)法,路由器维持最小门限和最大门限两个参数。

按算法计算出平均队列长度,

平均队列长度小于最小门限,新到达分组排队。

平均队列长度大于最大门限,新到达分组丢弃。

平均队列长度在最小门限和最大门限之间,按照概率P丢弃新到达分组。

TCP连接的建立

采用客户服务器模式,主动发起连接一方叫客户,另一方叫服务器。

该过程也叫做握手,需要客户和服务器交换三个TCP报文段。

140a11dbec7147f4aa5d58080274ee95.png

开始时候,服务器创建传输控制块TCB,准备接收客户请求,服务器进入LISTEN状态,等待客户连接。

三次握手:

(1)客户端创建传输控制块TCB,向服务器发出请求报文段,首部确认位SYN=1,同时选择一个初始序号seq=x;

SYN=1的报文段不带数据,消耗一个序号,

客户进入SYN-SENT(同步已发送)状态。

(2)服务器收到后,如果同意建立连接,发送确认,报文段中SYN同步位和ACK确认位都为1,并且选择一个初始序号y,这时进入服务器进入SYN-RCVD同步收到状态。

(3)客户端收到后,发出确认报文,ACK位为1,确认号ack=y+1;(服务器发送来的报文序列号加一)ACK报文段可以携带数据,如果不懈怠数据就不消耗序号,这样下一个数据序号seq=x+1;这样客户端进入established(已连接)状态,服务器收到确认报文后也进入(established)已连接状态

TCP的连接释放

60eb53add27b45d28d881b138c895fab.png

(1)请求释放链接的一方A先发出连接释放报文段,该报文段FIN终止位为1,序号设为seq=u,u为已传输过的数据最后一个字节➕1,然后再停止发送数据,本身进入FIN-WAIT-1状态,等待接收方确认,规定FIN报文段即使不携带数据,也要好一个序列号。

(2)另一B方收到后发出确认,确认号ack=u+1;报文段序号为发送方前面传输的最后一个数据序号加1,接着TCP连接进入半关闭状态,即发起断开A到另一方B的发送已经被关闭。但B到A方向的发送还没有被关闭。

(3)发起断开一方A收到确认后,进入终止等待2状态(FIN-WAIT-2),等待另一方B释放连接。

(4)另一方如果不再发送数据,发出连接释放报文,将报文FIN终止位设为1,序号为问,(可能又崽半关闭期间发送了数据),而且要重复上次发送过的确认报文确认号ack=u+1;这时自身进入last-ack(最后确认状态),等待对方确认。

(5)A收到后,发出确认报文,确认位ACK为1,确认号ack=w+1,自身序号seq=u+1(前面的FIN报文消耗品个序号,进入时间等待(time-wait)阶段,经过时间等待计时器设置时间的2MSL后,A进入CLOSED状态,MSL叫做最长报文寿命,

b8bb6c43ccf8405ba19be43d6b4ab9ce.png

 

设置时间2MSL原因:

(1)超时重传:丢失最后发出的确认报文段后,在2MSL时间内重传,

(2)本持续时间内所有报文都吃网络中消失。

TCP还设置了保活计时器,时间为2小时,如果建立TCP连接后出现了故障,无法响应,由于设置在每次收到消息后等待2H,之后如果还没有收到消息,发送探测报文段,以后每隔75秒发送一次,如果10次没有响应就关闭连接。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com