“为啥 TCP 标头有标头长度字段,而 UDP 标头没有?”这是一个有效的问题吗?

Posted

技术标签:

【中文标题】“为啥 TCP 标头有标头长度字段,而 UDP 标头没有?”这是一个有效的问题吗?【英文标题】:"Why does the TCP header have a header length field while the UDP header does not?" Is this a valid question?“为什么 TCP 标头有标头长度字段,而 UDP 标头没有?”这是一个有效的问题吗? 【发布时间】:2020-07-23 20:29:56 【问题描述】:

我的问题与 Stack Overflow 上提出的问题相反: InverseQuestion

...但我认为我也没有得到明确的答案。我的问题是在我刚参加的期中考试时提出的,值得很多分。我认为这不是一个合法的问题,因为 UDP 标头 DOES 有一个长度字段(与标头和数据相关),如我嵌入的屏幕截图所示。我可以列出几十个具有类似图表和解释的参考资料。教练只是简单地标记它是错误的,没有任何解释。从那以后我们一直在来回走动,我无法回答为什么互联网上的每个 UDP 标头图都显示一个长度字段,如果没有长度!有人可以用简单的英语帮助我理解——如果是真的没有标题长度吗?我是否误解了所有这些类似的图表?谢谢。 UDP Diagram

https://www.computernetworkingnotes.com/ccna-study-guide/segmentation-explained-with-tcp-and-udp-header.html https://www.lifewire.com/tcp-headers-and-udp-headers-explained-817970

【问题讨论】:

您将“标题长度”与“长度”混为一谈。 UDP 标头长度固定为 8 个字节,因此它不需要是数据包的一部分。 TCP/IP 标头长度是可变的。 【参考方案1】:

Why does the TCP header have a header length field while the UDP header does not? 可能是一个有效的问题。

UDP头包含头+数据长度 TCP 标头包含 32b DWORD 中的标头长度 IP 标头包含 IP 数据包的总长度

重要:

UDP 标头固定为 8 字节 => 没有任何意义让标头对于常数更大 TCP 标头可能因选项而异

如果您正在寻找 UDP 包含数据而 TCP 不包含数据的原因,您可以查看每个 RFC 规范的草案。不过,这可能没有任何理由,不要忘记那些协议是在几十年前定义的。

【讨论】:

@RossJacobs 他这样回答了这个问题:“可能是一个有效的问题”,他给出了理由,仅供参考,他们是正确的。请停下来。 @user207421 因为我在他评论时编辑了我的问题 ;) @user207421 您可能希望在删除 cmets 时查看编辑历史时间戳。当我看到它时,答案是要求澄清。 我知道固定与变量之间存在差异,但这不是问题所在。如果问题询问为什么 UDP 标头中的长度是固定的,而 TCP 是可变的,那么我会谈到选项。我认为答案可能是@user207421 所说的(“您将'标题长度'与'长度'混为一谈。”)但我并不真正理解其中的区别。 UDP 标头有一个表示标头长度(及其数据)的长度字段。怎么会互相排斥?它似乎在分裂头发。 你不明白'header length'和'header length+data length'的区别吗?我无能为力。我回答了你提出的问题。

以上是关于“为啥 TCP 标头有标头长度字段,而 UDP 标头没有?”这是一个有效的问题吗?的主要内容,如果未能解决你的问题,请参考以下文章