某个协议字段在字节流中的顺序问题
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
有个东西叫字节序,不过这是对于多个字节来定义的,并不符合你举的例子,不知道是你的例子不够准确。
字节序主要就是两种:大端序和小端序。
例如 0x1234 占用两个字节,
在大端序里表示为 0x12 0x34
在小端序里表示为 0x34 0x12
但是端序只改变字节的顺序,不会改变bit的顺序。你例子中的 0x45 和 0x54 应该不属于这个范畴。