beautifulboylv 发表于 2014-06-12 12:42

关于SOCK_RAW问题

最近在看busybox源码ping部分的代码,在对于recvfrom到的数据(buffer)进行解析时有如下代码。
         ippkt = (struct iphdr *)buffer;
        hlen = ippkt->ihl << 2;
        pkt = (struct icmp *) (buffer + hlen);
我查看了/usr/include/netinet/ip.h 和/usr/include/netinet/ip_icmp.h关于struct iphdr 和 struct icmp的定义,
感觉完全对不上啊,为什么要这样获取struct icmp呢?
内核传出来的buffer到底是什么东西?关于不同协议SOCK_RAW的buffer的含义在哪里看?

Godbach 发表于 2014-06-12 13:25

回复 1# beautifulboylv


有什么问题吗。raw socket 直接拿到的是 IP 报文,IP 报文是什么结构,ICMP 的报文在什么位置,这些你都清楚吗?
   

beautifulboylv 发表于 2014-07-07 12:39

明白了,我理解出了问题,多谢~回复 2# Godbach
页: [1]
查看完整版本: 关于SOCK_RAW问题