【计算机网络自顶向下方法】TCP可靠数据传输(超时间隔、快速重传、回退N步or选择重传)

【计算机网络自顶向下方法】TCP可靠数据传输(超时间隔、快速重传、回退N步or选择重传),第1张

【计算机网络自顶向下方法】TCP可靠数据传输(超时间隔、快速重传、回退N步or选择重传) 可靠数据传输

        因特网的网络层服务(IP服务)是不可靠。IP不保证数据报的交付,不保证数据报的按序交付,也不保证数据报中数据的完整性。对于IP服务,数据报能够溢出路由器缓存而永远不能到达目的地,数据报也可能是乱序到达,而且数据报中的比特可能损坏(由0变为1或者相反)。由于运输层报文段是被IP数据报携带着在网络中传输的,所以运输层的报文段也会遇到这些问题。
        TCP在IP不可靠的尽力而为服务之上创建了一种可靠数据传输服务(reliable data transfer service)。TCP的可靠数据传输服务确保一个进程从其他接收缓存中读取的数据流是无损坏、无间隙、非冗余和按序的数据流;即该字节流与连接的另一方端系统发送的字节流完全相同。

超时间隔加倍

        每当超时时间发生时,TCP重传具有最小序号的还未被确认的报文段,只是每次TCP重传都会将下一次的超时间隔设置为先前的两倍。因此,超时间隔在每次重传后会成指数型增长。定时器过期很可能是由网络拥塞引起的,即太多的分组到达源与目的地之间路径上的一台(或多台)路由器的队列中,造成分组丢失或者长时间的排队延时。在拥塞的时候,如果源持续重传分组,会使拥塞更加严重,因此,TCP使用更文雅的方式,每个发送方的重传都是经过越来越长的时间间隔后进行的。

 

快速重传

        超时触发重传存在的问题之一是超时周期可能相对较长。当一个报文段丢失时,这种长超时周期迫使发送方延迟重传丢失的分组,因而增加了端到端时延。幸运的是,发送方通常可在超时事件发生之前通过注意所谓的冗余ACK来较好地检测到丢包情况。冗余ACK(dumplicate ACK)就是再次确认某个报文段的ACK。

        因为发送方经常一个接一个地发送大量的报文段,如果一个报文段丢失,就可能引起许多一个接一个的冗余ACK。如果TCP发送方接收到相同数据的3个冗余ACK,它就把这个当作一种指示,说明根在这个已被确认过3次的报文段之后的报文段已丢失。一旦收到3个冗余ACK,TCP就执行快速重传,即在该报文段的定时器过期之前重传丢失的报文段。

回退N步or选择重传

       TCP确认是累积式的,正确接收但失序的报文段是不会被接收方逐个确认的。因此,TCP发送方仅需维持已经发送过但未被确认的字节的最小序号(Sendbase)和下一个要发送的字节的序号(NextSeqNum)。但是许多TCP实现会将正确接收但失序的报文段缓存起来。当发送方发送的一组报文段1,2,3,...,N,并且所有的报文段都按序无差错地达到接收方时会发生的情况。

        进一步假设对分组n     TCP将重传至多一个报文段,即报文段n(GNB协议会重传n,n+1,...,N)。因此,如果对报文段n+1的确认报文在报文段n超时之前到达,TCP甚至不回重传报文段n。
      TCP引入选择确认(selective acknowledgment)它允许TCP接收方有选择地确认失序报文段,而不是累积地确认最后一个正确接收的有序报文段。
    
    

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5707046.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存