网络协议 Day09 TCP流量控制 拥塞控制

一、 TCP 可靠传输的几个问题思考

1. 若有个包重传了 N 次还是失败,会一直持续重传到成功为止吗?
  • 这个取决于系统的设置,比如有些系统,重传 5 次还未成功就会发送 RST(reset)报文断开 TCP 连接
2. 如果接收窗口最多能接收 4 个包,但是发送方只发了 2 个包,那么接收方不满足 4 个包,也就不满足滑动窗口协议的回复条件,接收方会一直等待下去吗?
  • 接收方会等待一定时间后没有第 3 个包,就会返回确认收到 2 个包给发送方
3. 为什么选择在传输层就将数据大卸八块分成多个段,而不是等到网络层再分片传递给数据链路层?
  • 因为可以提高重传的性能
  • 需要明确的是:可靠传输是在传输层进行控制的
  • 如果在传输层不分段,一旦出现数据丢失,整个传输层的数据都要重传
  • 如果在传输层分了段,一旦出现数据丢失,只需要重传丢失的段即可

二、 TCP 流量控制

1. 如果没有流量控制
  • 如果接收方的缓存区满了,发送方还在疯狂的发送数据
  • 接收方只能把收到的数据包丢掉,大量的丢包会极大的浪费网络资源
2. 流量控制起的作用是什么?
  • 让发送方的发送速率不要太快,让接收方来得及接收处理
3. 流量控制起的原理是什么?
  • 通过确认报文中窗口字段来控制发送方的发送速率
  • 发送方的发送窗口大小不能超过接收方给出窗口大小
  • 当发送方收到接收窗口的大小为 0 时,发送方就会停止发送数据
4. 流量控制的图示(理解下图)
流量控制的图示
5. 有一种特殊情况:①一开始,接收方给发送方发送了 0 窗口的报文段②后面,接收方有了一些储存空间,给发送方发送的非0 窗口的报文段丢失了③发送方的发送窗口一直为零,双方陷入僵局。如何解决?
  • 当发送方收到 0 窗口通知时,这是发送方停止发送报文
  • 并且同时开启一个定时器,隔一段时间就发个测试报文去询问接收方最新的窗口大小
  • 如果接收的窗口大小还是为 0,则发送方再次刷新启动定时器

三、 TCP 拥塞控制

1. 什么是拥塞?(结合理想情况和实际情况)
拥塞示意图
  • 理想情况: 1000M 带宽的链路,可以最多容纳 1000M 的流量,当超过 1000M 后多余数据被丢失,依然维持 1000M 的负载
  • 实际情况: 1000M 带宽的链路,大概率在 500M 的时候就会开始轻度拥塞也就容易丢包,如果继续增长就会导致 1000M 带宽的负载越来越低,甚至堵死归零
  • 类比我们现实生活的交通公路,一条公路如果理想下能容纳 1000 辆汽车同行,那么实际上公路同行量为 300 时还算比较顺畅;如果继续增加汽车数量就开始拥堵了,当达到 2000 辆汽车时,可能会导致公路的通行量就归零了。
2. 拥塞控制的目的是什么?
  • 防止过多的数据注入到网络中
  • 避免网络中的路由器或链路过载
3. 拥塞控制和流量控制对比?
  • 拥塞控制:是一个全局性的过程,涉及到所有的主机、路由器,是大家共同努力的结果
  • 流量控制:是点对点通信的控制
4. 几个名次缩写了解?
  • MSS(Maximum Segment Size)
  • 告诉对方,自己传递每个数据包部分大小的最大值1500 - 网络层首部 - TCP 首部),在建立连接时确定
  • cwnd(congestion window)
  • 拥塞窗口
  • rwnd(receive window)
  • 接收窗口
  • swnd(send window)
  • 发送窗口
  • swnd = min(cwnd, rwnd)
5. 拥塞控制有哪几个方法?
  • 慢开始(slow start)
  • 拥塞避免(congestion avoidance)
  • 快速重传(fast retransmit)
  • 快速恢复(fast recovery)
6. 慢开始(slow start)
慢开始图解
  • cwnd 的初始值比较小,然后随着数据包被接收方确认(收到一个ACK)
  • cwnd 就成倍数增城(指数级)
7. 拥塞避免(congestion avoidance)
拥塞避免
8. 快速重传(fast retransmit)
快速重传图解
  • 接收方
  • 每收到一个失序的分组后就立即发出重复确认
  • 使发送方及时知道有分组没有到达
  • 而不要等待转机发送数据时才进行确认
  • 发送方
  • 只要连续收到三个重复确认(总共 4 个相同的确认),就应当立即重传对方尚未收到的报文段
  • 而不必继续等待重传计时器到期后再重传
9. 快速恢复(fast recovery)
image.png
  • 当发送方连续收到三个重复确认,就执行乘法减小算法,把 ssthresh 减半
  • 与慢开始不同之处是现在不执行慢开始算法,即 cwnd 现在不恢复到初始值
  • 而是把 cwnd 值设置为 ssthresh 减半后的数值
  • 然后开始执行拥塞避免算法(加法增大),是拥塞窗口缓慢地线性增大
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,670评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,928评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,926评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,238评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,112评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,138评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,545评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,232评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,496评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,596评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,369评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,226评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,600评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,906评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,185评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,516评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,721评论 2 335

推荐阅读更多精彩内容