arpc源代码注释

arpc源代码注释

ID:20061076

大小:279.50 KB

页数:29页

时间:2018-10-09

arpc源代码注释_第1页
arpc源代码注释_第2页
arpc源代码注释_第3页
arpc源代码注释_第4页
arpc源代码注释_第5页
资源描述:

《arpc源代码注释》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Arp.c——源代码注释小组成员:李婷1071000114罗雪1071000118史雅萌1071000119古丽布斯1071000301ARPARP,即地址解析协议,实现通过IP地址得知其物理地址。地址解析协议ARP是在主机ARP高速缓存(ARPcache)中存放一个从IP地址到硬件地址的映射表,并且这个映射表还经常动态更新。基本原理:当主机A要向本局域网上的某个主机C发送IP数据报时,就先在其ARP高速缓存中查看有无主机C的IP地址。如有,就在ARP高速缓存中查出其对应的硬件地址,再把这个硬件地址写入MA

2、C帧,然后通过局域网把该MAC帧发往此硬件地址。如果在ARP缓存表中没有找到目标IP地址,可能是主机C才入网,也可能是主机A刚加电,其高速缓存还是空的。这种情况下,主机A就自动运行ARP,然后按以下步骤找出主机C的地址。1.ARP进程在本局域网上广播发送ARP请求分组。分组内容表明:我的IP地址是209.0.0.5,硬件地址是00-00-C0-15-AD-18请问IP地址为209.0.0.6的硬件地址是什么?”2.在本局域网上的所有主机上运行的ARP进程都收到此ARP请求分组。3.主机C在ARP请求分组中见

3、到自己的IP地址,就向主机A发送ARP响应分组,并写入自己的硬件地址。其余的所有主机都不理睬这个ARP请求分组。响应分组表明:我的IP地址是209.0.0.6,我的硬件地址是08-00-2B-00-EE-0A。4.主机A接受到主机C的ARP响应分组后,就在其ARP高速缓存中写入主机C的IP地址到物理地址的映射。在完成以上步骤的同时A和C还同时都更新了自己的ARP缓存表,下次A再向主机C或者C向A发送信息时,直接从各自的ARP缓存表里查找就可以了。大大增加了网络上的通信量。ARP缓存表采用了老化机制(即设置了

4、生存时间),在一段时间内(一般15到20分钟)如果表中的某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。设想有一种情况,主机A和C通信,A的ARP高速缓存里有C的硬件地址,但C的网络适配器突然坏了,C立即更换了一块,因此C的硬件地址就改变了,A在其ARP缓存中查找原先的硬件地址,因为C原先的硬件地址已经失效,所以无法找到C,但是如果过了定时器设定的时间,A的缓存表中已经删除了C的硬件地址,于是A重新广播发送ARP请求分组,又可以找到C.使用ARP的四种典型情况1.发送方是主机,

5、要把IP数据报发送到本网络上的另一个主机。这时用ARP找到目的主机的物理地址。2.发送方是主机,要把IP数据报发送到另一个网络上的一个主机。这时用ARP找到本网络上的一个路由器的物理地址。剩下的工作由这个路由器来完成。3.发送方是路由器,要把IP数据报转发到本网络上的一个主机。这时用ARP找到目的主机的物理地址。4.发送方是路由器,要把IP数据报转发到另一个网络上的一个主机。这时用ARP找到本网络上的一个路由器的物理地址。剩下的工作由这个路由器来完成。1、Arp_tablearp_tbl是一个类型为stru

6、ctneigh_table的全局变量,它是一个ARP的缓存表,也称为邻居表。协议栈通过ARP协议获取到的网络上邻居主机的IP地址与MAC地址的对应关系都会保存在这个表中,以备下次与邻居通讯时使用,同时,ARP模块自身也会提供一套相应的机制来更新和维护这个邻居表。下面逐个分析arp_tbl中的重要成员数据与函数:1)entry_size,key_len,kmem_cachepentry_size是一个入口的大小,也就是arp_tbl中一个邻居的大小,邻居用structneighbour结构体表示,该结构体的最

7、后一个成员是u8primary_key[0],用于存放IP地址,作为这个邻居的哈希主键。entry_size的大小就是sizeof(structneighbour)+4,由于用IP地址作主键,所以key_len就是4。kmem_cachep是一个后备高速缓存,创建一个邻居需要的内存从这个后备高速缓存中去取。2)hash_buckets,hash_mask,entries,hashhash_buckets是一个哈希数组,里面存放了arp_tbl当前维护的所有的邻居,hash_mask是哈希数组大小的掩码,其初

8、始值为1,所以hash_buckets的初始大小为2(0到hash_mask的空间范围)。entries是整个arp_tbl中邻居的数量,当entries大于hash_mask+1的时候,hash_buckets增长为原来的两部。成员hash是一个哈希函数指针,用于计算哈希值。3)phash_buckets,PNEIGH_HASHMASK这是用于代理ARP的邻居哈希表,PNEIGH_HASHMASK固定为0xF,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。