TCP IP详解卷1:协议(第14章TCP超时与重传)

14.1 引言

1.T C P 协议提供可靠数据传输服务。为保证数据传输的正确性, T C P 重传其认为已丢失的包o T C P 根据接收端返回至发送端的一系列确认信息来判断是否出现丢包。当数据段或确认信息丢失, T C P 启动重传操作, 重传尚未确认的数据。

2.T C P 拥有两套独立机制来完成重传, 一是基于时间, 二是基于确认信息的构成。第二种方法通常比第一种更高效。(不需要等待时间)

3.两者机制的比较:T C P 在发送数据时会设置一个计时器, 若至计时器超时仍未收到数据确认信息, 则会引发相应的超时或基于计时器的重传操作, 计时器超时称为重传超时( R T O ) 。另一种方式的重传称为快速重传, 通常发生在没有延时的情况下。若T C P 累积确认无法返回新的A C K , 或者当A C K 包含的选择确认信息( S A C K ) 表明出现失序报文段时, 快速重传会推断出现丢丢包。

14.3 设置重传超时

1.重传超时跟随网络资源而进行改变,T C P 先于R T T 开始重传, 可能会在网络中引人不必要的重复数据。反之, 若延迟至远大于R T T 的间隔发送重传数据, 整体网络利用率( 及单个连接吞吐量) 会随之下降。

2.TCP在接受到数据后返回,记录该时间作为一个RTT样本,基于样本估计设置RTO。

14.3.1 经典方法

1.S R T T ← α( S R T T ) 十( 1 一α) R T T s这里, S R T T 是基于现存值和新的样本值R T T s 得到更新结果的。常量α为平滑因子, 推荐值为0 . 8 - 0 . 9 0 每当得到新的样本值, S R T T 就会做出相应的更新。从α的设定值可以看到, 新的估计值有8 0 % 一9 0 % 来自现存值, 1 0 % ~ 2 0 % 来自新测量值。缺点:在TCP网络RTT波动较大的时候,无法得到预期效果。

14.3.2.4 带时间戳选项的RTT测量

1.时间戳值( T S V ) 携带于初始S Y N 的T S O P T 中, 并在S Y N + A C K 的T S O P T 的T S E R部分返回, 以此设定s r t t 、 r t t V a r 与R T O 的初始值。

2.T C P 发送端在其发送的每个报文段的T S O P T 的T S V 部分携带一个3 2 比特的时间戳值。该值包含数据发送时刻的T C P 时钟值。

3.接收端记录接受到的SYN值,并在返回的ACK中带有记录时间的序列号。

4.当一个新报文到达时,其序列号与LastACK的值吻合(上一个报文时间),则将该TSV存入TsRecent

5.接收端发送的任何一个ACK都包含TSOPT。 s R e c e n t 变量包含的时间戳值被写人其T S E R 部分。

6.发送端接受到ACK后,将当前TCP时钟减去TSER。其中的差为新的RTT样本估计值

14.4 基于计时器的重传

1.一旦T C P 发送端得到了基于时间变化的R T T 测量值, 就能据此设置R T O , 发送报文段时应确保重传计时器设置合理。在设定计时器前, 需记录被计时的报文段序列号, 若及时收到了该报文段的A C R , 那么计时器被取消。之后发送端发送一个新的数据包时, 需设定一个新的计时器, 并记录新的序列号。因此每一个T C P 连接的发送端不断地设定和取消一个重传计时器; 如果没有数据丢失, 则不会出现计时器超时。

2.在连接设定的RTO内,若TCP没有收到计时报文ACK,将会触发超时重传。通过降低传输速率来处理超时重传。

3.

第一种方法是基于拥塞控制机制减小发送窗口大小

14.5 快速重传

1.该机制基于接受的反馈信息引发重传,与计时器重传相比更能有效及时修复丢包情况。

2.TCP了解到失序报文时,需快速建立确认信息(丢失报文的ACK),并且失序情况表明在后续数据到达前出现了丢段

3.采用SACK块,可以获知多个空缺。特殊情况:接收端收到当前期盼序号的后续分组时,可能是由于期盼序号延迟到达。

4.TC P 发送端在观测到至少d u p t h r e s h 个重复A C K 后, 即重传可能丢失的数据分组, 而不必等到重传计时器超时。当然也可以同时发送新的数据。

14.6 带选择确认的快速重传

1.T C P 接收端可提供S A C K 功能, 通过T C P 头部的累积A C K 号字段来描述其接收到的数据。

2.用SACK选项可在一个R T T 时间填补3 个空缺。包含一个或多个SACK块的A C K 有时也简单称为SACK。

3.SACK发送端记录着接收到的累计ACK信息当S A C K 发送端执行重传时, 通常是由于其收到了S A C K 或重复A C K , 它可以选择发送新数据或重传旧数据。特殊情况:接收端发送SACK块后,做出“食言”,由于这个原因, S A C K 发送端不能在收到一个S A C K 后立即清空其重传缓存中的数据; 

14.7 伪超时与重传

1.特殊情况:没有数据丢失也会出现重传(包的延时)。即伪超时;

2.实际R T T 显著增长, 超过当前R T O 时, 可能出现伪超时。在下层协议性能变化较大的环境中( 如无线环境) , 这种情况出现得比较多

14.8 包失序与包重复

1.在I P 网络中出现包失序的原因在于I P 层不能保证包传输是有序进行的。这一方面是有

利的( 至少对I P 层来说)

2.假设一旦收到重复A C K . , 发送端即启动快速重传, 那么就会导致大量不必要的重传发生。为解决这一间题, 快速重传仅在达到重复阑值( d u p t h r e s h ) 后才会被触发。

3.假设一旦收到重复A C K . , 发送端即启动快速重传, 那么就会导致大量不必要的重传发生。为解决这一间题, 快速重传仅在达到重复阑值( d u p t h r e s h ) 后才会被触发。用S A C K ( 特别是D S A C K ) , 就可以简单地忽略这个问题。

14.9 目的度量

1.T C P 能不断“学习”发送端与接收端之间的链路特征。学习的结果显示为发送端记录一些状态变量, 如s r t t 和r t t v a r o 一些T C P 实现也记录一段时间内已出现的失序包的估计值。一般来说, 一旦该连接关闭, 这些学习结果也会丢失, 即与同一个接收端建立一个新的T C P连接后, 它必须从头开始获得状态变量值。

14.10 重新组包

1.当T C P 超时重传, 它并不需要完全重传相同的报文段。 T C P 允许执行重新组包( r e p a c k e t i z a t i o n ) , 发送一个更大的报文段来提高性能。

2.原因在于TCP是通过字节号来识别发送和接收的数据,而非报文段()。

总结

1.重传的几种方法:基于计时器重传、快速重传(快速发送重复ACK)、选择确认重传SACK块(带有最近接收的报文序列号,防止伪超时)

2.计时器的重传:基于RTT与RTO

3.伪超时与重传(基于快速重传引发)

4.目的度量:不断学习路由路径找到最优解路径。

5.基于重传:将重传的包合入组成一个更大包发送,减少发送次数。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容