(如果我不能正确提出问题,请原谅。英语不是我的主要语言。)
我正在尝试解析 SyncE ESMC 数据包。它是以太网慢速协议包。
方法 1:为了解析这个数据包,我使用了类似于这里所做的逐字节方法。
方法 2:解析数据包的其他方法是定义一个“结构”来表示整个数据包并访问各个字段以检索特定偏移处的值。然而,在这种方法中,结构填充和对齐可能会出现(我不确定),但在 Linux 上,各种数据包头以结构的形式定义,例如 ip.h 中的 iphdr。IP 数据包(缓冲区)可以类型转换为“iphdr”以检索 ip 标头字段,因此它必须正常工作。
哪种方法更好地解析 C 中的网络数据包?
通过方法 2 解析数据包时,结构填充和对齐是否有任何区别?如果是,Linux 头文件是如何克服这个问题的?