📄 rfc826.txt
字号:
组织:中国互动出版网(http://www.china-pub.com/)
RFC文档中文翻译计划(http://www.china-pub.com/compters/emook/aboutemook.htm)
E-mail:ouyang@china-pub.com
译者:沈进 (simon_shen shen_jin@263.net)
译文发布时间:2001-9-6
版权:本中文翻译文档版权归中国互动出版网所有。可以用于非商业用途自由转载,但必须
保留本文档的翻译及版权信息。
Network Working Group David C. Plummer
Request For Comments: 826 (DCP@MIT-MC)
November 1982
以太网地址转换协议或转换网络协议地址
为48比特以太网地址用于在以太网硬件上传输
(RFC826——An Ethernet Address Resolution Protocol or Converting Network Protocol
Addresses to 48.bit Ethernet Address for Transmission on Ethernet Hardware)
目录
1.摘要 1
2.说明 3
3.问题 5
4.动机 5
5.定义 5
6.包格式 6
7.发包 6
8.收包 7
9.为什么这么做 7
10.网络监控和排错 8
11.一个例子 9
12.相关情况 9
1.摘要
通过路由机制,协议P在发送主机S上的实现决定了S需要传输到目标主机T,而T连
在和S相连的10兆以太网电缆上。实际传输以太网包必须产生一个48比特以太网地址。主
机的协议P地址并不总是和相应的以太网地址兼容(长度或值不同)。现在这个协议允许动态
地发布
信息,这些信息可用来构造转换协议P地址空间内的地址A为48比特以太网地址的一张表。
允许在非10兆以太网硬件使用的协议已经被综合总结,无线电网络就是这种硬件。
[这篇RFC的目的是提出一种转换协议地址(例如IP地址)为本地网络地址(例如以太网地
址)的方法。这个问题现在受到ARPA Internet社区的普遍关注,这里提出的方法仅供读者
参考,并不是Internet标准的描述。]
2.说明
这个协议起初是为DEC/Intel/Xerox的10兆以太网设计的,现在已允许用在其它类型的
网络上。许多讨论将直接针对10兆以太网。总之,合适的话将遵循以太网的特定讨论。
DOD Internet协议将作为Internet的规范被参考。
这里用到的数字,在以太网标准中是高位字节在前的,这和例如PDP-11,VAX等机器的
字节编址相反,因此对下面描述的操作字段(ar$op)必须特别小心。
需要处理硬件名字空间已达成一致。直到官方认可,请求可发送到
David C. Plummer
Symbolics, Inc.
243 Vassar Street
Cambridge, Massachusetts 02139
或发邮件到DCP@MIT-MC。
3.问题
世界总的来说是杂乱的,同时网络增加了这种杂乱。几乎在网络架构的每一层,都有
几个潜在的协议可以使用。例如在高一点的层次有用于远程登录的TELNET和SUPDUP。低一
点的有CHAOS,DOD TCP,Xerox,BSP或DECnet等可靠字节流协议。甚至在与硬件较接近的
逻辑传输层也有CHAOS,DOD Internet,Xerox PUP,DECnet等协议。10兆以太网通过使用
以太网包头中的类型字段来使这些协议(而且更多)能在一根电缆上共存。然而,10兆以太
网在物理电缆上需要48比特地址,而大多数协议地址不是48比特,它们并不需要与硬件的
48比特以太网地址有什么关系。例如CHAOS的地址是16比特,DOD Internet的地址是32
比特,Xerox PUP的地址是8比特。这就需要一个协议来动态地区分一个<协议,地址>对和
一个48比特以太网地址的对应关系。
4.动机
随着更多的制造商提供遵循DEC,Intel和Xerox发布的规范的接口产品,10兆以太网
的使用也在增加。随着使用的增加,为这个接口开发的软件也越来越多。有两个选择:(1)
每个实现者用自己的方法做某种形式的地址转换;(2)每个实现者使用统一标准,这样代码
可以不加修改的移植到其它系统。这个建议试图建立一个标准。
5.定义
下面的定义是作为对填在以太网包头的类型字段的值的参考。
ether_type$XEROX_PUP,
ether_type$DOD_INTERNET,
ether_type$CHAOS,
一个新的值
ether_type$ADDRESS_RESOLUTION
再定义以下的值(后面讨论)
ares_op$REQUEST (= 1, 高位字节在前) 和
ares_op$REPLY (= 2), 和
ares_hrd$Ethernet (= 1).
6.包格式
为了把<协议,地址>对映射到48比特以太网地址用于传输,需要一个体现地址转换协
议的包格式。包格式如下所示。
以太网传输层(并不是用户需要访问的):
48比特:目的以太网地址
48比特:源以太网地址
16比特:协议类型 = ether_type$ADDRESS_RESOLUTION
以太网包数据:
16比特:(ar$hrd)硬件地址空间(例如:Ethernet,Packet Radio Net。)
16比特:(ar$pro)协议地址空间。对于以太网硬件,它属于类型字段ether_type$<协
议>的集合
8比特:(ar$hln)每种硬件地址的字节长度
8比特:(ar$pln)每种协议地址的字节长度
16比特:(ar$op)操作码(ares_op$REQUEST | ares_op$REPLY)
n字节:(ar$sha)源硬件地址,n从ar$hln字段得到
m字节:(ar$spa)源协议地址,m从ar$pln字段得到
n字节:(ar$tha)目的硬件地址(如果知道的话)
m字节:(ar$tpa)目的协议地址。
7.发包
当网络层往下传来一个包,路由将决定这个包下一跳的协议地址,并根据目的协议地
址决定用哪个硬件进行传输。在10兆以太网需要地址转换。一些更低的层次(像硬件驱动层
)必须咨询地址转换模块(也许在以太网支持模块中实现)把<协议类型,目的协议地址>对转
换成48比特以太网地址。地址转换模块试图在一个表中寻找这个对。如果找到,则返回相
应的48比特以太网地址给调用者(硬件驱动层)。如果找不到,也许应通知调用者这个包正
在被丢弃(假定包会被高层重传),同时发出一个类型字段为ether_type$ADDRESS_RESOLUTI
ON的以太网包。地址转换模块在ar$hrd字段中填ares_hrd$Ethernet,在ar$pro字段中填
要被转换的协议类型,在ar$hln字段中填6(48比特以太网地址字节数),在ar$pln字段中
填该协议地址的字节数,在ar$op字段中填ares_op$REQUEST,在ar$sha字段中填自己的48
比特以太网地址,在ar$spa字段中填自己的协议地址,在ar$tpa字段中填要访问机器的协
议地址。不能在ar$tha字段中填特殊的值,因为它的值正是要得到的。如果实现上简单的话,
ar$tpa字段可以填硬件的广播地址(在10兆以太网上所有机器)。根据原先的路由机制,这
个包将被广播到所有在以太网电缆上的工作站。
8.收包
当收到地址转换包时,收包模块把它送到运行类似下面算法的地址转换模块。条件不
成立意味着处理结束,并丢弃包。
?我用ar$hrd字段中的硬件吗?
是的:(几乎肯定)
[检查ar$hln的硬件地址长度(可选)]
?我用ar$pro字段中的协议吗?
是的:
[检查ar$pln的协议地址长度(可选)]
Merge_flag := false
如果<协议类型,发送者协议地址>对在我的转换表中,用包中的发送者硬件
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -