分享
 
 
 

反向地址转换协议

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

1.介绍

有些网络主机,例如无盘工作站,在启动的时候通常不知道协议地址,它们只知道

硬件接口地址。为了使用象IP这样的高层协议进行通讯,它们必须从外部来发现它们的

协议地址。我们的问题是没有标准机制来做这些。

Plummer的“地址转换协议”(ARP)[1]被设计用来解决一个相关的问题:给定主机

的协议地址得到它的硬件地址。这篇RFC提出了“反向地址转换协议”。和ARP一样,

我们假设一种广播介质,例如以太网。

2.设计考虑

以下的考虑指导我们对RARP协议的设计。

A. ARP和RARP是不同的操作。ARP假设每一个主机都知道它的硬件地址和协

议地址间的映射。一个小缓存存放了收集到的关于其他主机的信息。所有的主机在

状态上是平等的,没有客户机和服务器的区别。

另一方面,RARP需要一个或者更多的服务器主机来维护一个存有从硬件地址

到协议地址的映射的数据库,并对客户机的请求作出应答。

B. 前面提到RARP需要维护大数据库的服务器主机,这并不是所希望的,在某

些情况下不可能在操作系统的内核中维护这样一个数据库。因此,大多数实现需要

和内核外的程序做某种形式的互操作。

C. 实现的简单和对已存在主机软件影响最小是重要的,设计一个需要改变每一个

主机的软件(而不管其是否参与)的协议是错误的。

D. 为了最小化开发成本和费用,希望考虑和已有软件共享代码的可能性。

3.推荐协议

我们建议RARP作为数据链路层单独的协议。例如,假如介质使用以太网,RARP

包和ARP包将有不同的以太网类型。这意味着ARP和RARP是两种不同的操作,所有

的主机并不平等地支持它们。对已存在系统的影响也最小,已有的ARP服务器不会被

ARP包弄糊涂。它把RARP看作一个能把硬件地址映射到任何高层协议地址的常用工

具。

这个方法使RARP客户端主机的实现最简单,但同时也使得RARP服务器端主机的

实现很困难。然而这种困难是没办法的,从附录A中描述的4.2BSDUnix下两种可能的

实现就可以看出。

RARP使用和ARP相同的包格式。

ar$hrd(硬件地址空间)16比特

ar$pro(协议地址空间)16比特

ar$hln(硬件地址长度)8比特

ar$pln(协议地址长度)8比特

ar$op(操作码)16比特

ar$sha(源硬件地址)n比特,n来自ar$hln字段

ar$spa(源协议地址)m比特,m来自ar$pln字段

ar$tha(目的硬件地址)n比特

ar$tpa(目的协议地址)m比特

ar$hrd、ar$pro、ar$hln和ar$pln与ARP相同(见[1])。

例如,假设硬件地址是48比特以太网地址,协议地址是32比特Internet地址,我

们希望决定对应已知的以太网地址的Internet地址,那么在每个RARP包中,ar$hrd=1

(以太网),ar$pro=2048(IP包的以太网类型),ar$hln=6,ar$pln=4。

有两个操作码:3(请求)和4(应答)。1或2在[1]中有相同的意义,带有这样操

作码的包被当作ARP包通过。带有其它操作码的包并没有定义。和ARP一样,RARP

没有“找不到”和“错误”的包,因为许多RARP服务器可自由地应答请求。假如经过

一段时间后,没有收到应答,RARP请求的发送者将超时。

RARP包中ar$sha、ar$spa、ar$tha和ar$tpa字段的解释如下:

当操作码是3(请求):

ar$sha是发送者的硬件地址

ar$spa未定义

ar$tha是目的硬件地址

当发送者希望知道自己的协议地址的情况下,和ar$sha一样将是发送者

的硬件地址。

ar$tpa未定义

当操作码是4(应答):

ar$sha是响应者的硬件地址(应答包的发送者)

ar$spa是响应者的协议地址(见下面的注重)

ar$tha是目的硬件地址,必须和请求包中得到的相同

ar$tpa是目的协议地址,即需要得到的地址。

注重:在操作码为4的包中ar$spa字段填响应者的协议地址,只是为了方便。例如,

系统同时使用ARP和RARP,有效的协议-硬件对(ar$spa,ar$sha)会减少以后发ARP

请求的需要。

4.参考

[1] Plummer,D.,"AnEthernetAddressResolutionProtocol",RFC826,MIT-LCS,

November1982.

附录A.4.2BSDUnix下的两个实现例子

下面的实现描述概括了4.2BSDUnix下实现RARP服务器的两种不同方法。

A. 提供在内核外访问数据链路层包。RARP服务器完全在内核外实现,只在收发RARP

包时和内核进行互操作。内核被修改成能提供接口来访问这些包,目前4.2内核只

答应访问IP包。CMU的“包过滤”伪驱动是提供这种功能的现有机制。它在CMU

和斯坦福实现“用户级”网络服务器排序上,使用的很成功。

B. 在内核里维护一个数据库表项的缓存。整个RARP服务器数据库通过一个用户进程

在内核外维护。RARP服务器本身直接在内核中实现,并为应答维护一个小的数据

表项缓存。这个缓存和传输ARP的相同。这个缓存通过两个新的输入输出控制从实

际的RARP数据库得到(这像SIOCIFADDR,因为他们不直接和具体的套接字相关)。

一种是:“睡眠直到需要进行地址转换,然后把请求直接输出到用户进程”;另一种

是:“把地址转换输入内核表”。因此,当内核不能在缓存中发现一个表项的时候,

把这个请求放到队列中,然后调用wakeup()。第一个输入输出控制的实现是sleep(),

从队列中取出第一项返回给用户进程,因为内核不能在中断级等待直到用户进程回

应,它或者放弃(假设请求主机一定时间后会重传请求包),或者假如第二个输入输

出控制把请求拷贝到内核,在那个时候应答。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有