2020-11-05:谈一下TCP的拥塞控制。

2020-11-05:谈一下TCP的拥塞控制。

#福大大架构师每日一题#
全部评论
慢开始、拥塞控制、快重传、快恢复
1 回复 分享
发布于 2020-11-05 14:44
首先需要了解一个概念,为了在发送端调节所要发送的数据量,定义了一个“拥塞窗口”(Congestion Window),在发送数据时,将拥塞窗口的大小与接收端ack的窗口大小做比较,取较小者作为发送数据量的上限。 拥塞控制主要是四个算法: 1.慢启动:意思是刚刚加入网络的连接,一点一点地提速,不要一上来就把路占满。 连接建好的开始先初始化cwnd = 1,表明可以传一个MSS大小的数据。 每当收到一个ACK,cwnd++; 呈线性上升 每当过了一个RTT,cwnd = cwnd*2; 呈指数让升 阈值ssthresh(slow start threshold),是一个上限,当cwnd >= ssthresh时,就会进入“拥塞避免算法” 2.拥塞避免:当拥塞窗口 cwnd 达到一个阈值时,窗口大小不再呈指数上升,而是以线性上升,避免增长过快导致网络拥塞。 每当收到一个ACK,cwnd = cwnd + 1/cwnd 每当过了一个RTT,cwnd = cwnd + 1 拥塞发生:当发生丢包进行数据包重传时,表示网络已经拥塞。分两种情况进行处理: 等到RTO超时,重传数据包 sshthresh = cwnd /2 cwnd 重置为 1 3.进入慢启动过程 在收到3个duplicate ACK时就开启重传,而不用等到RTO超时 sshthresh = cwnd = cwnd /2 进入快速恢复算法——Fast Recovery 4.快速恢复:至少收到了3个Duplicated Acks,说明网络也不那么糟糕,可以快速恢复。 cwnd = sshthresh + 3 * MSS (3的意思是确认有3个数据包被收到了) 重传Duplicated ACKs指定的数据包 如果再收到 duplicated Acks,那么cwnd = cwnd +1 如果收到了新的Ack,那么,cwnd = sshthresh ,然后就进入了拥塞避免的算法了。
2 回复 分享
发布于 2020-11-05 10:46

相关推荐

地点: 广州(环节:听宣讲会-->简单笔试-->无领导小组讨论-->hr面试-->通过后培训3周,实习到毕业转正,转正后6月试用期,合同签3年)1, 所有的应聘者一起听核桃编程公司的宣讲会2, 比较简单的笔试题目--都是选择和填空·C++中一个字符加一个数字得到得到什么?·一个二叉树,提供根据两种深度遍历方法(先序、中序、后序的其中两种)得到的数组,然后选出另外一种遍历方法得到的数组.· 给定一组数据,每次操作可以其中一个元素取出部分值加到另一个元素上,使得这组数据所有的值都在给定的区间范围内,给出最少的操作次数.· 一组数据入栈出栈的顺序· 不同进制的加减乘除运算·汉诺塔问题一共10题60分合格3,#牛客AI配图神器#进入无领导小组讨论看材料5分钟(关于学生的竞赛规划)每人2分钟完成自我介绍加方案介绍15分钟一起讨论,选出一人总结汇报4,通过后进入个人面试环节我在无领导讨论环节表现较差,没有通过反思: 自我介绍时太过紧张,内容冗长,优点不突出.阅读材料时看得太着急,漏看一些细节,没有发现材料中一些能够串起来的联系.教训:利用费曼学习法,将我所学知识像老师授课一样口述给我自己,一直训练直到完全理解知识点,并且口述时不卡壳.面试时自我暗示不要紧张,审题时注意力要高度集中,不要被其他事物分走注意力.草稿纸上的思维导图不能潦草,稍微放慢书写速度,反而会提高整体的完成速度.
查看7道真题和解析
点赞 评论 收藏
分享
评论
3
4
分享

创作者周榜

更多
牛客网
牛客企业服务