4.18、TCP滑动窗口

news2025/2/21 22:41:39

4.18、TCP滑动窗口

  • 1.滑动窗口的介绍
  • 2.滑动窗口通信的例子

1.滑动窗口的介绍

滑动窗口(Sliding window)是一种流量控制技术。早期的网络通信中,通信双方不会考虑网络的拥挤情况直接发送数据。由于大家不知道网络拥塞状况,同时发送数据,导致中间节点阻塞掉包,谁也发不了数据,所以就有了滑动窗口机制来解决此问题。滑动窗口协议是用来改善吞吐量的一种技术,即容许发送方在接收任何应答之前传送附加的包。接收方告诉发送方在某一时刻能送多少包(称窗口尺寸)。

TCP 中采用滑动窗口来进行传输控制,滑动窗口的大小意味着接收方还有多大的缓冲区可以用于接收数据。发送方可以通过滑动窗口的大小来确定应该发送多少字节的数据。当滑动窗口为 0时,发送方一般不能再发送数据报。

滑动窗口是 TCP 中实现诸如 ACK 确认、流量控制、拥塞控制的承载结构。

  • 窗口理解为缓冲区的大小
  • 滑动窗口的大小会随着发送数据和接收数据而变化。
  • 通信的双方都有发送缓冲区和接收数据的缓冲区
    • ;服务器:
      • 发送缓冲区(发送缓冲区的窗口)
      • 接收缓冲区(接收缓冲区的窗口)
    • 客户端
      • 发送缓冲区(发送缓冲区的窗口)
      • 接收缓冲区(接收缓冲区的窗口)

在这里插入图片描述

  • 发送方的缓冲区:
    • 白色格子:空闲的空间
    • 灰色格子:数据已经被发送出去了,但是还没有被接收
    • 紫色格子:还没有发送出去的数据
  • 接收方的缓冲区:
    • 白色格子:空闲的空间
    • 紫色格子:已经接收到的数据

2.滑动窗口通信的例子

在这里插入图片描述

# mss: Maximum Segment Size(一条数据的最大的数据量)
# win: 滑动窗口
1. 客户端向服务器发起连接,客户单的滑动窗口是4096,一次发送的最大数据量是1460
2. 服务器接收连接情况,告诉客户端服务器的窗口大小是6144,一次发送的最大数据量是1024
3. 第三次握手
4. 4-9 客户端连续给服务器发送了6k的数据,每次发送1k
5.10次,服务器告诉客户端:发送的6k数据以及接收到,存储在缓冲区中,缓冲区数据已经处理了2k,窗
口大小是2k
6.11次,服务器告诉客户端:发送的6k数据以及接收到,存储在缓冲区中,缓冲区数据已经处理了4k,窗
口大小是4k
7.12次,客户端给服务器发送了1k的数据
8.13次,客户端主动请求和服务器断开连接,并且给服务器发送了1k的数据
9.14次,服务器回复ACK 8194, a:同意断开连接的请求 b:告诉客户端已经接受到方才发的2k的数据
c:滑动窗口2k
10.1516次,通知客户端滑动窗口的大小
11.17次,第三次挥手,服务器端给客户端发送FIN,请求断开连接
12.18次,第四次回收,客户端同意了服务器端的断开请求

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/426141.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

客户案例 | 迎接智能化浪潮,传统水厂数字化势在必行

关键发现 客户痛点:传统水厂业务离散,无法实现数据实时同步,为收集和分析处理数据并辅助决策带来障碍。需要智能化管理系统帮助水厂提升管理效率,优化管理流程,实现数字化、智能化的目标。 解决方案:天津腾…

你说你还不会Redis?别怕,今天带你搞定它!

Redis 前言 本文章是我学习过程中,不断总结而成,篇幅较长,可以根据选段阅读。 全篇17000字,图片 十三 张,预计用时1小时。 认识Redis 什么是Redis? 要使用一门技术,首先要知道这门技术是什…

pytorch进阶学习(三):在数据集数量不够时如何进行数据增强

对图片数据增强,可以对图片实现: 1. 尺寸放大缩小 2. 旋转(任意角度,如45,90,180,270) 3. 翻转(水平翻转,垂直翻转) 4. 明亮度改变(变…

一零五五、mysql8.0高版本数据导入5.6低版本通解

背景 今日想将本机的mysql(8.0)中的数据库文件导出到远程服务器中的mysql(5.6)中,刚开始用source 一直报一大串ERROR,由于数据量比较大,那就直接用图形化工具导吧,连接上远程数据库&…

【常见CSS扫盲之渐变效果】好看的24种CSS渐变效果汇总(附源码)

【写在前面】web开发过程中,页面背景色想要一个渐变的效果很多时候网上一找全是官网那种很丑的色系,尤其是一些按钮和一些大背景色时候,不能搞得很yellow,今天我就做个工具人给大家罗列一些我在工作过程中总结的一些好看的渐变效果…

51单片机(8051系列)外部时钟

OUT(输出引脚),IN(输入引脚)的区别 OUT(输出引脚) 输入引脚连接输入设备IN(输入引脚) 输出引脚连接输出设备外部时钟和内部时钟的区别 1、XTAL1和XTAL2引脚 内部时钟方式:必须在XTAL1和XTAL2引脚两端跨…

观早报 | 特斯拉储能超级工厂落沪;“华尔街之狼”募资550亿

今日要闻:京东拟今年发布千亿级产业大模型;特斯拉储能超级工厂落沪;“华尔街之狼”募资550亿;英特尔落户海南三亚;日本人要搞二次元老婆版 ChatGPT京东拟今年发布千亿级产业大模型 据《科创板日报》消息,京…

机器学习——L1范数充当正则项,让模型获得稀疏解,解决过拟合问题

问:使用L2范数正则项比L1范数正则项得到的是更为稀疏的解。 答:错误,L1范数正则项得到的是更稀疏的解。因为在L1正则项中,惩罚项是每个参数绝对值之和;而在L2正则项中,惩罚项是每个参数平方的和。L1正则项…

数字孪生智慧应急怎么实现?

根据国家对智慧应急建设的指示精神以及城市发展的迫切需求,智慧应急体系的建设应当从“大应急、大安全”的业务关切出发,聚焦“智慧应急”需求,融合对安全推进城市韧性建设的思考,将人工智能、物联网、大数据等高科技手段与应急救…

深度学习----DenseNet

1. 结构图 Input Shape : (3, 7, 7) — Output Shape : (2, 3, 3) — K : (3, 3) — P : (1, 1) — S : (2, 2) — D : (2, 2) — G : 1 The parts of this post will be divided according to the following arguments. These arguments can be found in the Pytorch documen…

STM32CubeMx+HAL库实现USB CDC+MSC复合设备

之前的文章中介绍过STM32的USB应用,包括虚拟串口(CDC)和大容量存储设备(MSC)。今天来介绍USB实现CDC和MSC复合设备的方法。 硬件:STM32F407VET6 软件:STM32CubeMx v6.5F4库v1.27.1 编译环境&a…

行内元素之间出现空白间隙及解决办法

这里的行内元素包括 display 为 inline 和 inline-block 的元素。 基本布局 <div class"container"><span class"item">1</span><span class"item">2</span><span class"item">3</span> …

15. unity官网资源商店的免费资源引入自己项目中

1. 说明 在unity开发中可以在官网引入一些免费的资源&#xff0c;免得自己找不到合适的素材 第一步&#xff1a; 首先进入Unity资源商店官网&#xff0c;https://assetstore.unity.com/&#xff0c;计入并登录自己的unity账号&#xff0c;如果没账号&#xff0c;可以注册一个…

什么是堆叠面积图?如何解读?

简介 在之前的文章中提到过&#xff0c;面积图&#xff08;Area Chart&#xff09;是在折线图的基础上&#xff0c;对折线以下区域进行颜色填充&#xff0c;主要是用于在连续间隔或时间跨度上展示数值。而今天我们要说的是堆叠面积图&#xff08;Stacked Area Chart&#xff0…

一切都是命中注定的!

“光锥之内就是命运”&#xff0c;这是刘慈欣的《三体黑暗森林》里一句话&#xff0c;如果我们看到一件事情正在发生&#xff0c;那么它早在过去无论是几秒前还是几千年前&#xff0c;就已经发生了&#xff0c;我们无法改变这个命运。 孔明叹曰&#xff1a;“谋事在人&#xf…

( “树” 之 DFS) 671. 二叉树中第二小的节点 ——【Leetcode每日一题】

671. 二叉树中第二小的节点 给定一个非空特殊的二叉树&#xff0c;每个节点都是正数&#xff0c;并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话&#xff0c;那么该节点的值等于两个子节点中较小的一个。 更正式地说&#xff0c;即 root.val min(roo…

VSCODE 配置MARKDOWN

参考博客 VSCode如何将Markdown转为PDF 一篇博客让你学会在vscode上编写markdown 1&#xff1a;VSCODE 上配置插件 Markdown All in OneMakrdown Preview EnhancedPaste ImageMarkdown Pdf 2&#xff1a;插件详解 1&#xff1a;Makrdown Preview Enhanced 用来进行MARK…

Harmony OS 开发指南——源码下载和编译

本文介绍了如何下载鸿蒙系统源码&#xff0c;如何一次性配置可以编译三个目标平台&#xff08;Hi3516&#xff0c;Hi3518和Hi3861&#xff09;的编译环境&#xff0c;以及如何将源码编译为三个目标平台的二进制文件。 坑点总结&#xff1a; 下载源码基本上没有太多坑&#xf…

Rocket MQ详解

Rocket MQ 一&#xff0c;是啥&#xff0c;从哪来 RocketMQ是一个开源的分布式消息中间件&#xff0c;最初由阿里巴巴集团开发。它的设计目标是为了在高并发、高吞吐量的场景下&#xff0c;实现可靠的消息传输&#xff0c;并且具有良好的可伸缩性和可扩展性。 RocketMQ支持多…

杨志丰:一文详解,什么是单机分布式一体化?

欢迎访问 OceanBase 官网获取更多信息&#xff1a;https://www.oceanbase.com/ 3 月 25 日&#xff0c;第一届 OceanBase 开发者大会在北京举行&#xff0c;OceanBase 首席架构师杨志丰&#xff08;花名&#xff1a;竹翁&#xff09;带来了 《OceanBase 的单机分布式一体化》 的…