linux - 以太网校验和是否通过 AF_PACKET 公开?

标签 linux sockets ethernet raw-sockets

正如 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/

相关文章:

linux - Linux控制台中的模糊文件搜索

Hadoop SAN 存储重用

java - 写入失败时断开客户端与服务器的连接 (Java)

java - 无法打开套接字文件: process not responding while Dumping the JVM?的原因是什么

java 套接字问题

具有多个运行接口(interface)的机器上的 Linux 主机名解析

linux - 在 Arch Linux 中禁用网络接口(interface)

java - 无法保持 gnome 终端打开

linux - bash pid 输出显示两个数字

linux - 通过交互式 shell 与脚本查找名称中带有星号 (*) 的文件