目录

零、答案

一、滑窗结构

二、流量控制

三、零窗口


零、答案

接收端告诉发送端,自己现在能够接收的包的数量,发送端根据该数据来调整自己频率,从而完成了 TCP 的流量控制。

一、滑窗结构

发送方滑窗可以分为下面两个部分。offered window 为整个滑窗的大小。

接收方滑窗可分为三个部分:

可以看到,接收方的滑窗相对于发送方的滑窗多了一个 " Received ACKed Not Sent to Proc " 的部分。接收方接收到的文本流必须等待进程来读取。如果进程正忙于做别的事情,那么这些文本流即使已经正确接收,还是需要暂时占用接收缓存。

当出现上述占用时,滑窗的可用部分(也就是图中 advertised window )就会缩水。这意味着接收方的处理能力下降。如果这个时候发送方依然按照之前的速率发送数据给接收方,接收方将无力接收这些数据。

二、流量控制

如果发送端发送太快,导致接收端来不及接收,就容易造成丢失数据。流量控制是指接收方将 advertised window 的大小通知给发送方,从而指导发送方修改 offered window 的大小。接收方将该信息放在TCP头部的 window size 区域:

发送方在收到window size的通知时,会调整自己滑窗的大小,让 offered window 和 advertised window 相符。这样,发送窗口变小,文本流发送速率降低,从而减少了接收方的负担。

三、零窗口

advertised window 大小有可能变为0,这意味着接收方的接收能力降为 0 。发送方收到大小为 0 的 advertised window 通知时,停止发送。

当接收方经过处理,再次产生可用的 advertised window 时,接收方会通过纯粹的 ACK 回复来通知发送方,让发送方恢复发送。然而,ACK回复的传送并不是可靠的。如果该ACK回复丢失,那么TCP传输将陷入死锁(deadlock)状态。

为此,发送方会在零窗口后,不断探测接收方的窗口。窗口探测( window probe )时,发送方会向接收方发送包含1 byte文本流的 TCP 片段,并等待 ACK 回复( 该ACK回复包含有 window size )。由于有1 byte的数据存在,所以该传输是可靠的,而不用担心 ACK 回复丢失的问题。如果探测结果显示窗口依然为 0,发送方会等待更长的时间,然后再次进行窗口探测,直到TCP传输恢复。

(SAW:Game Over!)

TCP/IP / 如何进行流量控制( flow control )?相关推荐

  1. Linux Kernel TCP/IP Stack — L2 Layer — Traffic Control(流量控制)的实现原理

    目录 文章目录 目录 基本概念 QoS.Bandwidth 和 Traffic Control 队列 FIFO 队列 pfifo_fast 队列 SFQ 队列 令牌桶队列 数据流(Data Flow) ...

  2. Linux Kernel TCP/IP Stack — L2 Layer — Traffic Control(流量控制)

    目录 文章目录 目录 tc CLI - Linux 流量控制工具 TC 的基本原理 TC 的组件 Qdisc 无类别队列规定(Classless Qdiscs) 分类队列规定(Classful Qdi ...

  3. Linux Kernel TCP/IP Stack — L2 Layer — Traffic Control(流量控制)的基本操作

    目录 文章目录 目录 使用 TC 进行流量控制 创建队列 创建分类 设置过滤器 上行带宽限制 下行带宽限制 对 SrcIP 进行限速 使用 TC 进行流量控制 综上,Linux 要对网卡进行流量控制, ...

  4. 面试热点|理解TCP/IP传输层拥塞控制算法

    来自:后端技术指南针 0x00.前言 这是TCP/IP协议栈系列的第二篇文章,之前的一篇理解TCP/IP协议栈之HTTP2.0感兴趣可以看下,今天一起来学习下一个热点问题. 通过本文你将了解到以下内容 ...

  5. 万字长文 | 全(小区局域)网最强 TCP/IP 拥塞控制总结

    来源 | 后端技术指南针 头图 | CSDN付费下载自视觉中国 先唠唠嗑 在正式开始文章技术点之前,想先聊一下我对面试中的TCP/IP问题的一些拙见,希望对盆友们有所帮助. 在招聘岗位描述中,几乎必然 ...

  6. TCP/IP的工作原理

    一.总述 1.定义: 计算机网络是一些互相连接的.自治的计算机的集合.因特网是网络的网络. 2.分类: 根据作用范围分类: 广域网 WAN (Wide Area Network) 局域网 LAN (L ...

  7. 本文把TCP/IP讲绝了!

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:硬刚一周,3W字总结,一年的经验告诉你如何准备校招! 个人原创100W+访问量博客:点击前往,查看更多 转自:R ...

  8. 本文把 TCP/IP 讲绝了

    一.TCP/IP模型 TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的网络协议,是Internet的 ...

  9. 15 张图,了解一下 TCP/IP 必知也必会的 10个要点

    作者丨Ruheng https://juejin.im/post/6844903490595061767 一.TCP/IP模型 TCP/IP协议模型(Transmission Control Prot ...

最新文章

  1. LSOF 安装与使用(功能强大)
  2. 正則表達式截取字符串两字符间的内容
  3. HotSpot虚拟机对象的创建过程
  4. java分布式事务原理_JAVA分布式事务原理及应用
  5. Chrome浏览器相关细节整理
  6. [react] Consumer向上找不到Provider的时候怎么办?
  7. 智能家居制作之WiFi遥控家中设备
  8. python numpy 数组元素周围_Python numpy数组元素属性及访问
  9. [转载] Python中产生随机数
  10. eclipse32位python版下载_32位eclipse怎么安装?
  11. 批量调取接口_调用API接口批量查手机归属地
  12. DBCO-PALA-b-PEG DBCO-聚硫辛酸-聚乙二醇
  13. 蓝桥杯科学素养题(2020年12月-2021年12月)
  14. 【重温C/C++】explicit+||template||virtual虚函数||重载和重写
  15. oracle数据块的大小设置,Oracle数据块的大小
  16. 水杯测试用例(500ml的塑料水杯)
  17. win系统excel、txt文件传到linux,行列数对不齐,乱码的的问题
  18. DDS的理解及IP核的使用
  19. 华润MMX链上云的简介
  20. 阿里云服务器带宽测速四种方法

热门文章

  1. spring事务管理一:关于事务管理的接口
  2. 算法导论5:基数排序和计数排序 2016.1.5
  3. kafka java客户端编程
  4. Android inline hook手记
  5. 网站down掉后,自动发信的shell
  6. t430装Linux双系统,thinkpad T430s 在win8上安装ubuntu双系统(UEFI开启)
  7. 推荐 10 个实用型的热门开源项目,开发效率又能提升了!
  8. 【大二在读】说说我对“软件工程”的理解
  9. k8s minikube管理镜像相关命令:minikube image list/pull/load
  10. docker安装运行qq