原贴地址:https://blog.csdn.net/djl806943371/article/details/89469791

哇,不知不觉这个课程也学了挺久了,说明一下,学习的是Stanford大学的CS144 Introduction to Computer Networking。终于学完了第三章Packet Switching。接下来就是拥塞控制了,这一部分也是计算机网络中很重要的一部分。笔者腾讯后台开发一面面试官就问了我TCP如何进行拥塞控制,可见也是面试常问内容,还是非常值得深入理解的。接下来就开始吧,最开始当然就是拥塞控制的一些基础知识。

在第二章我们我们学过滑动窗口,这两者有一定的相通性。滑动窗口是在一个连接之间建立联系,防止发送者淹没接收者。拥塞控制则是为了防止很多发送者发送太多数据到整个网络中,将整个网络淹没,因为可能每个接收者都没有被淹没,但是总的数据包却使发送者和接收者之间的网络淹没。

如下图,首先我们可以从三个尺度上认识拥塞:第一,两个包到达路由的时间有交错,此时晚到的包需要存储在queue中等待前面的包发送完成后再进行发送,这个时间尺度是极小的;第二,是从flow的维度上来看,当两个传输流目的link为同一个并且两个流的输入速率大于输出速率时,就会产生丢包,这个时间尺度也是比较小的,是单次或几次端对端传输的时间,比如请求一个网页或者发送一个电子邮件;第三个是在正常时间维度内,比如早晨会有大量用户使用谷歌,大量用户在某个时间段内集中使用某个link,也会造成带宽不够。本章我们主要学习在第二个尺度上,TCP如何实现拥塞控制。

拥塞是不可避免的:

  • 为了使链路的利用率提高,我们采用packet Switching的方式,在这种方式下,路由的缓冲区会经常性的被填充;
  • 如果缓冲区一直空闲,此时延迟比较低,但是网络的利用率很低;
  • 如果缓冲区一直被填充,那么网络利用率很高,但是延迟会很高。

因此处理拥塞时,要尽可能在网络利用率和延迟之间达到一种平衡。

拥塞处理的公平性:

在对带宽进行分配时,会牵扯到公平性问题,如何定义这个公平性,我们采用Max-min Fairness:使传输速率最小的flow的传输速率达到最大,也即这种状态下,你无法在不减小流速更低的flow的传输速率的情况下增大一个flow的传输速率。以下面为例:

有三个输入,一个输出,则每人可以分配1/3,但是C只需要0.2,则C分配0.2,A、B可均分剩余0.8,即各0.4,0.4低于两者需求,则分配完毕。即分配时从需求最小的开始分配,当均分可用带宽所有入口都无法完全满足时,则均分后停止分配即可。

Introduction to Computer Networking学习笔记(二十一):TCP拥塞控制-基础、公平分配带宽准则相关推荐

  1. Introduction to Computer Networking学习笔记(十五):Queue Model 包交换中的缓冲模型

    本章知识点比较零散,因此一篇文章进行总结,并且不具有连贯性,仅记录自己认为有价值的内容. 将较大的包拆分为小包进行传输,可以减小端对端延迟,原因如下图: 数据传输时,突发大量的数据包会增加延迟,简单周 ...

  2. python3.4学习笔记(二十一) python实现指定字符串补全空格、前面填充0的方法

    python3.4学习笔记(二十一) python实现指定字符串补全空格.前面填充0的方法 Python zfill()方法返回指定长度的字符串,原字符串右对齐,前面填充0. zfill()方法语法: ...

  3. Mr.J-- jQuery学习笔记(二十一)--模拟微博页面

    先看之前的节点操作方法:Mr.J-- jQuery学习笔记(二十)--节点操作方法 Mr.J-- jQuery学习笔记(五)--属性及属性节点 Mr.J-- jQuery学习笔记(十一)--事件委托  ...

  4. kvm虚拟化学习笔记(二十一)之KVM性能优化学习笔记

    本学习笔记系列都是采用CentOS6.x操作系统,KVM虚拟机的管理也是采用virsh方式,网上的很多的文章都基于ubuntu高版本内核下,KVM的一些新的特性支持更好,本文只是记录了CentOS6. ...

  5. linux驱动开发学习笔记二十一:异步通知

    一.异步通知简介 我们首先来回顾一下"中断",中断是处理器提供的一种异步机制,我们配置好中断以后就可以让处理器去处理其他的事情了,当中断发生以后会触发我们事先设置好的中断服务函数, ...

  6. opencv学习笔记二十一:使用HSV颜色空间实现颜色识别

    一.颜色空间介绍        RGB 颜色空间是大家最熟悉的颜色空间,即三基色空间,任何一种颜色都可以由该三种 颜色混合而成.然而一般对颜色空间的图像进行有效处理都是在 HSV 空间进行的,HSV( ...

  7. IOS学习笔记二十一(NSDictionary、NSMutableDictionary)

    1.NSDictionary.NSMutableDictionary 可以理解为java里面的map,一个key对应一个value,key不可以重复 NSDictionary不可变,NSMutable ...

  8. java自定义一个timeout,Timeout操作符 RxJava 学习笔记二十一

    timeout用于检测在给定时间内observables没有及时响应.如果指定的时间量没有发出任何项目,则超时会使observables失败并出现TimeoutException. 我们将从debou ...

  9. 立创eda学习笔记二十一:添加、移除泪滴

    在PCB电路板设计中,为了让焊盘更坚固,防止机械制板时焊盘与导线之间断开,常在焊盘和导线之间用铜膜布置一个过渡区,形状像泪滴,故常称做补泪滴(Teardrops). 泪滴的作用 避免电路板受到巨大外力 ...

  10. 西门子PLC学习笔记二十一-(中断处理一)

    中断处理用来实现对特殊内部事件或外部事件的快速响应.CPU检测到中断请求时,立即响应中断,调用中断源对应的中断程序(OB).执行完中断程序后,返回被中断的程序中. 中断源类型主要有:I/O模块的硬件中 ...

最新文章

  1. Xamarin Android教程Android基本知识版本介绍与系统介绍
  2. python 多态 知乎_Python函数接口的一些设计心得
  3. 网站的高性能架构--web前端优化
  4. HTML基础(part8)--HTML5
  5. 前端学习(1850)vue之电商管理系统电商系统vue脚手架安装
  6. 王爽 汇编语言第三版 第10章 call 和 ret 指令 以及 子程序设计
  7. Spring 4 xml 注解配置谅解 spring
  8. 算法工程师的冰与火之歌
  9. Linux-Can't create socket: Too many open files
  10. 不会英语学习c语言和java,我想学电脑JAVA,但不懂英文,可以学吗?怎么才能学好呢...
  11. python pop3_Python POP3 收取邮件
  12. Unity Keyword
  13. 雷达图的实现(R语言及Python)
  14. Keras天坑:想当然的对层的直接运算带来的问题
  15. grad-cam用于SSD目标检测
  16. 分库分表的 9种分布式主键ID 生成方案
  17. 浮点运算单元FPU能给电机控制带来什么?
  18. unity 如何获取系统时间
  19. english learning fengshui
  20. 解读趣头条Q4财报:营收同比增长25% 趣头条减速求稳

热门文章

  1. 数据分析第二章确定分析思路
  2. MaterialImageLoading
  3. Python实现矩阵所有元素之和及某一列之和和某一行之和??
  4. 日常琐事的记录,每周六晚做一次总结整理
  5. 【转】C# 过滤HTML,脚本,数据库关键字,特殊字符
  6. realmex7pro能用鸿蒙系统吗,realmex7pro有nfc吗-realmex7pro支持红外遥控功能吗
  7. jvm 内存溢出 Java heap space 调优解决过程
  8. mysql中like,limit,union及union all查询
  9. 在Apache环境下成功的运行ASP.NET
  10. [译]Vue 2.0的变化(一)之基本API变化