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

2023-11-06

一、滑动窗口简介

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

        TCP 中采用滑动窗口来进行传输控制,滑动窗口的大小意味着接收方还有多大的缓冲区可以用于 接收数据。发送方可以通过滑动窗口的大小来确定应该发送多少字节的数据。当滑动窗口为 0 时,发送方一般不能再发送数据报。滑动窗口是 TCP 中实现诸如 ACK 确认、流量控制、拥塞控制的承载结构。

说明:

        1、可以把窗口理解为缓冲区的大小;

        2、滑动窗口的大小会随着发送数据和接收数据而变化;

        3、通信双方都有发送缓冲区和接收缓冲区;

                服务器:

                        发送缓冲区(发送缓冲区窗口)
                        接收缓冲区(接收缓冲发窗己)

                客户端:
                        发送缓冲区(发送缓冲区窗口)
                        接收缓冲区(接收缓冲发窗己)

二、滑动窗口图文解释

 1、发送缓冲区

        白色格子:空闲的空间;

        灰色格子:数据己经发送出去了,但是还没有被接收;

        紫色格子:还没有发送出去的数据;

 2、接收缓冲区

        白色格子:空闲的空间;

        紫色格子:还没有发送出去的数据;

三、滑动窗口工作流程

# mss:Maximum segment size(一条数据的最大的数据量)

# win:滑动窗口

1、客户端向服务器发起连接,客户端的滑动窗口是4096,一次发送的最大数据量是1460(第一次握手);

2、服务器接收连接情况,告诉客户端服务器的窗口大小是6144,一次发送的最大数据量10243(第二次握手);

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、第15、16次,通知客户端滑动窗口的大小;

11、第17次,第三次挥手服务器端给客户端发送FIN ,请求断开连接;

12、第18次,第四次回收各户端同意了服务器端的断开请求。

说明:1-3是三次握手,4-9是进行通信;第一次和第二次握手时不能带有通信数据,因为还没有建立连接,第三次握手时可以带通信数据;

四、TCP 通信图解

1、三次握手

2、四次挥手 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TCP 滑动窗口详解(非常实用) 的相关文章

  • 在阿里云ECS云服务器上部署和使用开源的应用程序容器引擎Docker

    Docker 是一个开源的应用程序容器引擎 具有可移植性 可扩展性 高安全性和可管理性等优势 它允许开发人员将应用程序和依赖项打包到可移植容器中 从而在 Linux 机器上高效构建 部署和管理应用程序 阿里云提供Docker镜像仓库 用于快
  • 广告竞价策略:激发广告变现潜能的关键

    在数字化时代 广告已经成为企业推广品牌 产品和服务的关键手段之一 为了最大程度地发挥广告的效果 广告竞价策略成为广告主和数字营销专业人士关注的焦点 通过巧妙运用竞价策略 广告主可以在激烈的市场竞争中脱颖而出 实现广告变现的潜能 admaoy
  • “性能压测揭密:关键指标分析!“

    在进行全链路压测和性能测试时 需要关注多个关键性能指标 KPIs 来评估系统的性能表现 以下是一些常见的性能测试指标 1 吞吐量 Throughput 系统在单位时间内能够处理的请求数量或事务数量 通常以每秒请求数 RPS TPS 来衡量
  • 服务器超线程的好处

    服务器超线程的好处 1 提高性能 超线程通过提高整体系统吞吐量显着提高服务器性能 通过允许多个线程在单个物理内核上同时执行 超线程减少了空闲时间并最大限度地利用了可用资源 这会加快任务执行速度并缩短应用程序的响应时间 尤其是在多线程工作负载
  • 浅谈能耗系统在马来西亚连锁餐饮业的应用

    1 背景信息 Background 针对连锁餐饮业能耗高且能源管理不合理的问题 利用计算机网络技术 通讯技术 计量控制技术等信息化技术 实现能源资源分类分项计量和能源资源运行监管功能 清晰描述各分店总的用能现状 实时监测各供电回路的电压 电
  • Linux 软件安装以及管理

    本篇主要记录常用的软件安装和管理方式 主要是 yum rpm dnf apt pip 大致都是一样的 主要是部分软件提供了解决依赖的功能 内容不包括源码安装 源码安装情况相对比较复杂 后续有时间再补充 约定 案例所用模板软件均为 pytho
  • centos系统有什么好处?

    CentOS是一种基于开源代码的Linux操作系统 它有以下几个优势 1 稳定性 CentOS是一种非常稳定的操作系统 它的代码经过了严格的测试和审查 因此它非常适合作为服务器操作系统使 用 2 安全性 由于CentOS是基于开源代码的操作
  • 38条Web测试经验分享

    1 页面链接检查 每一个链接是否都有对应的页面 并且页面之间切换正确 可以使用一些工具 如LinkBotPro File AIDCS HTML Link Validater Xenu等工具 LinkBotPro不支持中文 中文字符显示为乱码
  • 用户数据中的幸存者偏差

    幸存者偏差 Survivorship bias 是一种常见的逻辑谬误 意思是没有考虑到筛选的过程 忽略了被筛选掉的关键信息 只看到经过筛选后而产生的结果 先讲个故事 二战时 无奈德国空防强大 盟军战机损毁严重 于是军方便找来科学家统计飞机受
  • 2024年金三银四网络安全考试试题

    2023年金三银四网络安全考试试题 1 关于数据使用说法错误的是 A 在知识分享 案例中如涉及客户网络数据 应取敏感化 不得直接使用 B 在公开场合 公共媒体等谈论 传播或发布客户网络中的数据 需获得客户书面授权或取敏感化 公开渠道获得的除
  • 远程控制软件安全吗?一文看懂ToDesk、RayLink、TeamViewer、Splashtop相关安全机制_raylink todesk

    目录 一 前言 二 远程控制中的安全威胁 三 国内外远控软件安全机制 ToDesk RayLink Teamviewer Splashtop 四 安全远控预防 一 前言 近期 远程控制话题再一次引起关注 据相关新闻报道 不少不法分子利用远程
  • socket网络编程几大模型?看看CHAT是如何回复的?

    CHAT回复 网络编程中常见的有以下几种模型 1 阻塞I O模型 Blocking I O 传统的同步I O模型 一次只处理一个请求 2 非阻塞I O模型 Non blocking I O 应用程序轮询调用socket相关函数检查请求 不需
  • 基于java的物业管理系统设计与实现

    基于java的物业管理系统设计与实现 I 引言 A 研究背景和动机 物业管理系统是指对物业进行管理和服务的系统 该系统需要具备对物业信息 人员信息 财务信息等进行管理的能力 基于Java的物业管理系统设计与实现的研究背景和动机主要体现在以下
  • 网络安全基础知识面试题库

    1 基于路由器的攻击手段 1 1 源IP地址欺骗式攻击 入侵者从外部传输一个伪装成来自内部主机的数据包 数据包的IP是 内网的合法IP 对策 丢弃所有来自路由器外端口 却使用内部源地址的数据包 1 2 源路由攻击 入侵者让数据包循着一个不可
  • 国外拨号VPS指南:开启你的全球网络之旅

    在当今数字化时代 互联网已经成为了我们生活的一部分 而要在全球范围内畅通无阻地访问互联网 拥有一个可靠的国外拨号VPS是非常重要的 无论您是为了工作 学习还是娱乐 国外拨号VPS都可以为您提供更广泛的网络体验 本文将为您提供国外拨号VPS的
  • 服务器VPS是什么意思?一文了解其含义与重要性

    在今天的数字时代 服务器扮演着至关重要的角色 它们是网站 应用程序和在线业务的基石 但是 你是否听说过VPS 本文将深入探讨什么是服务器VPS 以及为什么它在今天的互联网世界中如此重要 什么是服务器VPS 服务器的基本概念 在我们深入探讨V
  • 搞懂 三次握手四次挥手

    计算机网络体系结构 在学习TCP 三次握手四次挥手之前 让我们先来看下计算机网络分层 主要分为OSI模型和TCP IP模型 OSI模型比较复杂且学术化 所以我们实际使用的TCP IP模型 以连接Mysql服务器为例理解这五层 应用层 应用层
  • 网络安全(黑客)自学启蒙

    一 什么是网络安全 网络安全是一种综合性的概念 涵盖了保护计算机系统 网络基础设施和数据免受未经授权的访问 攻击 损害或盗窃的一系列措施和技术 经常听到的 红队 渗透测试 等就是研究攻击技术 而 蓝队 安全运营 安全运维 则研究防御技术 作
  • ESP10B 锁定连接器

    ESP10B 锁定连接器 ESP10B 电机新增内容包括双极型号标准 NEMA 尺寸 17 23 和 34 的步进电机现在包括输出扭矩范围从 61 盎司英寸到 1291 盎司英寸的双极型号 该电机配有带锁定连接器的尾缆 可轻松连接 每转可步
  • 【安全】网络安全态势感知

    文章目录 一 态势感知简介 1 概念 2 形象举例 3 应具备的能力 二 为什么要态势感知 为什么网络安全态势感知很重要 三 态势感知系统的功能 四 如何评估态势感知的建设结果 五 什么是态势感知的三个层级 四 业界的态势感知产品 1 安全

随机推荐

  • python函数初步了解

    文章目录 什么是函数 python中函数的创建和调用 python中函数的变量作用域 全局变量 局部变量 python中的函数参数 形参 实参 默认参数 可变参数 关键字参数 匿名函数 递归函数 什么是函数 函数是组织好的 可重复使用的 用
  • vue路由props传递参数

    props分为三种形式 props为对象 props为布尔值 这种只能接收params动态路由的参数 props为函数 可以接收query和params参数 推荐 import Vue from vue import VueRouter f
  • 大数据技术之(一) Spark-Core

    第1章 Spark 概述 1 Spark是什么 Spark 是一种基于内存的快速 通用 可扩展的大数据分析计算引擎 2 Spark and Hadoop 在之前的学习中 Hadoop 的 MapReduce 是大家广为熟知的计算框架 那为什
  • sqli-labs通关(less31~less40)

    目录 Less31 Less32 Less33 Less34 Less35 Less36 Less37 Less38 Less39 Less40 Less31 这关和前两关也只是闭合不同的差别 思路还是通过HTTP参数污染绕过WAF 爆数据
  • Dubbo3.0如何实现进行路由扩展

    Dubbo3 0如何实现进行路由扩展 前言 关键类介绍 RouterFactory 接口 CacheableRouterFactory抽象类 Router 接口 AbstractRouter 抽象类 RouterChain 类 怎么扩展路由
  • 加密货币技术架构(一)——BTC、ETH

    一 BTC 比特币 一 项目背景 BTC 比特币 是第一个基于去中心化 采用点对点网络与共识主动性 开放源代码 以区块链作为底层技术的加密货币 身为世界上第一个加密货币 市值毋庸置疑是最大的 并且历经13年的牛熊转换 坐拥最稳加密货币宝座
  • struct 和 typedef struct 的区别

    文章目录 前言 struct和typedef struct的区别 C语言中的struct和typedef struct struct typedef struct C 中的struct和typedef struct struct typed
  • 搜索引擎solr系列---solr分词配置

    分词我理解的是 输入的一句话 按照它自己定义的规则分为常用词语 首先 Solr有自己基本的类型 string int date long等等 对于string类型 比如在你的core conf manage schema文件中 配置一个字段
  • 【教程】Matrikon OPC使用教程连载(二)

    MatrikonOPC介绍 Matrikon 是基于OPC UA和基于OPC的控制自动化数据互操作性产品的供应商 提供自动化厂商的高级OPC UA开发工具包 适用于从嵌入式设备到云应用的所有产品线 对于终端用户客户 Matrikon提供了关
  • 【elementplus】解决el-table的固定列不固定了

    如图所示 只要只有表头还是固定的 表体不固定了 解决方法 取消给表格固定列设置的position 我这里是因为设置了position relative导致的 ep table fixed column right position rela
  • Cookie的创建和读取和常用方法

    b 如何创建 Cookie Servlet 程序中的代码 public class CookieServlet extends BaseServlet 创建Cookie param req param resp throws Servlet
  • 数据结构知识点复习

    第一章 数据结构概述 基本概念与术语 数据 数据是对客观事物的符号表示 在计算机科学中是指所有能输入到计算机中并被计算机程序所处理的符号的总称 数据元素 数据元素是数据的基本单位 是数据这个集合中的个体 也称之为元素 结点 顶点记录 补充
  • MyBatis中 sql标签和include标签的使用

  • Flutter报错Building with plugins requires symlink support的解决方法

    错误 Building with plugins requires symlink support Please enable Developer Mode in your system settings Run start ms sett
  • js 识别当前设备信息 是否是移动端

    一 navigator userAgent 对象 最简单的方法就是分析浏览器的 user agent 字符串 它包含了设备信息 JS 通过navigator userAgent属性拿到这个字符串 只要里面包含mobi android iph
  • 小程序实现弹幕功能-无限循环,不会重叠

    以下是支付宝小程序代码 先上效果图 以下是axml代码
  • QT小例子GUI(主)线程与子线程之间的通信

    QT小例子GUI 主 线程与子线程之间的通信 在主线程上 可以控制子线程启动 停止 清零 如果子线程启动的话 每一秒钟会向主线程发送一个数字 让主线程更新界面上的数字 ifndef TQT H define TQT H include
  • Caffe中 math_functions 分析

    本篇博客转载自 Caffe源码 一 math functions 分析 math function 定义了caffe 中用到的一些矩阵操作和数值计算的一些函数 这里以float类型为例做简单的分析 1 caffe cpu gemm temp
  • huggingface transformers 预训练模型加载参数设置

    说明 1 proxies 服务器无法直接访问互联网需通过代理访问 2 cache dir model及dadaset文件过大多次容易导致服务器存储过高 手工选择存储位置 model tokenizer from pretrained ber
  • TCP 滑动窗口详解(非常实用)

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