tcp欢动窗口机制_Linux网络编程面试--滑动窗口的实现机制
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协议栈在下个段发送时包含新的窗口大小通知给对端,对端按通知的窗口来改变发送窗口,以此达到减缓发送速率的目的。
tcp欢动窗口机制_Linux网络编程面试--滑动窗口的实现机制相关推荐
- tcp udp区别优缺点_Linux网络编程面试题--tcp和udp的区别
(1)TCP是基于连接的,UDP是基于无连接的. (2)TCP的数据是可靠的,UDP的数据是不可靠的. (3)TCP的数据是有序的,UDP的数据是无序的. (4)TCP不保存用户边界,UDP保存用户边 ...
- TCP原理,Socket与网络编程入门
TCP原理,Socket与网络编程入门 开篇 从互联网的诞生以来,网络程序逐渐普及.计算机网络将各个计算机连接到一起使它们可以通信.在现代,网络已成为我们十分重要的一部分.这次不搞些费脑子的东西,就让 ...
- Android之使用TCP和URL协议进行网络编程
手机本身是作为手机终端使用的,因此它的计算能力,存储能力都是有限的.它的主要优势是携带方便,可以随时打开,而且手机通常总是处于联网状态.因此网络支持对于手机应用非常重要. Android完全支持JDK ...
- socket通信需要网线连接吗_从socket到TCP协议,透彻理解网络编程
进行程序开发的同学,无论Web前端开发.Web后端开发,还是搜索引擎和大数据,几乎所有的开发领域都会涉及到网络编程.比如我们进行Web服务端开发,除了Web协议本身依赖网络外,通常还需要连接数据库,而 ...
- socket网络编程面试
1.TCP和UDP的区别: 1)TCP提供面向连接的传输,通信前要先建立连接(三次握手机制):UDP提供无连接的传输,通信前不需要建立连接. 2)TCP提供可靠的传输(有序,无差错,不丢失,不重复): ...
- 网络编程面试汇总(C++)
网络编程(金山) 1. 简述Tcp三次握手和四次挥手.(金山WPS) 看我的文章:握手挥手详解 2. 基本I/O模型了解多少.(金山WPS) 游双<高性能服务器编程>第八章8.3节,p12 ...
- tcp丢包率_网络编程 | TCP/IP基础知识
在2017年10月深圳 Cocos 沙龙上,有幸结识了社区中大名顶顶的Colin,Shawn在论坛上第一次看到Colin的团队用CocosCreator制作的<热血暗黑>时就被深深地震撼到 ...
- 网络编程面试系列-01
1. 应用层中常见的协议都有哪些? 应用层协议(application layer protocol)定义了运行在不同端系统上的应用程序进程如何相互传递报文. 应用层协议 1)DNS:一种用以将域名转 ...
- 基于TCP的C/S初级网络编程1
导读 本篇实现C/S架构的"计算器",与大家分享. 看了会网络编程,便不自觉YY了下:实现一个简单的计算器,客户端给出简单的运算,服务端负责运算.这一小项目做起来很有意思,而且难度 ...
- [通俗易懂]深入理解TCP协议(下):RTT、滑动窗口、拥塞处理
转自即时通讯网:http://www.52im.net/ 前言 此文为系列文章的下篇,如果你对TCP不熟悉的话,请先看看上篇<[通俗易懂]深入理解TCP协议(上):理论基础> . 上篇中, ...
最新文章
- 老铁 666!快手上市暴涨 200%,超 4000 员工成为千万富翁
- 关于char[]转换成LPCWSTR的有关问题
- 【JavaScript】Canvas绘图整理
- win7下wifi密码的保存路径
- Pytest学习-如何在用例代码中调用fixtrue时传入参数
- 终于找全啦!一二线城市知名互联网公司名单!对着找就对了...
- 剖析基于TUN/TAP虚拟网卡游戏加速器原理
- 期末大作业图书管理系统(c++)源代码
- 使用Echarts实现地图3D效果
- 归并算法(详细见解)
- 算法笔记---自底向上的赫夫曼编码
- Photoshop 换脸大法
- Android网络编程(一次网络请求)
- C++实现化学方程式配平
- 杂七杂八(4): win10设置启动时创建系统还原点
- Seaweedfs上传大文件_large file
- 关于曼哈顿距离下的最小生成树
- Mindspore | lenet 模型代码
- tcl/tk 的原生界面
- 安全态势感知系统java_代码分析平台CodeQL学习手记(十三) - 嘶吼 RoarTalk – 回归最本质的信息安全,互联网安全新媒体,4hou.com...