C中的以太网原始数据和帧校验序列

时间:2016-12-15 13:46:15

标签: c protocols checksum packet ethernet

我正在尝试通过C代码使用以太网帧构建原始数据。 我构建了一个数据包(包括以太网 - > IP-> UDP-> DHCP协议)并通过WiFi接口发送。我通过Wireshark跟踪它打印出来: 以太网2 - >帧校验序列 - >不正确,应该是XXX。

我没有在我的数据包中构建FCS数据,我将该字段留空。 现在,我在C中找不到任何简单的函数/代码。我发现的所有代码都给我带来了不好的结果。

之前有人做过,可以分享如何在以太网数据包中实现FCS吗?

提前谢谢

2 个答案:

答案 0 :(得分:1)

FIX:似乎FCS计算只是可选的,我添加了IP校验和计算,这足以让DHCP通过。

感谢。

答案 1 :(得分:0)

尝试:

#define BYTE unsigned char
     int fcs(BYTE* paquete,int n){
        int byte,sum=0;
        n++;
        for(int j=0;j<=n;j++){
                byte=paquete[j];
                for(int i=0;i<8;i++){
                        if(j!=n && i<7){
                                sum = sum+(byte & 0x01);
                                byte = byte >> 1;
                        }
                }
        }
        return sum;
}
相关问题