dvfvdgfrg 2019-12-22 01:28 采纳率: 0%
浏览 282

Linux抓icmp包分析错误?

用Linux编程编写抓包协议,分析icmp报文的时候都是0

else if(p_iphdr->protocol==1){
        struct icmphdr*p_icmphdr=(struct icmphdr*)(p_iphdr+p_iphdr->ihl*4);
        if((p_icmphdr->icmp_type)==3||5||11||12){
            printf("----这个是ICMP差错报告报文----\n");

        }else{
            printf("----这个是ICMP询问报文----\n");
        }
        printf("type = %d\n ", p_icmphdr->icmp_type);
        printf("code = %d\n ", p_icmphdr->icmp_code);
        printf("id = %d\n ", p_icmphdr->icmp_id);
        printf("icmp_seq = %s\n ", ntohs(p_icmphdr->icmp_seq)); //输出序列号

这个是icmp结构体

struct icmphdr
{
    u_int8_t icmp_type;
    u_int8_t icmp_code;
    u_int16_t icmp_checksum;
    union
    {
        struct ih_idseq
        {
            u_int16_t icd_id;
            u_int16_t icd_seq;
        }ih_idseq;
    }icmp_hun;
#define icmp_id icmp_hun.ih_idseq.icd_id
#define icmp_seq icmp_hun.ih_idseq.icd_seq
    //u32  icmp_timestamp[2];//时间戳
    //ICMP数据占位符
    u_int8_t data[0];
};

结果是这样

图片说明

这个icmp报文是我用ping网站获取的
求大佬告知小白一个,感谢

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥20 有关区间dp的问题求解
    • ¥15 多电路系统共用电源的串扰问题
    • ¥15 slam rangenet++配置
    • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
    • ¥15 对于相关问题的求解与代码
    • ¥15 ubuntu子系统密码忘记
    • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
    • ¥15 保护模式-系统加载-段寄存器
    • ¥15 电脑桌面设定一个区域禁止鼠标操作
    • ¥15 求NPF226060磁芯的详细资料