为什么tcp实现使用字节序列号而不是段号进行流控制?

为什么tcp实现使用字节序列号而不是段号进行流控制?,tcp,Tcp,对于流控制,tcp使用序列号和确认号,这是段中的起始字节号 当发送或接收段时,它作为一个整体进行。因此,从套接字的角度来看,要么接收到整个段,要么丢失包含该段的完整数据包 例如: 这些线段创建为 第1部分:序号1至序号1000 第2部分:序号1001至序号2000 第3部分:2001年至3000年 如果包含段2(seq 1001到2000)的分组被丢弃,则接收端或者不接收seq 1000到2000。没有一种方式可以接收部分片段。因此,接收器发送1001的ack 在实现TCP时,创建者为什么不使用

对于流控制,tcp使用
序列号
确认号
,这是段中的起始字节号

当发送或接收段时,它作为一个整体进行。因此,从套接字的角度来看,要么接收到整个段,要么丢失包含该段的完整数据包

例如: 这些线段创建为

第1部分:序号1至序号1000

第2部分:序号1001至序号2000

第3部分:2001年至3000年

如果包含段2(seq 1001到2000)的分组被丢弃,则接收端或者不接收seq 1000到2000。没有一种方式可以接收部分片段。因此,接收器发送1001的ack

在实现TCP时,创建者为什么不使用段号。与上述示例一样,发送方可以将序列号作为
1,2和3发送,接收方可以使用确认号作为
1,2和3。如果有丢弃,接收器可以为下一个预期段(我们示例中的段2)发送ack


这可能会在每个TCP标头中节省空间。

序列号与接收窗口直接相关,无需进一步计算。段的大小可以不同,并且可以在没有所有数据的情况下发送-使用序列号在计算中不会产生影响。不太可能重新传输,并且段已经包含序列号-它不包含“段号”。“段号”(如果添加)也将是4字节,在4字节序列号上不节省空间,因为2字节太小(65k值)。序列号直接与接收窗口相关,无需进一步计算。段的大小可以不同,并且可以在没有所有数据的情况下发送-使用序列号在计算中不会产生影响。不太可能重新传输,并且段已经包含序列号-它不包含“段号”。“段号”(如果添加)也将是4字节,在4字节序列号上不节省空间,因为2字节太小(65k值)。