运输层:TCP滑动窗口

article/2025/9/30 19:51:05

一般来说,我们总是希望数据传输得更快一些。但是如果发送方发送的更快,接收方就可能来不及接收,这就会造成数据的丢失。所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。
滑动窗口就是用于实现流量控制的。可以看到下面关于滑动窗口进行流量控制的例子:

在这里插入图片描述
上图中,A作为发送端,B作为接收端,当A发送了三个数据报的时候(第三个数据报丢失),每个数据报100字节的长度,B做出了第一次流量控制,通过返回的rwnd(receiver window)接收窗口的大小为300字节,也就是告诉发送端还能再发送300个字节的大小,由于201-300字节的数据暂时未收到,所以ack=201,也就是期望下一次收到的起始字节序号为201,一直到500.并且ACK置为1,说明是确认收到,此时的确认号字段ack才有意义。
同理,后面还有两次流量控制,在每一次接收方发送数据报到接收方的时候,都会有这么三个关键字段的信息,一个是确认ACK,置为1的时候确认号字段才有效。第二个是确认号字段ack,说明希望收到的下一个数据报的起始字节序号。第三个rwnd,说明接收方还能发送的一个数据段字节的范围。

考虑一种特殊情况:假如接收方发送了rwnd=0的数据报给发送方(可能因为暂无缓存空间可以接收),但是之后有了多余的缓存空间,还想再接收来自发送方的数据。那么B给A发rwnd=400的数据报,但是这个数据报恰好在传输过程中丢失了,这个时候A在等B的非零窗口的通知,B在等A发送的数据,这样的话相互等待,形成了死锁的局面。
解决办法是:TCP为每个连接设有一个持续计时器,只要A收到了零窗口的通知,就启动了这个持续计时器,时间到期,A就给B发送一个零窗口探测报文段,B就可以给A发送一个窗口值,如果依旧为0,那么重新设置持续计时器,如果不是0,死锁的局面被打破,A就可以发送数据了。
我的理解:因为建立了TCP连接,大多数时候总是要发送数据的,要不然就可以关闭连接了,所以哪怕有时候接收方设置接收窗口为0,那很多时候都是由于没有缓存过于拥挤,所以发送方有理由相信不过一会就可以让它发送信息了,因为如上面的情况一样,可能准备让发送方发送数据的报文恰好丢失了。

参考书籍:《计算机网络(第七版)》谢希仁


http://chatgpt.dhexx.cn/article/GZC5IL9s.shtml

相关文章

TCP滑动窗口机制

滑动窗口机制 **作用:**利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制。 1 . A给B发送数据,则A有发送缓冲区,B有接收缓冲区。应用层的所有需要发送的数据都被放在了发送者的发送缓冲区。发送窗口是发送缓存中的一部分&am…

TCP 滑动窗口

TCP滑动窗口主要有两个作用,可靠性、流控 TCP 如果都以一个包为单位,每发一个包进行一次确认应答的处理,这样的传输方式包的往返的时间越长和包的数量越多其通信性能就越低。 为了解决这个问题,TCP引入了窗口这个概念。在往返时…

tcp滑动窗口原理

参考:​​​计算机网络-传输层_wiscourper的博客-CSDN博客 TCP 滑动窗口 作用: 1. 提供TCP可靠性:对发送的数据进行确认2. 流量控制:窗口大小随链路变化 一、TCP窗口机制 TCP中窗口大小是指tcp协议一次传输多少个数据。因为TCP是…

TCP的滑动窗口

1. 引入滑动窗口的原因 如果没有滑动窗口,TCP每发送一个数据,都需要等待这一次确认应答。只有收到了上一个数据包的应答,才能再发送下一个。这样效率太低了当引入了滑动窗口机制后,就可以采取累计确认机制。TCP引入了窗口这个概念…

TCP滑动窗口原理终于清楚了!

我们在学习计算机网络的时候,遇到很多知识点。即便是背的滚瓜烂熟,让你去辨别知识点背后的深层逻辑的时候,可能就手足无措了。 比如小邱去面A公司的时候就被问到: 事实上,这个问题很大程度弥补我计算机网络的“漏洞”…

TCP滑动窗口模拟实战

1.TCP滑动窗口机制 客户端与服务端之间的通信是一个数据传输的过程,消息以数据包形式进行传输。 在传输的过程中,通过滑动窗口机制来同时传输多个数据包;发送端根据接收端的处理能力,适当控制发送窗口大小,实现流量控…

TCP滑动窗口机制(附图例)

文章目录 前言一、滑动窗口的引出二、流量控制2.1 16位窗口大小2.2 发送缓冲区2.3 逐步解析滑动窗口运作 三、快重传机制四、拥塞控制(仅供参考)五、延迟应答与捎带应答(略)总结 前言 博主个人社区:开发与算法学习社区…

TCP 滑动窗口(快速重传)

目录 一、滑动窗口的来由 二、滑动窗口 1、滑动窗口模型 2、滑动窗口可能出现的状况 (1) 客户端发送的报文丢了(快重传机制) (2) 服务端发送的ACK丢了(先收到了排序靠后的ACK) 三、滑动窗口大小为0时,何时才能继…

TCP滑动窗口

1、滑动窗口的概念 TCP每发送一个数据,都需要进行一次应答。当收到了上一个应答,在发下一个数据,但这种方式效率比较低。数据包往返时间越长,通信的效率就越低。   为了解决这个问题,TCP引入了窗口概念。即在接收窗口…

TCP 滑动窗口详解(非常实用)

一、滑动窗口简介 滑动窗口(Sliding window)是一种流量控制技术。早期的网络通信中,通信双方不会考虑网络的 拥挤情况直接发送数据。由于大家不知道网络拥塞状况,同时发送数据,导致中间节点阻塞掉包, 谁也发…

TCP滑动窗口机制(重要)

本文参考了一些优秀的书籍->图解TCP/IP,TCP协议卷一,小林coding,还有等等的知乎,百度. 小林coding 小林coding 知乎牛客的文章 : 万字长文 | 23 个问题 TCP 疑难杂症全解析_技术交流_牛客网 这篇文章是关于TCP的又一个重要机制-->滑动窗口,下面是这篇文章的思维导图: 目…

TCP滑动窗口详解

相较于UDP,TCP有以下区别: 1、可靠传输 2、流量控制 这两个功能都是依靠滑动窗口来实现的,本文就来解密TCP中的滑动窗口。 TCP实现可靠传输依靠的有 序列号、自动重传、滑动窗口、确认应答等机制。 序列号 首先我们说下序列号&#xff0c…

计算机视觉——SIFT图像匹配算法

第二章:SIFT(尺度不变特征变换) 1. SIFT简介1.1 SIFT算法特点1.2 SIFT特征检测的步骤 2. 尺度空间3. 高斯模糊3.1 高斯模糊3.2 高斯金字塔 4. DoG金字塔4.1 DoG局部极值检测4.2 DoG去除边缘响应4.2.1低对比度的响应点4.2.2不稳定的边缘响应点…

SIFT图像匹配原理及python实现(源码实现及基于opencv实现)

写在前面 黄宁然,看过你看过的算法,数学不好是硬伤。 问题来源: An***** xue100: https://bbs.csdn.net/topics/*********?spm1001.2014.3001.**77 (1)相机置于地面,离天花板的高度始终不变。在某位置拍…

计算机视觉——sift特征匹配+opencv(包含sift的低于3.4.3的opencv安装方法)

文章目录 实验环境环境配置(低于3.4.3的opencv安装方法)虚拟环境的搭建(非必要)局部图像描述子Harris 角点检测基本原理SIFT特征提取代码实现运行实例匹配图像展示匹配结果和分析 实验环境 系统:Ubuntu16.04 语言&…

使用 Javascript 和 OpenCV.js 进行人脸检测

大家好,我们将研究如何使用常规 Javascript、HTML Canvas 和 OpenCV.js 库从图像中检测人脸。 让我们先看一些例子,然后我们将继续编写代码并解释 如果您需要查看完整的代码库刚刚获得我的 github 存储库 GitHub - reactcodes/face-detection-javascript…

图像处理:局部描述子SIFT算法

目录 0、关于SIFT的介绍 1、兴趣点 2、描述子 SIFT算法实现 1.实例化sift 2.利用sift.detectAndCompute()检测关键点并计算 3.将关键点检测结果绘制在图像上 Opencv实现 总结 0、关于SIFT的介绍 SIFT,即尺度不变特征变换,一种局部特征描述子&…

SIFT3D点云关键点提取详细介绍

1.引言 SIFT3D的理论基础完全是从图像特征SIFT2D中迁移类比过来的,类似的还有Harris3D和Harris6D的理论也是来源于Harris2D的,这些点云特征在PCL库中都有具体的实现。Harris3D和Harris6D目前已经有很好的博客和视频讲解了但是SIFT3D却没有一个比较好的介…

java sift 图片相似度,简单快速的图像相似性比较方法

我最近也面临同样的问题,为了解决这个问题(简单快速的算法比较两个图像),我贡献了 img_hash module 要打开“控制”,您可以从 this link . img_哈希模块提供六种图像哈希算法,非常容易使用。 代码示例 起源Lena 模糊莉娜 调整Lena的大小 移动Lena #include #include #include…

图像特征提取(二)——SIFT算法详解

转载自:http://blog.csdn.net/zddblog/article/details/7521424尺度不变特征变换匹配算法详解 Scale Invariant Feature Transform(SIFT)Just For Fun zdd zddmailgmail.com or (zddhubgmail.com) 对于初学者,从David G.Lowe的论文到实现,有许多鸿沟…