Linux网络编程面试--滑动窗口的实现机制
来源:互联网 发布:阿里云代金券转让 编辑:程序博客网 时间:2024/06/07 14:04
Linux网络编程面试--滑动窗口的实现机制
TCP发送方的窗口可以划分成四个部分:
1、已经发送并且确认的TCP段;
2、已经发送但是没有确认的TCP段;
3、未发送但是接收方准备接收的TCP段;
4、未发送并且接收方也为准备接受的TCP段。
TCP接受方的窗口可以划分成四个部分:
1、已经接收并且已经确认的TCP段;
2、已经接收但是没有确认的TCP段;
3、还未接收但是发送方已经发送的TCP段;
4、还未接收但是发送也不允许发送的TCP段。
滑动窗口实现面流的可靠性:
最基本的传输可靠性来源于“确认重传”机制。
TCP的滑动窗口的可靠性也是建立在“确认重传”基础上的。
发送窗口只有收到对端对于本段发送窗口内字节的ACK确认,才会移动发送窗口的左边界。
接收窗口只有在前面所有的段都确认的情况下才会移动左边界。当在前面还有字节未接收但收到后面字节的情况下,窗口不会移动,并不对后续字节确认。以此确保对端会对这些数据重传。
滑动窗的流控特性:
TCP的滑动窗口是动态的,我们可以想象成小学常见的一个数学题,一个水池,体积V,每小时进水量V1,出水量V2。当水池满了就不允许再注入了,如果有个液压系统控制水池大小,那么就可以控制水的注入速率和量。这样的水池就类似TCP的窗口。应用根据自身的处理能力变化,通过本端TCP接收窗口大小控制来对对对端的发送窗口流量限制。
应用程序在需要(如内存不足)时,通过API通知TCP协议栈缩小TCP的接收窗口。然后TCP协议栈在下个段发送时包含新的窗口大小通知给对端,对端按通知的窗口来改变发送窗口,以此达到减缓发送速率的目的。
0 0
- Linux网络编程面试--滑动窗口的实现机制
- Linux网络编程面试--流量控制和拥塞控制的实现机制
- linux网络编程之TCP/IP基础:TCP连接的建立和断开、滑动窗口
- 滑动窗口的实现
- linux网络编程之TCP/IP基础(四):TCP连接的建立和断开、滑动窗口
- linux网络编程之TCP/IP基础(四):TCP连接的建立和断开、滑动窗口
- linux网络编程之TCP/IP基础(四):TCP连接的建立和断开、滑动窗口
- linux网络编程之TCP/IP基础(四):TCP连接的建立和断开、滑动窗口
- linux网络编程之TCP/IP基础(四):TCP连接的建立和断开、滑动窗口
- 五、Linux网络编程-TCP/IP基础(五)滑动窗口协议、UDP特点、UDP报文格式
- 数据链路的滑动窗口机制
- 滑动窗口机制
- TCP滑动窗口机制
- 滑动窗口机制
- 滑动窗口机制
- 滑动窗口机制
- TCP滑动窗口机制
- 滑动窗口机制
- InputService
- ubuntu 命令
- Extjs MVC模式下传递参数 动态插入Item
- Android textView drawableXX图片大小
- hadoop 端口
- Linux网络编程面试--滑动窗口的实现机制
- Disable Keyboard Shortcuts and Combination Keys with C# (3): Disable Ctrl + Alt + Del
- 在UiAutomator2.0测试脚本中操作联系人数据
- js 双引号中引入变量
- 我的求职之路(一)
- Linux 克隆虚拟机引起的“Device eth0 does not seem to be present, delaying initialization”
- ExtJS之Ext.form.field.Number数字输入框
- Shell中的${}、##和%%使用范例
- Android 混淆代码总结