首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TCP --确认

TCP --确认
EN

Stack Overflow用户
提问于 2015-10-20 20:01:42
回答 2查看 560关注 0票数 4

TCP报头上的32位确认字段(例如x )告诉另一个主机:“我收到了直到包括x-1的所有字节,现在期望来自x和on的字节”。在这种情况下,接收方可能已经接收到更多的字节,比如通过x+100通过x+180接收到的字节,但是它还没有接收到x字节。

是否存在这样的情况:虽然接收方没有通过x+100字节接收x,但通过x+180接收到的字节(例如x+100 ),接收方正在承认它收到了x+180?

我读取的一个资源表明,尽管前面的字节中存在空白,但接收到的字节仍然是确认的。然而,所有其他消息来源都会告诉

“确认x会告诉所有字节,直到接收到x-1为止”。

有例外的情况吗?我想核实一下。

蒂娅。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-23 17:08:27

这可以通过称为SACK的TCP选项来实现。

在这里,客户端可以通过重复的ACK说,它只有最多特定的数据包编号2(分组的序列号),并附加SACK(选择性确认)选项的范围内接收的连续数据包,如数据包编号为4至5(序列号)。反过来,这将使服务器能够仅重传未被客户端接收的数据包(3个序列号)。

提供如下RFC 2018 : TCP选择性确认选项摘录

SACK选项将由数据接收方发送,以通知数据发送方已接收到的非连续数据块以及 排队。数据接收者正在等待数据的接收(也许是通过 (重传的手段)以填补下列之间序列空间的空白: 接收到的区块。当接收到缺失段时,数据 接收器通常通过向左窗口前进来识别数据。 在TCP报头的确认号字段中的边缘。SACK选项不会更改确认号的含义。 字段。

票数 3
EN

Stack Overflow用户

发布于 2015-10-20 20:12:28

来自https://www.rfc-editor.org/rfc/rfc793.txt的TCP RFC

3.3。序号 设计中的一个基本概念是,通过TCP连接发送的每一个八进制数据都有一个序列号。因为每一个八重奏都是按顺序排列的,所以每个八重奏都可以被确认。所使用的确认机制是累加的,因此,对序列号X的确认表明,直到但不包括X的所有八位数都已经接收到。

这在我看来很清楚,序列号在第一次丢失数据时就停止了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33245804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档