某个协议字段在字节流中的顺序问题

发布于 2022-09-03 14:33:26 字数 525 浏览 21 评论 0

1.最近在抓数据包的时候发现一个问题,发现在某些协议中有些字段是“正方向”表示的,例如IP头部的版本和首部长度字段表示:
Internet Protocol Version 4, Src: 1.1.1.1, Dst: 2.2.2.2

0100 .... = Version: 4
.... 0101 = Header Length: 20 bytes (5)

你在bit流里面也看到的是:01000101,也就是说为0x45。
但是发现有的协议里面,很奇怪,假如你看到(当然IP协议不是,只是为了举例说明问题):
0100 .... = Version: 4

.... 0101 = Header Length: 20 bytes (5)

但实际上在bit流中显示的却是:01010100,也就是0x54,和实际的值是“反方向”的;
我想请教一下各位大神:
1.这个字节的正反有什么特殊目的吗?
2.字节顺序的正反是有协议本身来规定的吗?然后程序实现?
非常感谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

玉环 2022-09-10 14:33:26

有个东西叫字节序,不过这是对于多个字节来定义的,并不符合你举的例子,不知道是你的例子不够准确。

字节序主要就是两种:大端序和小端序。
例如 0x1234 占用两个字节,
在大端序里表示为 0x12 0x34
在小端序里表示为 0x34 0x12

但是端序只改变字节的顺序,不会改变bit的顺序。你例子中的 0x45 和 0x54 应该不属于这个范畴。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文