分享
 
 
 

RFC903 - Reverse Address Resolution Protocol

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

Network Working Group Finlayson, Mann, Mogul, Theimer

Request for Comments: 903 Stanford University

June 1984

A Reverse Address Resolution Protocol

Ross Finlayson, Timothy Mann, Jeffrey Mogul, Marvin Theimer

Computer Science Department

Stanford University

June 1984

Status of this Memo

This RFCsuggests a method for workstations to dynamically find their

protocol address (e.g., their Internet Address), when they know only

their hardware address (e.g., their attached physical network

address).

This RFCspecifies a proposed protocol for the ARPA Internet

community, and requests discussion and suggestions for improvements.

I. IntrodUCtion

Network hosts such as diskless workstations frequently do not know

their protocol addresses when booted; they often know only their

hardware interface addresses. To communicate using higher-level

protocols like IP, they must discover their protocol address from

some external source. Our problem is that there is no standard

mechanism for doing so.

Plummer's "Address Resolution Protocol" (ARP) [1] is designed to

solve a complementary problem, resolving a host's hardware address

given its protocol address. This RFCproposes a "Reverse Address

Resolution Protocol" (RARP). As with ARP, we assume a broadcast

medium, such as Ethernet.

II. Design Considerations

The following considerations guided our design of the RARP protocol.

A. ARP and RARP are different operations. ARP assumes that every

host knows the mapping between its own hardware address and protocol

address(es). Information gathered about other hosts is accumulated

in a small cache. All hosts are equal in status; there is no

distinction between clients and servers.

On the other hand, RARP requires one or more server hosts to maintain

a database of mappings from hardware address to protocol address and

respond to requests from client hosts.

RFC903 June 1984

B. As mentioned, RARP requires that server hosts maintain large

databases. It is undesirable and in some cases impossible to maintain

such a database in the kernel of a host's operating system. Thus,

most implementations will require some form of interaction with a

program outside the kernel.

C. Ease of implementation and minimal impact on existing host

software are important. It would be a mistake to design a protocol

that required modifications to every host's software, whether or not

it intended to participate.

D. It is desirable to allow for the possibility of sharing code with

existing software, to minimize overhead and development costs.

III. The Proposed Protocol

We propose that RARP be specified as a separate protocol at the

data-link level. For example, if the medium used is Ethernet, then

RARP packets will have an Ethertype (still to be assigned) different

from that of ARP. This recognizes that ARP and RARP are two

fundamentally different operations, not supported equally by all

hosts. The impact on existing systems is minimized; existing ARP

servers will not be confused by RARP packets. It makes RARP a general

facility that can be used for mapping hardware addresses to any

higher level protocol address.

This approach provides the simplest implementation for RARP client

hosts, but also provides the most difficulties for RARP server hosts.

However, these difficulties should not be insurmountable, as is shown

in Appendix A, where we sketch two possible implementations for

4.2BSD Unix.

RARP uses the same packet format that is used by ARP, namely:

ar$hrd (hardware address space) - 16 bits

ar$pro (protocol address space) - 16 bits

ar$hln (hardware address length) - 8 bits

ar$pln (protocol address length) - 8 bits

ar$op (opcode) - 16 bits

ar$sha (source hardware address) - n bytes,

where n is from the ar$hln field.

ar$spa (source protocol address) - m bytes,

where m is from the ar$pln field.

ar$tha (target hardware address) - n bytes

ar$tpa (target protocol address) - m bytes

ar$hrd, ar$pro, ar$hln and ar$pln are the same as in regular ARP

(see [1]).

RFC903 June 1984

Suppose, for example, that 'hardware' addresses are 48-bit Ethernet

addresses, and 'protocol' addresses are 32-bit Internet Addresses.

That is, we wish to determine Internet Addresses corresponding to

known Ethernet addresses. Then, in each RARP packet, ar$hrd = 1

(Ethernet), ar$pro = 2048 decimal (the Ethertype of IP packets),

ar$hln = 6, and ar$pln = 4.

There are two opcodes: 3 ('request reverse') and 4 ('reply reverse').

An opcode of 1 or 2 has the same meaning as in [1]; packets with such

opcodes may be passed on to regular ARP code. A packet with any

other opcode is undefined. As in ARP, there are no "not found" or

"error" packets, since many RARP servers are free to respond to a

request. The sender of a RARP request packet should timeout if it

does not receive a reply for this request within a reasonable amount

of time.

The ar$sha, ar$spa, $ar$tha, and ar$tpa fields of the RARP packet are

interpreted as follows:

When the opcode is 3 ('request reverse'):

ar$sha is the hardware address of the sender of the packet.

ar$spa is undefined.

ar$tha is the 'target' hardware address.

In the case where the sender wishes to determine his own

protocol address, this, like ar$sha, will be the hardware

address of the sender.

ar$tpa is undefined.

When the opcode is 4 ('reply reverse'):

ar$sha is the hardware address of the responder (the sender of the

reply packet).

ar$spa is the protocol address of the responder (see the note

below).

ar$tha is the hardware address of the target, and should be the

same as that which was given in the request.

ar$tpa is the protocol address of the target, that is, the desired

address.

Note that the requirement that ar$spa in opcode 4 packets be filled

RFC903 June 1984

in with the responder's protocol is purely for convenience. For

instance, if a system were to use both ARP and RARP, then the

inclusion of the valid protocol-hardware address pair (ar$spa,

ar$sha) may eliminate the need for a subsequent ARP request.

IV. References

[1] Plummer, D., "An Ethernet Address Resolution Protocol", RFC826,

MIT-LCS, November 1982.

Appendix A. Two Example Implementations for 4.2BSD Unix

The following implementation sketches outline two different

approaches to implementing a RARP server under 4.2BSD.

A. Provide Access to data-link level packets outside the kernel. The

RARP server is implemented completely outside the kernel and

interacts with the kernel only to receive and send RARP packets. The

kernel has to be modified to provide the appropriate access for these

packets; currently the 4.2 kernel allows access only to IP packets.

One existing mechanism that provides this capability is the CMU

"packet-filter" pseudo driver. This has been used successfully at

CMU and Stanford to implement similar sorts of "user-level" network

servers.

B. Maintain a cache of database entries inside the kernel. The full

RARP server database is maintained outside the kernel by a user

process. The RARP server itself is implemented directly in the

kernel and employs a small cache of database entries for its

responses. This cache could be the same as is used for forward ARP.

The cache gets filled from the actual RARP database by means of two

new ioctls. (These are like SIOCIFADDR, in that they are not really

associated with a specific socket.) One means: "sleep until there is

a translation to be done, then pass the request out to the user

process"; the other means: "enter this translation into the kernel

table". Thus, when the kernel can't find an entry in the cache, it

puts the request on a (global) queue and then does a wakeup(). The

implementation of the first ioctl is to sleep() and then pull the

first item off of this queue and return it to the user process.

Since the kernel can't wait around at interrupt level until the user

process replies, it can either give up (and assume that the

requesting host will retransmit the request packet after a second) or

if the second ioctl passes a copy of the request back into the

kernel, formulate and send a response at that time.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝網路 版權所有