AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1728394
Accepted
EL_9
EL_9
Asked: 2022-06-26 12:45:57 +0800 CST2022-06-26 12:45:57 +0800 CST 2022-06-26 12:45:57 +0800 CST

TCP窗口探测

  • 772

最初在 Networking SE 中询问时,我被提到了这个站点。

我对 TCP 中的 rwnd 广告有一些疑问。我已经阅读了 RFC,但留下了没有答案的想法(或者我可能错过了一些东西)。也许有些答案取决于实现 - 在这种情况下,请使用您的经验回答,因为我想知道在一般情况下会发生什么。

TCP标准规定如下:

即使发送窗口为零,发送 TCP 也必须准备好从用户处接受并发送至少一个八位字节的新数据。

我认为这样做的原因是窗口探测消息包含一个八位字节的数据。然而,这让我想到:

  1. 我没有看到标准中规定探测数据包必须包含一个八位字节的新数据。是否有不同的方法来探测窗口大小?

  2. 如果这是唯一的方法,我想知道为什么重新发送旧段(带有旧序列号)是不够的。接收方是否必须在某个时刻仅确认窗口内的数据(意味着不一定要确认旧数据),这意味着我们必须将探测数据包视为该规则的例外?

  3. 一般来说,当窗口变大时,接收方会通知发送方吗?是否必须这样做(我知道确认可能会丢失,所以发件人可能不得不进行调查)?

  4. 探测数据包是否仅在window = 0或可能之前发送时发送?

tcp
  • 1 1 个回答
  • 35 Views

1 个回答

  • Voted
  1. Best Answer
    Spiff
    2022-06-26T17:07:39+08:002022-06-26T17:07:39+08:00

    我认为这样做的原因是窗口探测消息包含一个八位字节的数据。

    为了清楚起见,窗口探测数据包没有特殊的数据包格式、标头或其他标识符。TCP 只是在需要探测窗口时发送一个标准的 TCP 数据包。它只是碰巧将该 TCP 数据包中的用户/应用程序数据限制为一个八位字节。

    1. 我没有看到标准中规定探测数据包必须包含一个八位字节的新数据。

    您刚刚引用了标准中的声明,即探测数据包必须包含至少一个八位字节的新数据,不是吗?如果您需要其他声明,您会在 RFC 793 和 RFC 1122 中找到声明,提醒您没有新应用程序数据的 Acks 无法可靠传输(这意味着您必须传输一些新数据才能知道它是否通过)。

    是否有不同的方法来探测窗口大小?

    可以想象 TCP 标准的作者可能会想出其他方式,但您引用的方式是他们在标准中提供的唯一方式。

    1. 如果这是唯一的方法,我想知道为什么重新发送旧段(带有旧序列号)是不够的。

    这不是一个是否足够的问题,而是一个最好的方法的问题。如果您没有更多数据要发送,则无需探测窗口。如果您确实有更多数据要发送,为什么不使用它来探测窗口,而不是将带宽浪费在先前发送的(可能是确认的)数据上?

    接收方是否必须在某个时刻仅确认窗口内的数据(意味着不一定要确认旧数据)

    接收器应该只确认它收到的最新数据,即与从一开始接收到的所有数据是连续的(通过连续,我是说它是否有一个洞,因为它错过了一个或多个数据包,但得到了一个后来的数据包,它不能确认后面的数据包;它必须继续确认第一个洞之前的最后一个序列号)。

    1. 一般来说,当窗口变大时,接收方会通知发送方吗?

    是的,一般来说,接收方会通过每个 Ack 通知发送方窗口大小的更新。

    此外,在第 10 页的“窗口管理建议”下。在 RFC 793 的第 43 条中,作者建议 TCP 接收器“在窗口较大时发送另一个带有新窗口信息的确认”。该 RFC 早于定义 MAY/SHOULD/MUST 术语标准的 RFC 2119,但根据 RFC 2119 的要求级别指南,该建议似乎被视为 SHOULD。

    是否必须这样做(我知道确认可能会丢失,所以发件人可能不得不进行调查)?

    我不知道有任何 RFC 更新 RFC 793 会使这种行为成为必须。

    是仅在 window = 0 时才发送探测数据包,还是之前可以发送它们?

    如果窗口不为零,那么单数据字节 TCP 段将不会真正被视为探测。例如,如果我有一个 telnet 连接向远程主机发送单独的击键,则每个击键都可能作为单数据字节 TCP 段发送。即使窗口大于 0 或 1,这些也可以在 telnet 等情况下发送,但它们不会被视为探测。

    • 1

相关问题

  • 在 1Gpbs 网络中看不到传输

  • TCP Server 和 Client 会在哪个细节步骤消耗资源?[关闭]

  • 可控制 SYN、ACK、FIN 的简单 TCP 客户端

  • MSSQL 对链接服务器的高频查询出现间歇性 TCP 连接错误(连接池相关?)

  • 客户端未响应 TCP SYN-ACK 数据包以太网驱动程序

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve