0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

通俗地讲解TCP的固定窗口和滑动窗口

如意 来源:厦门微思网络 作者:小微 2020-08-13 09:56 次阅读

固定窗口

TCP 还提供了流量控制机制。 流量控制可以调整给定会话中源和目的之间的数据流速,有助于保持 TCP 传输的可靠性。 流量控制的实施方法包括限制一次可以转发的数据段数量,并要求在发送更多数据段之前确认接收。

要实施流量控制,TCP 要确定的第一件事是目的设备可以接受的数据段数量。 TCP 报头包括一个称为“窗口大小”的 16 位字段。 这是 TCP 会话的目的设备一次可以接受和处理的字节数。 通过源和目标之间的三次握手,会话开始时即可确定初始窗口大小。 一旦同意,源设备必须根据窗口大小限制发送到目的设备的数据段数量。 只有源设备收到数据段已接收的确认之后,才能继续发送更多会话数据。

在接收确认的延迟过程中,发送方不会发送任何额外数据段。 如果网络拥堵,或者接收主机资源紧张,延迟时间可能就更长。 延迟时间越长,该会话过程的有效传输速率越低, 当运行多个会话时,减缓每个会话的数据传输有助于减少网络和目的设备上的资源冲突。

通俗地讲解TCP的固定窗口和滑动窗口

请参看上图中对窗口大小和确认消息的简易展示。 在本例中,TCP 会话的初始窗口大小为 3000 字节。 此会话的发送方在传输 3000 字节后等待这些数据的确认消息,以便继续传输更多数据段。 一旦发送方收到接收方发送的确认消息,它就可以传输另外 3000 字节的数据段。

TCP 使用窗口大小尝试管理传输速率,将其调整为网络和目的设备可以支持的最大速度,同时最大限度减少损失和重新传输。

TCP滑动窗口

我们也可以通过动态窗口大小来控制数据流量。 当网络资源受到限制时,TCP 可以减小窗口的大小,这样,目的主机就需要更加频繁地确认所接收的数据段。 由于源主机需要更加频繁地等待数据确认,这便可以大大降低传输的速率。

接收主机将窗口大小值发送到发送主机,表示其准备接收的字节数。 如果目的主机由于缓冲内存受限需要降低通信速率,那么它向源主机发送的确认信息中可以包含一个较小的窗口大小值。

通俗地讲解TCP的固定窗口和滑动窗口

如图所示,如果接收主机发生拥堵,它可以向发送主机发送指定了较小窗口大小的数据段。 图中显示,其中一个数据段丢失了。 接收方将返回数据段的 TCP 报头中的窗口字段值由 3,000 减为 1,500,即将窗口大小改为 1,500。

在没有数据丢失或资源限制的情况下传输一段时间后,接收方开始增加窗口字段,这样可以减少网络开销,因为必须发送的确认减少。 窗口大小持续增加,直至出现数据丢失,然后窗口大小随之减少。

窗口大小的这种动态增减是 TCP 中的一个持续不断的过程。 在高效网络中,由于不丢失数据,窗口可能会相当大。 在基层基础设施面临压力的网络中,窗口可能会很小。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据传输
    +关注

    关注

    9

    文章

    1974

    浏览量

    65031
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1389

    浏览量

    79631
  • 流量控制
    +关注

    关注

    0

    文章

    28

    浏览量

    9701
收藏 人收藏

    相关推荐

    如何优化TCP协议的性能

    优化TCP协议的性能可以从多个方面入手,以下是一些关键的策略和方法: 一、调整TCP参数 TCP窗口大小 : 重要性 :TCP
    的头像 发表于 01-22 09:52 324次阅读

    使用SNRBoost 3G技术的窗口

    电子发烧友网站提供《使用SNRBoost 3G技术的窗口.pdf》资料免费下载
    发表于 10-18 09:44 0次下载
    使用SNRBoost 3G技术的<b class='flag-5'>窗口</b>

    控制台窗口主机是什么

    控制台窗口主机(conhost),通常指的是在Windows操作系统中用于承载和控制控制台窗口(即命令行界面或CMD窗口)的进程。以下是对控制台窗口主机的介绍: 一、定义与功能 定义
    的头像 发表于 10-08 18:12 3384次阅读

    针对DLP DMD窗口的波长透射率考虑因素

    电子发烧友网站提供《针对DLP DMD窗口的波长透射率考虑因素.pdf》资料免费下载
    发表于 09-26 09:13 1次下载
    针对DLP DMD<b class='flag-5'>窗口</b>的波长透射率考虑因素

    航天级100krad窗口比较器电路

    电子发烧友网站提供《航天级100krad窗口比较器电路.pdf》资料免费下载
    发表于 09-20 10:34 2次下载
    航天级100krad<b class='flag-5'>窗口</b>比较器电路

    中值滤波窗口大小对结果影响有哪些

    中值滤波是一种常用的数字滤波技术,它通过将信号中的每个点用其邻域内的中值替换来实现信号的平滑和去噪。中值滤波窗口的大小对滤波结果有很大的影响,以下是对中值滤波窗口大小对结果影响的分析。 窗口大小
    的头像 发表于 07-29 09:10 1433次阅读

    请问espnow的窗口同步机制如何使用?

    esp_now_set_wake_window 但唤醒后的时间会变化,并不是固定的,所以多个espnow设备仅靠这两个函数是无法实现窗口同步的 请问如何实现介绍中所说的窗口同步?这个需求意义重大
    发表于 06-05 07:23

    鸿蒙开发接口图形图像:【@ohos.window (窗口)】

    窗口提供管理窗口的一些基础能力,包括对当前窗口的创建、销毁、各属性设置,以及对各窗口间的管理调度。
    的头像 发表于 05-30 10:07 1343次阅读
    鸿蒙开发接口图形图像:【@ohos.window (<b class='flag-5'>窗口</b>)】

    emWin删除子窗口后,焦点没有返回父窗口为什么?

    emWin删除子窗口后,焦点没有返回父窗口
    发表于 05-14 06:43

    OpenHarmony实战开发-如何实现窗口开发概述

    窗口模块的定义 窗口模块用于在同一块物理屏幕上,提供多个应用界面显示、交互的机制。 对应用开发者而言,窗口模块提供了界面显示和交互能力。 对终端用户而言,窗口模块提供了控制应用界面的方
    发表于 05-06 14:29

    如何运用emwin把显示屏分为上下两个窗口,实现上下窗口分别可以左右滑动

    怎么运用emwin把显示屏分为上下两个窗口,可以实现上下窗口分别可以左右滑动
    发表于 04-26 06:03

    如何使用RA MCU中ADC窗口比较功能

    如何使用RA MCU中ADC窗口比较功能
    的头像 发表于 04-12 08:06 549次阅读
    如何使用RA MCU中ADC<b class='flag-5'>窗口</b>比较功能

    鸿蒙OS元服务开发:【(Stage模型)设置应用主窗口

    在Stage模型下,应用主窗口由UIAbility创建并维护生命周期。在UIAbility的onWindowStageCreate回调中,通过WindowStage获取应用主窗口,即可对其进行属性设置等操作。还可以在应用配置文件中设置应用主
    的头像 发表于 04-03 18:28 1311次阅读
    鸿蒙OS元服务开发:【(Stage模型)设置应用主<b class='flag-5'>窗口</b>】

    鸿蒙OS元服务开发:【(Stage模型)学习窗口沉浸式能力】

    在看视频、玩游戏等场景下,用户往往希望隐藏状态栏、导航栏等不必要的系统窗口,从而获得更佳的沉浸式体验。此时可以借助窗口沉浸式能力(窗口沉浸式能力都是针对应用主窗口而言的),达到预期效果
    的头像 发表于 04-03 18:27 1375次阅读
    鸿蒙OS元服务开发:【(Stage模型)学习<b class='flag-5'>窗口</b>沉浸式能力】

    MCGS嵌入版组态软件主控窗口的属性设置

    MCGS嵌入版组态软件的主控窗口是组态工程的主窗口,是所有设备窗口和用户窗口的父窗口,主控窗口
    发表于 03-28 11:34 1600次阅读
    MCGS嵌入版组态软件主控<b class='flag-5'>窗口</b>的属性设置