赞助连接

赞助连接

阅 读 文 章

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

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


sdl->;sdl_family == AF_LINK && sdl->;sdl_alen != 0) {   /*地址类型是硬件链路层地址,并且地址长度不为0*/
bcopy(LLADDR(sdl), desten, sdl->;sdl_alen);            /*那么就拷贝该硬件地址到desten*/
return 1;                                             /*ether_output函数如果得到返回值1(成功),那他就知道*/
}                                                         /*他调用时的desten指针指向了正确的对方的硬件地址*/
/*
 * 如果接口不支持ARP(PPP等点对点网络).
 */
if (ac->;ac_if.if_flags & IFF_NOARP)
return (0);
/*
 * 先把要发送的数据指针临时保存,等到发送ARP请求查询包后,得到正确的对方硬件地址时再发送
 */
if (la->;la_hold)               /*上次的mbuf还有没发的吗(也是因为同样的原因,但要发送的IP没一直没被解释)*/
m_freem(la->;la_hold);      /*释放掉上次的包(一个mbuf链),因为上次的地址可能找不到了*/
la->;la_hold = m;    /*把这次的保存进去*/
if (rt->;rt_expire) {           /*如果不是永久ARP节点*/
rt->;rt_flags &= ~RTF_REJECT;
if (la->;la_asked == 0 || rt->;rt_expire != time_second) {/*不在同一秒钟,即一秒钟可发一次,5次后还没解析,就停止20秒*/
rt->;rt_expire = time_second;/*当前时间*/
if (la->;la_asked++ < arp_maxtries)/*在解释地址时重复发送ARP请求的包的次数,共5次*/
    arprequest(ac,&SIN(rt->;rt_ifa->;ifa_addr)->;sin_addr,&SIN(dst)->;sin_addr, ac->;ac_enaddr);/*发送请求*/
else {
rt->;rt_flags |= RTF_REJECT;/*为了防止ARP泛洪,*/
rt->;rt_expire += arpt_down;/*arpt_down=20秒,一旦公布了down, 20秒不发送 */
la->;la_asked = 0;/*一共可以询问5次,从0次开始,上面有++*/
}

}
}
return (0);
}

/*
 * 当数据包在if_ethersubr.c中的ether_input函数处理后,如果查到源,目的地址后的
 * 2字节是ETHERTYPE_ARP时会产生一软中断,中断向量指向此arpintr函数,实际上的意思
 * 是网络上有一ARP包被我们的网卡接收了.就由arpint函数处理
 */
static void
arpintr()
{
register struct mbuf *m;
论坛热门帖子: [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):国外编程技术书籍,中文编程手册,经典编程文章,交流技术,技术软件下载,计算机论文,毕业论文.