免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1464 | 回复: 0
打印 上一主题 下一主题

【用TCP/IP实现网络互连-卷二】ARP设计 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-12 22:51 |只看该作者 |倒序浏览
ARP属于网络接口层,它形成了只能使用IP地址的上层协议软件和只能使用硬件地址的下层设备驱动程序软件之间的分界线。

ARP软件可以分为3个模块:输出模块,输入模块,高速缓存管理程序。
发送数据报时,网络接口软件调用输出模块的一个过程,完成IP和物理地址的绑定,然后进行封装和发送分组。
输入模块处理来自网络的ARP分组,并通过增加新的绑定来修改ARP缓存中的内容。
高速缓存管理程序实现高速缓存替换策略,删除已经达到规定时限的表项。

设计方案举例:

1.ARP高速缓存的数据结构
struct arpentry
这个结构包括:
1)与绑定有关的数据结构:硬件地址,IP地址....
2)表项的状态:空闲,正在使用但是绑定尚未找到,正在使用绑定正确
3)发送此绑定的网络接口结构
4)状态信息:能在高速缓存中保留的时间,请求分组已经被广播的次数...

struct arp
这个结构定义了ARP分组的格式

2.ARP输出处理
1)网络输出进程(netwrite)调用arpfind,搜索ARP缓存中的匹配表项
2)如果找到可以匹配的表项则发送数据
3)如果没有则分配一个表项,一旦ARP缓存为某IP地址分配表项后,网络接口软件调用arpsend广播获取物理地址的ARP分组,metwrite返回主调程序,将待发送分组放入队列中等待发送。

3.ARP输入处理
arpadd:读取网路传送来的ARP分组,为它在高速缓存中分配一个表项,利用ARP分组中的信息填写此表项。
arpqsend:ARP输出过程将正在等待地址转换的分组保存在队列中ARP输入过程使用arpqsend发送正在等待发送的数据分组保存在队列中,当一个含有地址转换所需信息的ARP分组到达时,ARP输入过程调用arpqsend发送等待发送的数据分组。

arp_in:当一个ARP分组到达时,网络设备程序将其传递给arp_in做进一步处理,ARP分组可能是REQUEST或者REPLY,arp_in分别作出不同处理。在此期间会调用arpadd建立表项。

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/74413/showart_1963277.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP