发生拥塞控制的原因:资源的需求>可用资源 作用:拥塞控制就是防止过多的数据包进入网络,这样可以使网络中的路由器或者链路不至于过载。拥塞控制的前提就是网络能够承受现有的网络负荷。 对比流量控制:拥塞控制是一个全局的过程,涉及到链路上的所有主机和路由。 流量控制往往指的是点对点通信的控制,是端对端的问题。 流量控制: (1)tcp提供了一种机制可以让发送端根据接收端的实际接收能力来控制发送的速率,具体的操作是接收端主机向发送端主机通知自己可以接收数据的大小,于是发送会发送不超过这个限度的数据,该限度大小就被称为窗口大小。 (2)TCP首部中专门有个字段用来通知窗口大小,接收主机将自己可以接收缓冲区的大小放入这个字段通知发送端。这个字段越大说明网络的吞吐量越大。 接收端 (3)接收端缓冲区一旦面临溢出,窗口大小也会随之被设置为一个更小的值发送给发送端,从而控制发送的数据量,也就说发送端主机会根据接收端主机的缓冲区大小来对发送数据的大小进行控制。 拥塞控制:计算机网络是一个共享网络,有可能因为其他主机间的通信造成网络拥堵,在网络出现拥堵时,如果突然发送一个较大的数据包可能导致整个网络的瘫痪。 拥塞窗口:发送方为一个动态变化的窗口叫做拥塞窗口,拥塞窗口的大小取决于网络的拥塞程度。发送让自己的发送窗口=MIN(拥塞窗口,接收方的接收窗口),但是发送窗口不是一直等于拥塞窗口,在网络情况好的情况下,拥塞窗口会不断增加,发送方的窗口自然也会随着增加,但是接收方的能力有限,在发送方的窗口达到某个大小时就不在发生变化了。 发送方如果确认网络拥塞:发送方发送一些报文时,如果发送没有在规定的时间间隔内收到接收方的应答,则就可以认为网络拥塞。 拥塞避免的思路: (1) 最初让拥塞窗口按照指数级增长,这样可以提高发送数据吞吐量; (2) 当拥塞窗口大小到达慢启动门限后,该成线性增长,目的是减少拥塞窗口的增长速度; (3) 当发送端检测的网络拥塞时,立即把拥塞窗口减小为1,把慢启动门限调整为出现拥塞时拥塞窗口的一半目的是可以减少向网络中注入的数据量。 (4) 重新开始指数级增长和线性增长。
点赞 评论

相关推荐

1. 自我介绍2. 项目都是自己写的吗?3. 我看你用 koa2 写后端,为什么选择它,能讲讲吗?4. 那你提到 koa2 它是不提供中间件的,你是怎么解决的?5. 中间件的原理是什么?(洋葱模型)6. 你刚刚说碰到 next() 就进入下一个中间件,那 next 只能执行同步,如果是异步的话,你是怎么处理的?(async/await,但是我发现,有的中间件需要在异步中间件之前执行,所以我用 try/catch 来处理异步中间件的异常)7. JS 异步发展史,以及它们的优缺点说一下 (回调函数--Promise--Generator--async/await)8. 你刚刚说 Promise 状态不能更改,那如果我要设计一个能修改 Promise 状态的函数,你会怎么设计?9. CSS 水平垂直居中的方法(flex、grid、绝对定位 + margin:auto、绝对定位 + 负 margin、绝对定位 + transform、table-cell)10. 你刚刚说到 flex 布局,那 flex:1 是什么意思?(flex: flex-grow  flex-shrink  flex-basis;等价 flex:1 1 0%表示元素可以均分剩余空间,可拉伸、可压缩,不依赖内容宽度,自动自适应填充布局。)11. 父容器宽是 500px,然后它左右各有两个子容器是 100px,如果设置 flex: 1,那它的宽度是多少?(500-100-100=300px)12. 说说你对浏览器缓存的理解(强缓存、协商缓存)13. 如果一个用户,他怎么去刷新都无法刷到最新版的代码,你能说下可能的原因吗?(版本号、hash等)还有吗?(我说我不知道了,面试官说还有 CDN 没有同步,我说企业才会这么干,自己写项目一般不会,我知道 cdn 是用来解决高并发的手段)14. React你熟吗?说下 React 函数组件和类组件的区别15. 怎么避免 Hooks 导致组件重新渲染?(使用 useCallback、useMemo、React.memo、useRef等等)16. 谈一下我对 React 的状态管理的理解(Redux、Mobx、Zustand,我说 Zustand 用的最多)17. React 常见的 hooks 有哪些?(useState、useEffect、useRef、useCallback、useMemo、useReducer、useContext、useImperativeHandle、useLayoutEffect、useDebugValue)18. TS 你熟吗?我们引进 TS 的目的是为什么?19. interface 和 type 的区别20. 说下 TS 里的泛型21. 我现在有十个字段,比如十个字段就要 A B C D E F G 这种。那我现在另有另外一个方法,这个方法接受的参数呢,必须是这个 interface A 里面的这个 K。就比如说你可以是 A B C 可以 A B C D 任何组合都可以,但是必须是这个 interface 里面的 A 里面的定义的。这个 K 这种类型的话是怎么去定义呢?(说实话我有点不太理解啥意思,反正我说了 keyof)``` TypeScriptinterface Obj {A: stringB: stringC: stringD: stringE: string// 其他字段...}```22. vite 用过吗?说说和 webpack 的区别。vite 的优缺点是什么23. 说说 Tree shaking(树摇) 和 Code Splitting (代码分割)的区别24. Git 你熟吗?说说 git merge 和 git rebase 的区别,什么时候用 git merge,什么时候用 git rebase?25. web3 你熟吗?(不太熟,听说过而已)26. 我看你自我介绍说了 AI,你是怎么用的?27. 除了提示词,还有什么能让 AI 更聪明?28. AI 的优缺点你说一下29. AI 发展这么快,你觉得我们以后会扮演什么角色?30. 反问基本都答上来了。面了我80分钟,我还以为稳过的
查看29道真题和解析
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务