(3)TCP重传

一、TCP重传机制

保证所有的数据包都可以到达

注意:接收端给发送端的Ack只确认最后一个连续包,如发五份数据,收到1,2,于是回ack 3,然后收到4(注意此时3没收到),TCP怎么办?SeqNum和Ack以字节数为单位,ack时候,不能跳着确认,只能确认最大连续收到包,不然,发送端就以为之前都收到

1、超时重传机制

不回ack,死等3,发送方发现收不到3的ack超时后会重传3。接收方收到3后,ack 回 4—意味着3和4都收到

问题,要死等3,导致4和5即便收到,发送方也不知,因为没收到Ack,可能重传4和5

有两种选择:

   1)仅重传timeout的包(3),省带宽,慢

   2)重传timeout后所有(3,4,5),快,可能会有无用功

2、快速重传机制

于是,TCP引入Fast Retransmit 算法,以数据驱动重传,不用等timeout再重传。包没连续到达,ack最后那个可能被丢了的包,发送方连续收3次相同ack,就重传

如:发送方发1,2,3,4,5份数据,1先到送,ack回2,2没收到,3到达,ack还回2,4和5到了,还是ack回2,马上重转2。因为3,4,5都收到了,ack回6

3、SACK 方法(Selective Acknowledgment选择承认)

在TCP头里加SACK,SACK汇报收到的数据碎版,ACK还是Fast Retransmit的ACK

发送端根据回传SACK,知道哪些数据到(优化Fast Retransmit)。Linux通过tcp_sack打开这功能(默认开)

注意1:接收方Reneging(有权把已回发送端SACK里的数据给丢了)。不鼓励,因为复杂化,但要把内存给更重要。所以,发送方不能完全依赖SACK要依赖ACK,并维护Time-Out,如后续ACK没增长,还要SACK东西重传,ps:接收端不能把SACK包标为Ack

注意2SACK消费发送方资源,如攻击者发 发送方一堆SACK选项,发送方重传甚至遍历已经数据,消耗资源

4、Duplicate SACK – 重复收到数据

又称D-SACK,用SACK告诉发送方哪些被重复接收

(1)D-SACK使用了SACK的第一个段来做标志:

如SACK第一段范围,被 ACKSACK第二个段  所覆盖,就是D-SACK

(2)示例一:ACK丢包

丢两个ACK1)发送端重传第一个数据包(3000-3499),接收端发现重复收到,回SACK=3000-3500,2)ACK到4000,意味收到4000前所有数据3)这个SACK就是D-SACK——告诉发送端 收到重复数据,发送端知道,数据包没丢,丢ACK包

(3)示例二:网络延误

1)1000-1499网络延误,发送方没收到ACK2)后面到达三个包触发“Fast Retransmit算法”3)重传时,延误包到了,所以回SACK=1000-1500,ACK已到3000,4)SACK是D-SACK—标识收到重复包。

发送端知道“Fast Retransmit算法”不是因为 发的/回应的ACK包 丢了,因为网络延时

(4)D-SACK好处:

1)让发送方知道,发的包/回来ACK包 丢了

2)是不是自己timeout太小,导致重传

3)先发的包后到(又称reordering

4)网络上是不是复制我的包

知道这些可更好帮TCP了解网络情况,从而做网络流控。Linux的tcp_dsack默认开启这功能

http://www.52im.net/thread-513-1-1.html

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

推荐阅读更多精彩内容