定义网络数据报文--字节对齐
来源:互联网 发布:庄子·胠箧 知乎 编辑:程序博客网 时间:2024/06/10 23:11
在用户层实现ARP协议的时候
定义ARP协议的报文:
但是在eth0上捕获的arp数据包,按照上面定义的arp协议报文格式解析的时候,发现
解析报文的 arp_hrd、arp_pro、arp_hlen、arp_plen、arp_op的没有任何错误,
但解析下面地址时候却解析不出来。
难道是报文字段定义有错误,自己重新查看了下arp报文的各个字段:
比对了下,报文的各个字段定义都没有错误,自己又纠结了半天,不知道哪里出问题了,上网查资料,也是没找到相关的
没办法,自己反复删除arp缓存表,反复做实验,慢慢地注意到解析错误的地址跟预想解析出来的值也不是完全不相关的,
解析出来的错误值相对于正确的值发生了移位。
重新仔细地看自己定义的arp报文,差不多猜到是字节对齐的问题。
sizeof(struct _arp) 下, 得到的结果是 32 bytes,arp报文是28 bytes, 的确是字节对齐出了问题。
现在大多机器都是以4字节对齐
所以以这个struct _arp解析网络上捕获的arp包才会出错
下面修改了成以2字节(或1字节)对齐
这样就可以正确解析出arp协议报文。
定义其他的网络数据报文时也应该注意到字节对齐的问题…………
以上只是个人理解,如有错误欢迎指出!
- 定义网络数据报文--字节对齐
- 数据对齐 字节对齐
- 网络VC字节对齐
- 网络VS C++字节对齐
- C语言字节对齐 数据对齐详解
- C语言字节对齐 数据对齐详解
- 结构体定义注意字节对齐
- 依据XML定义报文格式解析数据
- aligned 对齐 ??内存对齐/字节对齐/数据对齐/地址总线对齐?
- 数据的字节对齐(data structure alignment)
- 图像数据每行对齐到4字节
- 图像数据行4字节 对齐
- 图像数据每行对齐到4字节
- 数据对齐---C语言:内存字节对齐详解
- 数据对齐---C语言:内存字节对齐详解
- 【网络基础】IP数据报文段解析
- c语言中定义的数组按照指定字节对齐
- C语言字节对齐问题详解(对齐、字节序、网络序等)
- SQL查询语句使用
- 上路
- らき☆すた
- No suitable driver found for jdbc:mysql://local...
- 静态库文件的理解
- 定义网络数据报文--字节对齐
- Birt 2_0_1报表Tomcat 6.0 访问错误
- Struts2.1.8 Project Dependencies
- 代理模式的理解
- 基带、基带信号和基带传输(附带频带和宽带)
- 成大事必备9种能力、9种手段、9种心态
- javascripte删除前后字符串
- Java学习笔记(1)有事没事得看看的Java技术图书(不断补充中)
- 编程时间分配图