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网络编程面试--滑动窗口的实现机制相关推荐

  1. tcp udp区别优缺点_Linux网络编程面试题--tcp和udp的区别

    (1)TCP是基于连接的,UDP是基于无连接的. (2)TCP的数据是可靠的,UDP的数据是不可靠的. (3)TCP的数据是有序的,UDP的数据是无序的. (4)TCP不保存用户边界,UDP保存用户边 ...

  2. TCP原理,Socket与网络编程入门

    TCP原理,Socket与网络编程入门 开篇 从互联网的诞生以来,网络程序逐渐普及.计算机网络将各个计算机连接到一起使它们可以通信.在现代,网络已成为我们十分重要的一部分.这次不搞些费脑子的东西,就让 ...

  3. Android之使用TCP和URL协议进行网络编程

    手机本身是作为手机终端使用的,因此它的计算能力,存储能力都是有限的.它的主要优势是携带方便,可以随时打开,而且手机通常总是处于联网状态.因此网络支持对于手机应用非常重要. Android完全支持JDK ...

  4. socket通信需要网线连接吗_从socket到TCP协议,透彻理解网络编程

    进行程序开发的同学,无论Web前端开发.Web后端开发,还是搜索引擎和大数据,几乎所有的开发领域都会涉及到网络编程.比如我们进行Web服务端开发,除了Web协议本身依赖网络外,通常还需要连接数据库,而 ...

  5. socket网络编程面试

    1.TCP和UDP的区别: 1)TCP提供面向连接的传输,通信前要先建立连接(三次握手机制):UDP提供无连接的传输,通信前不需要建立连接. 2)TCP提供可靠的传输(有序,无差错,不丢失,不重复): ...

  6. 网络编程面试汇总(C++)

    网络编程(金山) 1. 简述Tcp三次握手和四次挥手.(金山WPS) 看我的文章:握手挥手详解 2. 基本I/O模型了解多少.(金山WPS) 游双<高性能服务器编程>第八章8.3节,p12 ...

  7. tcp丢包率_网络编程 | TCP/IP基础知识

    在2017年10月深圳 Cocos 沙龙上,有幸结识了社区中大名顶顶的Colin,Shawn在论坛上第一次看到Colin的团队用CocosCreator制作的<热血暗黑>时就被深深地震撼到 ...

  8. 网络编程面试系列-01

    1. 应用层中常见的协议都有哪些? 应用层协议(application layer protocol)定义了运行在不同端系统上的应用程序进程如何相互传递报文. 应用层协议 1)DNS:一种用以将域名转 ...

  9. 基于TCP的C/S初级网络编程1

    导读 本篇实现C/S架构的"计算器",与大家分享. 看了会网络编程,便不自觉YY了下:实现一个简单的计算器,客户端给出简单的运算,服务端负责运算.这一小项目做起来很有意思,而且难度 ...

  10. [通俗易懂]深入理解TCP协议(下):RTT、滑动窗口、拥塞处理

    转自即时通讯网:http://www.52im.net/ 前言 此文为系列文章的下篇,如果你对TCP不熟悉的话,请先看看上篇<[通俗易懂]深入理解TCP协议(上):理论基础> . 上篇中, ...

最新文章

  1. 老铁 666!快手上市暴涨 200%,超 4000 员工成为千万富翁
  2. 关于char[]转换成LPCWSTR的有关问题
  3. 【JavaScript】Canvas绘图整理
  4. win7下wifi密码的保存路径
  5. Pytest学习-如何在用例代码中调用fixtrue时传入参数
  6. 终于找全啦!一二线城市知名互联网公司名单!对着找就对了...
  7. 剖析基于TUN/TAP虚拟网卡游戏加速器原理
  8. 期末大作业图书管理系统(c++)源代码
  9. 使用Echarts实现地图3D效果
  10. 归并算法(详细见解)
  11. 算法笔记---自底向上的赫夫曼编码
  12. Photoshop 换脸大法
  13. Android网络编程(一次网络请求)
  14. C++实现化学方程式配平
  15. 杂七杂八(4): win10设置启动时创建系统还原点
  16. Seaweedfs上传大文件_large file
  17. 关于曼哈顿距离下的最小生成树
  18. Mindspore | lenet 模型代码
  19. tcl/tk 的原生界面
  20. 安全态势感知系统java_代码分析平台CodeQL学习手记(十三) - 嘶吼 RoarTalk – 回归最本质的信息安全,互联网安全新媒体,4hou.com...

热门文章

  1. SQLPROFILER计算机用户操作数据SQL记录跟踪
  2. 4.串口操作之API篇 CreateFile
  3. js点击复制兼容Firefox
  4. 统计各班参加补考的人数
  5. connection对象的参数
  6. DBM经历(六)UAT了
  7. 第4章 最基础的分类算法-k近邻算法 kNN 学习笔记 下
  8. 20191121每日一句
  9. 每天1万步就叫健康吗?
  10. 通过脚本找到对应的物体