赞助连接

赞助连接

阅 读 文 章

ARP地址解析协议详解及其漏洞分析

[来源:网上转载 (http://www.chinaunix.net) | 作者:网友(xie_minix) | 时间:2007-05-27 | 浏览:人次 ]


*/
s = splimp();/*关中断,凡是对队列进行操作的都要*/
IF_DEQUEUE(&arpintrq, m);/*把队列中的第一个mbuf链的指针放入m中
我们来看看这个宏
#define IF_DEQUEUE(ifq, m) { \              /*当然,这ifq是指arpintrq
(m) = (ifq)->;ifq_head; \                 /* 第一个mbuf链放到m中
if (m) { \                              /*如果m指向空,在宏之外的函数会处理
if (((ifq)->;ifq_head = (m)->;m_nextpkt) == 0) \ /*把该链的下一个链首放入队列头并判断是否为空
(ifq)->;ifq_tail = 0; \      /*如果头都为空,那么尾巴一定要置空,要不然...就全乱套了
(m)->;m_nextpkt = 0; \  /*多此一举,你们看看上面都判断了为空,这里还要填空
(ifq)->;ifq_len--; \    /* 长度减一
} \
}

*/
splx(s);/*操作完成,开中断*/
if (m == 0 || (m->;m_flags & M_PKTHDR) == 0)/*因为上面的宏会返回空,所以在这里要处理一下*/
panic("arpintr");

                if (m->;m_len < sizeof(struct arphdr) &&
                    ((m = m_pullup(m, sizeof(struct arphdr))) == NULL)) {
/*注意上面这个if,他是先执行m->;m_len<sizeof(struct arphdr),
也就是说如果mbuf链的第一个mubf的长度小于标准的arp头部的话,有可能在这个mbuf中
只有arp头的一部分,另外一部分通过调用m_pullup合并相邻的这两个mbuf看看是否有效,
根据统计,通常是无效的,这种情况在判断IP头的时候也会遇到.m_pullup是一大函数,以后我
会讲一讲
*/
log(LOG_ERR, "arp: runt packet -- m_pullup failed\n");/*记录下来*/
continue;/*既然这个mbuf链是无意义的,那么进行下一个while*/
}
ar = mtod(m, struct arphdr *);

if (ntohs(ar->;ar_hrd) != ARPHRD_ETHER
    && ntohs(ar->;ar_hrd) != ARPHRD_IEEE802) {
log(LOG_ERR,
    "arp: unknown hardware address format (0x%2D)\n",
    (unsigned char *)&ar->;ar_hrd, "");
m_freem(m);/*释放掉该mbuf链*/
continue;/*既然这个mbuf链是无意义的,那么进行下一个while*/
}

if (m->;m_pkthdr.len < sizeof(struct arphdr) + 2 * ar->;ar_hln/*这是判断该mbuf链的
论坛热门帖子: [lch203] 写得蛮好的linux学习笔记(10-21)
[黑马制造] 学习java的30个目标(10-19)
[笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19)
[udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18)
[沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18)
TAG标签: 及其 漏洞 分析 详解 协议 地址 解析 ARP IP if ea- 路由

最新评论 共有0位网友发表了评论

发表评论

评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名:(注册)
密码:
验证码:
匿名发表

网站地图友情连接交流论坛网站投稿广告服务联系我们留言本站长统计
Some rights reserved: www.chmhome.com, 鄂ICP备07010232号 E-mail:chinakafei@live.com,QQ:552766
中国咖啡技术网(Chmhome):国外编程技术书籍,中文编程手册,经典编程文章,交流技术,技术软件下载,计算机论文,毕业论文.