趣谈网络协议
刘超
前网易研究院云计算技术部首席架构师
130416 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 51 讲
趣谈网络协议
15
15
1.0x
00:00/00:00
登录|注册

第12讲 | TCP协议(下):西行必定多妖孽,恒心智慧消磨难

TCP BBR拥塞算法
快速重传
慢启动
基于UDP和TCP的程序编写
TCP BBR的优势
拥塞控制
流量控制
丢包问题
顺序问题
思考题
TCP协议

该思维导图由 AI 生成,仅供参考

我们前面说到玄奘西行,要出网关。既然出了网关,那就是在公网上传输数据,公网往往是不可靠的,因而需要很多的机制去保证传输的可靠性,这里面需要恒心,也即各种重传的策略,还需要有智慧,也就是说,这里面包含着大量的算法

如何做个靠谱的人?

TCP 想成为一个成熟稳重的人,成为一个靠谱的人。那一个人怎么样才算靠谱呢?咱们工作中经常就有这样的场景,比如你交代给下属一个事情以后,下属到底能不能做到,做到什么程度,什么时候能够交付,往往就会有应答,有回复。这样,处理事情的过程中,一旦有异常,你也可以尽快知道,而不是交代完之后就石沉大海,过了一个月再问,他说,啊我不记得了。
对应到网络协议上,就是客户端每发送的一个包,服务器端都应该有个回复,如果服务器端超过一定的时间没有回复,客户端就会重新发送这个包,直到有回复。
这个发送应答的过程是什么样呢?可以是上一个收到了应答,再发送下一个。这种模式有点像两个人直接打电话,你一句,我一句。但是这种方式的缺点是效率比较低。如果一方在电话那头处理的时间比较长,这一头就要干等着,双方都没办法干其他事情。咱们在日常工作中也不是这样的,不能你交代你的下属办一件事情,就一直打着电话看着他做,而是应该他按照你的安排,先将事情记录下来,办完一件回复一件。在他办事情的过程中,你还可以同时交代新的事情,这样双方就并行了。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

TCP协议在公网传输数据时需要保证可靠性,采用了多种机制和算法来实现这一目标。其中,TCP通过累计确认和窗口控制来保证数据的可靠性和顺序性,同时采用超时重试、快速重传机制以及自适应重传算法等方式来处理顺序问题和丢包问题,确保数据的可靠传输。此外,TCP还实现了流量控制机制,通过调整窗口大小来控制发送端的数据流量,以避免网络拥塞和低能窗口综合征。文章还介绍了TCP拥塞控制的问题,以及TCP BBR拥塞算法的优化。总的来说,TCP协议通过这些机制和算法保证了在公网传输数据时的可靠性和高效性。文章内容涵盖了TCP协议的工作原理和拥塞控制机制,对于想要深入了解TCP协议的读者来说,是一篇值得阅读的文章。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《趣谈网络协议》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(101)

  • 最新
  • 精选
  • 进阶的码农
    置顶
    AdvertisedWindow=MaxRcvBuffer-((NextByteExpected-1)-LastByteRead)。 我根据图中例子计算 14-((5-1)-0) 算出来是10 ,括号里边的-1是减的什么,为啥和图例算出来的结果不一样,还是我计算的有问题,麻烦详细说一下 谢谢

    作者回复: 这里我写的的确有问题,nextbyteexpected其实是6,就是目前接收到五,下一个期望的是六,这样就对了

    2018-06-13
    6
    48
  • 刘培培
    BBR 论文原文:https://queue.acm.org/detail.cfm?id=3022184

    作者回复: 就应该这样,一言不合就读论文,是最好的方式

    2019-08-27
    4
    70
  • 谛听
    不太清楚累积应答,比如接收端收到了包1、2、3、4,它的应答应该是5吗?也就是说中间的包就不用应答了吗?

    作者回复: 是的

    2018-09-22
    4
    23
  • Null
    BBR 不填满缓存还是不填缓存?不填缓存那么缓存干啥用,如果填了了,即使不满,但是不是还有延迟。。。

    作者回复: 填的少,延迟就少了,当然做不到完全避免,毕竟缓存是路径上每一个设备自己的事情。缓存是每个设备自己的设计选择,BBR算法是两端的算法。 就像买火车票,我建议网上购买,身份证刷进去,这样速度快,但是对于火车站还是要设置人工窗口,因为不是每个人都会选择速度快的方式的。

    2019-03-27
    21
  • 秋去冬来
    快速重传那块6.8.9 7丢了为什么会发送3个冗余的6的3个ack

    作者回复: 六的ack里面强调下一个是七

    2018-06-22
    12
  • 咖啡猫口里的咖啡猫🐱
    老师,TCP协议栈,保证包一定到吗,,哪几种情况下会丢失,,,能不能总结下

    作者回复: 不能保证,只是尽力重试,再重试

    2018-06-13
    2
    12
  • 扬~
    2个问题: 1. TCP可靠的连接会不会影响到业务层,比如超时重传导致了服务端函数调用2次,那岂不是业务都要考虑幂等性了,我很懵逼,果然是懂得越多越白痴。 2. 拥塞控制的窗口跟流量控制的窗口一回事吗,还是流量控制的窗口的出来后就会进入拥塞控制窗口?

    作者回复: 不会,重传的包不会交给应用层。是一个窗口

    2018-11-01
    9
    10
  • 茫农
    有一个值 ssthresh 为 65535 个字节,,这个是什么意思?

    作者回复: slow start threshold

    2018-10-23
    2
    10
  • Magic
    祝刘超老师教师节快乐,专栏很棒,受益良多

    作者回复: 谢谢

    2019-09-10
    8
  • Yangjing
    对于发送端,为什么会保存着“已发送并已确认”的数据呢?已确认的不是已经没用了吗?

    作者回复: 是的,可以回收了,这里是分一下类

    2019-06-22
    6
收起评论
显示
设置
留言
99+
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部