作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
正如 this question 所暗示的那样,似乎校验和是由以太网硬件计算和验证的,因此当使用 AF_PACKET 套接字发送帧时,它似乎不太可能必须由软件生成,看起来 here和 here .另外,我不认为它可以从套接字接收,也不能通过任何简单的方式接收,因为即使 Wireshark 也不显示它。
所以,有人可以证实这一点吗?我真的需要像最后两个链接所示自己发送校验和吗?以太网适配器会自动创建和检查校验和吗?
最佳答案
不,您不需要包含 CRC。
在 Linux 中使用 socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL) )
来使用数据包套接字时,您必须在发送时提供第 2 层 header 。这由 netinet/if_ether.h
中的 struct ether_header
定义,包括目标主机、源主机和类型。不包括帧校验序列,也不包括前导码、帧定界符开始或尾部。这些是由硬件添加的。
关于linux - 以太网校验和是否通过 AF_PACKET 公开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15651651/
我是一名优秀的程序员,十分优秀!