为什么IPv4协议的version字段设置为首字节的高4位?

Why the version" field of IPv4 protocol is set to the higher 4-bits of the first byte?

我的母语不是英语,如果此描述中存在语法问题(或单词误用),请见谅。

最近在研究TCP,UDP,IP等网络协议,使用Wireshark抓包。我看到了一个我无法理解的“奇怪的东西”。

在IPv4协议设计中,“版本”字段是第一个字段,“header长度”是第二个字段。两者都是 4 位字段。所以当OS要传输一个IPv4数据包时,我认为“版本”和“header长度”将组成第一个字节,“版本”将设置为低4位, “header 长度”字段到高 4 位。

但是 Wireshark 向我展示了相反的情况。 “版本”字段始终设置为较高的 4 位,“header 长度”设置为较低的 4 位。像 0x45(版本 4,20 字节 header 长度)。

因为软件运行良好,我知道我一定有误解,但我不知道为什么。

维基百科文章对此进行了解释:“header 中的字段首先包含最高有效字节(大端),对于图表和讨论,最高有效位被认为是最先出现的(MSB 0 位编号)。最高有效位编号为 0,因此版本字段实际上位于第一个字节的四个最高有效位中,例如。” https://en.wikipedia.org/wiki/IPv4