大佬教程收集整理的这篇文章主要介绍了c – 确定添加到以太网帧的填充量,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
有一个struct sk_buff,是否可以直接确定添加到数据包的尾随零的数量?
我当然可以通过遍历整个数据包确定该值,找出最高层内容的结束位置,然后简单地从帧大小中减去该位置(在本例中为60字节).但有没有一种更有效的方法直接从存储在struct sk_buff上的信息中做到这一点?
也就是说,通过一些简单的指针算法和字节减法,您可以使用IP数据中的长度字段来计算填充.
这是sk_buff的一个很好的参考:
http://vger.kernel.org/~davem/skb_data.html
这里有一个很好的数据包结构参考,在’data’的底部图片中显示’length’字段.
http://nerdcrunch.com/wp-content/uploads/2011/05/Ethernet-Frame-Explained.png
我认为这是它必须完成的方式,但它不需要像以前那样进行解析.设置头/数据结构字段,使得它们可以通过指针/数组直接引用/剥离而无需解析,然后通过从原始数据包长度中减去头数据长度,您可以获得填充,所有这些都不需要检查数据.
希望有所帮助.
此外,为了获得最佳实践,您可能应该使用两个版本的802.3的驱动程序帐户.您可以通过检查Ethertype / length字段来完成此操作.如果该值大于1536(0x0600),则表示它是以太网II类型数据包,并且该字段包含ethertype,它告诉您以太网数据包封装的内容.如果维基百科为“Ethertype”,有一些很受欢迎的.
例如,IP = 0x0800.如果字段指定Ethertype,则必须求助于在里面找到数据长度字段以找到填充.如果没有,那么很多基于以太网的局域网仍然没有,那么你可以直接使用指定为长度的字段来完成你的工作.
以上是大佬教程为你收集整理的c – 确定添加到以太网帧的填充量全部内容,希望文章能够帮你解决c – 确定添加到以太网帧的填充量所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。