TCP系列27—窗口管理&流控—1、概述
在前面的内容中我们依次介绍了TCP的连接建立和终止过程和TCP的各种重传方式。接着我们在这部分首先关注交互式应用TCP连接相关内容如延迟ACK、Nagle算法、Cork算法等,接着我们引入流控机制(flow control)和关联的窗口管理(window management)过程。在开篇之前我们先介绍几个相关的概念。
交互式TCP连接(interactive TCP connection):交互式TCP连接是指用户输入需要在client和server间传递的这种。用户的输入可能是一次键盘按键或者一个短消息。这种交互式应用一般都是比较短小的消息,如果TCP每次收到应用层提交的交互消息就发送出TCP报文,有可能会大大的降低网络的利用率。原因是一个交互消息可能仅仅带有几个bytes的数据,但是TCP基本头和IP基本头就有40bytes,另外还会有链路层的开销,最终导致网络传输中的数据大部分都是各种头开销,而有用的数据很少。有些头压缩算法也可以处理这种问题,如ROHC头压缩稳定状态下可以把(rtp+udp+ip)头压缩为几个bytes,但是可应用的场景有限。另一方面如果把应用层的小包暂存最终打包成大的数据包的话又会引入比较大的时延,对于时延敏感类应用就会有负面影响,如游戏应用。因此需要在打包发送和时延之间取一个权衡。有资料表明internet上大约10%左右的TCP报文为交互式数据(interactive data),另外90%则为成批数据(bulk data)。
流控机制(flow control):也叫做流量控制,我们所说的流量控制一般是指点对点的控制,也就是TCP的发送端和接收端的交互,这个流量控制不涉及中间的路由器等网络设备,这个是与后面要介绍的拥塞控制的重要区别。但是另一方面后面要介绍的拥塞控制也可以看成是流量控制的一个扩展。当接收端由于缓存大小等原因需要降低发送端的发送速率的时候,我们需要一种方式通告发送端降低数据发送速率,这种方式我们就叫做流量控制(flow control)或者简称为流控。实现流量控制一般有两种方式(TCP采用的基于窗口的流控):
基于速率(rate-based)的流控,接收端直接告诉发送端一个确定的速率,发送端控制发送速率不超过此确定值,该方式在广播和多播中有应用。
基于窗口(window-based)的流控,这是一种比较受欢迎的流控机制,尤其是使用滑窗机制的时候,TCP协议中就是使用这种方式就行的流控。另外LTE通信的RLC层也有类似TCP的滑窗协议,也是通过这种方式进行的流控。
窗口管理(window management):从广义来说,窗口管理主要涉及两个方面,一个是用于流量控制的滑动窗口协议,另一个则是与拥塞控制的交互。但是一般说窗口管理更侧重于描述流量控制的滑窗协议。
TCP系列27—窗口管理&流控—1、概述的更多相关文章
- TCP系列31—窗口管理&流控—5、TCP流控与滑窗
一.TCP流控 之前我们介绍过TCP是基于窗口的流量控制,在TCP的发送端会维持一个发送窗口,我们假设发送窗口的大小为N比特,网络环回时延为RTT,那么在网络状况良好没有发生拥塞的情况下,发送端每个R ...
- TCP系列36—窗口管理&流控—10、linux下的异常报文系列接收
在这篇文章中我们看一下server端在接收到异常数据系列时的处理,主要目的是通过wireshark示例对这些异常数据系列的处理有一个直观的认识,感兴趣的自行阅读相关代码和协议,这里不再进行详细介绍 在 ...
- TCP系列35—窗口管理&流控—9、紧急机制
一.概述 我们在最开始介绍TCP头结构的时候,里面有个URG的标志位,还有一个Urgent Pointer的16bits字段.当URG标志位有效的时候,Urgent Poinert用来指示紧急数据的相 ...
- TCP系列33—窗口管理&流控—7、Silly Window Syndrome(SWS)
一.SWS介绍 前面我们已经通过示例看到如果接收端的应用层一直没有读取数据,那么window size就会慢慢变小最终可能变为0,此时我们假设一种场景,如果应用层读取少量数据(比如十几bytes),接 ...
- TCP系列32—窗口管理&流控—6、TCP zero windows和persist timer
一.简介 我们之前介绍过,TCP报文中的window size表示发出这个报文的一端准备多少bytes的数据,当TCP的一端一直接收数据,但是应用层没有及时读取的话,数据一直在TCP模块中缓存,最终受 ...
- TCP系列34—窗口管理&流控—8、缓存自动调整
一.概述 我们之前介绍过一种具有大的带宽时延乘积(band-delay product.BDP)的网络,这种网络称为长肥网络(LongFatNetwork,即LFN).我们想象一种简单的场景,假设发送 ...
- TCP系列30—窗口管理&流控—4、Cork算法
一.Cork算法概述 Cork算法与Nagle算法类似,也有人把Cork算法称呼为super-Nagle.Nagle算法提出的背景是网络因为大量小包小包而导致利用率低下产生网络拥塞,网络发生拥塞的时候 ...
- TCP系列29—窗口管理&流控—3、Nagle算法
一.Nagle算法概述 之前我们介绍过,有一些交互式应用会传递大量的小包(称呼为tinygrams),这些小包的负载可能只有几个bytes,但是TCP和IP的基本头就有40bytes,如果大量传递这种 ...
- TCP系列28—窗口管理&流控—2、延迟ACK(Delayed Acknowledgments)
一.简介 之前的内容中我们多次提到延迟ACK(Delayed Ack),延迟ACK是在RFC1122协议中定义的,协议指出,一个TCP实现应该实现延迟ACK,但是ACK不能被过度延迟,协议给出延迟AC ...
随机推荐
- vue2.0 移动端,下拉刷新,上拉加载更多插件,修改版
在[实现丰盛]的插件基础修改[vue2.0 移动端,下拉刷新,上拉加载更多 插件], 1.修改加载到尾页面,返回顶部刷新数据,无法继续加重下一页 2.修改加载完成文字提示 原文链接:http://ww ...
- Python3练习:对员工信息文件,实现增删改查操作
1.练习要求: 2.数据文件(data_staff.txt) 1,Alex Li,22,13651054684,运维,2013-02-04 2,Jack Wang,20,13312331232,HR, ...
- day3-exercise
# Author: 刘佳赐-Isabelle October 28,2018 """ 1. 文件a1.txt内容 序号 部门 人数 平均年龄 备注 1 python 30 ...
- wordpress网站程序漏洞修复办法
近日wordpress被爆出高危的网站漏洞,该漏洞可以伪造代码进行远程代码执行,获取管理员的session以及获取cookies值,漏洞的产生是在于wordpress默认开启的文章评论功能,该功能在对 ...
- kali aquatone安装
https://www.jianshu.com/p/418eedb9d9c8
- 二维离散余弦变换(2D-DCT)
图像处理中常用的正交变换除了傅里叶变换以外,还有一些其它常用的正交变换,其中离散余弦变换DCT就是一种,这是JPEG图像压缩算法里的核心算法,这里我们也主要讲解JPEG压缩算法里所使用8*8矩阵的二维 ...
- ggnetwork
ggnetwork ggnetwork PeRl 简介 ggnetwork是根据ggplot2的语法,开发的用于网络图可视化的包.虽然igraph是优秀的network处理包,但是在可视化方面依然是弱 ...
- ACM数据结构-并查集
ACM数据结构-并查集 并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合 ...
- LeetCode初级算法的Python实现--排序和搜索、设计问题、数学及其他
LeetCode初级算法的Python实现--排序和搜索.设计问题.数学及其他 1.排序和搜索 class Solution(object): # 合并两个有序数组 def merge(self, n ...
- python 定位文件目录
经常有引用文件的地方,所以整理了一下如何定位文件目录的方法 定位当前文件的目录 import os file_path = os.path.dirname(__file__) 定位当前文件的父目录 i ...