主页 > 官网最新版imtoken钱包 > 以太网地址转换协议或转换 Internet 协议地址

以太网地址转换协议或转换 Internet 协议地址

官网最新版imtoken钱包 2023-11-30 05:09:28

一、总结

通过路由机制,协议P在发送主机S上的实现决定了S需要转发给目标主机T,T连接

在连接S的10M以太网线上。一个以太网包的实际传输必然产生一个48位的以太网地址。host

机器的协议 P 地址并不总是与相应的以太网地址兼容(长度或值不同)。协议现在允许动态

释放

信息,可用于构造一个表,将协议P地址空间中的地址A转换为48位以太网地址。

允许在非 10M 以太网硬件上使用的协议已经合成,例如无线电网络。

[本RFC的目的是提出一种将协议地址(如IP地址)转换为本地网络地址(如以太网地址)的方法

address) 方法。这个问题现在在 ARPA 互联网社区受到普遍关注,这里提供的方法仅供读者使用

参考,而不是 Internet 标准的描述。 ]

2.说明

该协议最初是为DEC/Intel/Xerox的10M以太网设计的,现在允许用于其他类型的以太网

在线的。 大部分讨论将针对 10 Gigabit 以太网。 无论如何,以太网特定的讨论将在适当的时候进行。

DODInternet 协议将被称为 Internet 规范。

这里使用的数字是以太网标准中的高位字节在前,与PDP-11、VAX等机器相同。

字节寻址则相反,因此必须特别注意下面描述的 op 字段 (ar$op)。

处理硬件命名空间的需求已经达成一致。在官方认可之前,请求可以发送到

戴维·普卢默

符号公司

瓦萨街 243 号

剑桥,马萨诸塞州02139

或发送电子邮件至 DCP@MIT-MC。

3.问题

世界通常是一团糟的,而网络更是雪上加霜。几乎在网络架构的每一层,都有

可以使用几种可能的协议。 比如上一层有远程登录的TELNET和SUPDUP。下一层

一些可靠的字节流协议,例如 CHAOS、DODTCP、Xerox、BSP 或 DECnet。即使在更近的硬件中

逻辑传输层还有CHAOS、DODInternet、XeroxPUP、DECnet等协议。 10 吉比特以太网通过使用

以太网报头中的类型字段,使这些协议(以及更多)能够在单根电缆中共存。但是,10M 以太网

Internet 要求物理电缆上有 48 位地址,而大多数协议地址不是 48 位的,它们不需要与硬件通信

48 位以太网地址有什么关系。 例如CHAOS的地址是16位,DODInternet的地址是32位。

位,XeroxPUP的地址是8位。这需要一个协议来动态区分一对和

一个48位的以太网地址对应。

4.动机

随着越来越多的厂商提供遵循DEC、Intel和Xerox发布的规范的接口产品,10G以太网

使用量也在增加。 随着使用量的增加,越来越多的软件为此接口开发。 有两种选择:(1)

每个实现者都使用自己的方法来进行某种形式的地址转换; (2) 每个实现者使用统一的标准,使代码

无需修改即可移植到其他系统。 本提案试图建立一个标准。

5. 定义

以下定义作为以太网报文头Type字段填写值的参考。

ether_type$XEROX_PUP,

ether_type$DOD_INTERNET,

以太类型 $CHAOS,

一个新的价值

以太类型 $ADDRESS_RESOLUTION

然后定义如下值(稍后讨论)

ares_op$REQUEST(=1, 高字节在前) 和

ares_op$REPLY(=2), 和

ares_hrd$以太网(=1)。

6. 包装格式

为了将对映射到 48 位以太网地址进行传输,需要包含地址转换协议的协议。

约定的数据包格式。 数据包格式如下。

以太网传输层(不是用户需要访问的):

48 位:目的以太网地址

48 位:源以太网地址

16 位:协议类型=ether_type$ADDRESS_RESOLUTION

以太网包数据:

16 位:(ar$hrd) 硬件地址空间(例如:以太网、PacketRadioNet。)

16位:(ar$pro)协议地址空间。对于以太网硬件,属于类型字段ether_type$的集合

8 位:(ar$hln) 每个硬件地址的字节长度

8 bits: (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 Gigabit Ethernet 需要地址转换。一些较低的层(如硬件驱动层

) 必须咨询地址转换模块(可能在以太网支持模块中实现)才能转换

更改为 48 位以太网地址。 地址转换模块试图在表中找到这一对。如果找到,返回相对

对应的48位以太网地址给调用者(硬件驱动层)。如果没有找到,或许应该通知调用者这个包是

丢弃后(假设数据包会被上层重传)erc20可以转以太坊地址码,同时发送一个type域作为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字段可以填写硬件的广播地址(10M以太网上的所有机器)。按照原来的路由机制,这个

数据包将广播到以太网电缆上的所有工作站。

8. 接收包裹

当接收到地址转换数据包时,数据包接收模块将其发送到运行类似于以下算法的地址转换模块。条件不是

True 表示处理结束,数据包被丢弃。

? 我是否使用 ar$hrd 字段中的硬件?

是:(几乎可以肯定)

[检查ar$hln的硬件地址长度(可选)]

? 我是否使用 ar$pro 字段中的协议?

是的:

[检查 ar$pln 的协议地址长度(可选)]

合并标志:=假

如果这对在我的转换表中,请使用包中的发送器硬件

地址更新表,并将 Merge_flag 设置为 true。

? 我是目标协议地址吗?

是的:

如果 Merge_flag 为假,则将三元组添加到转换表。

? 操作码是ares_op$REQUEST吗? (现在看操作码)

是的:

交换硬件和协议字段,将本地硬件和协议地址填入发送者字段。

在ar$op字段填写ares_op$REPLY。然后从接收到数据包的硬件发送这个数据包

发送到目标硬件地址。

请注意,在检查操作码之前,三元组是

被添加到转换表中。这是基于通信是双向的假设,如果 A 有某种理由与 B 进行“交谈”,则 B 也

将有一些理由与 A 进行“交谈”。还要注意,如果该对已存在于条目中,

新的硬件地址将覆盖旧的。 环境提供了这样做的动力。

总结:ar$hrd 和 ar$hln 字段使非 10M 以太网可以使用此协议和数据包格式。对于 10M

以太网,即。对于其他硬件网络,ar$prozi字段可能不再对应

以太网类型字段,但会与地址转换所依赖的协议有关。

9. 你为什么要这样做

不期望周期性广播,假设一个以太网上有100台主机,每10分钟广播一次地址转换

信息(可能通过参数设置),以便每 6 秒有一个数据包。 这很有道理,但有用吗?工作站一

一般不相互通信(因此翻译表中有 100 个无用条目),它们主要与大型机、文件服务器或网络通信

桥接通信,但只与少数主机通信(如交互式对话)。本文描述的协议仅在需要时发送消息

信息,每台机器每次启动只发送一次。

这种包格式不允许在一个包中进行多个转换。 这是为了简单起见。 复杂的话,

数据包将更难分析,而且大部分信息都是无用的。想想一个有四个协议的网桥告诉工作站四个

地址,其中三个工作站从未使用过。

这种数据包格式允许响应数据包重用请求数据包的存储空间。 响应数据包和请求数据包具有相同的长度。

字段也是一样的。

硬件字段 (ar$hrd) 的值来自一个列表。 目前只有一个为 10 Gigabit Ethernet 定义的值(ares_hrd

$Ethernet=1)。已经有关于在 PacketRadioNetworks 上使用此协议的讨论,这需要

使用此协议的其他硬件媒体分配值。

对于 10 Gb 以太网,协议字段 (ar$pro) 的值来自集合 ether_type$,它是对分配协议的引用

类型的自然重用。将其与操作码 (ar$op) 相结合将有效地减半使用该协议可转换的协议数量

同时也会给网络监控和故障排除带来更多的困难(详见下文网络监控和故障排除),希望不要

有32768个协议,但是Murphy制定了一些规则不允许我们做这个假设。

理论上,长度字段(ar$hln 和 ar$pln)是冗余的,因为根据硬件类型(在 ar$hrd 中)和

协议类型(在 ar$pro 中)可以确定协议地址的长度。它们包含在可选的一致性检查和

网络监控和故障排除(见下文)。

操作码确定它是请求(可能会导致回复)还是对先前请求的回复。 16位有点长,

但是这个字段是必需的。

发送方的硬件地址和协议地址对于从转换表中得到结果肯定是有用的。

请求包格式中需要目的协议地址,以便机器决定是否将发送者信息放入

在转换表中,是否发送回复。如果假设回复是由请求引起的,那么在回复包中没有这个字段

necessary.It is included for completeness,网络监控,并使上述算法更简单(将发件人信息放入

查看转换表后的操作码)。

目标硬件地址包含在完整性和网络监控中。它在请求数据包中没有意义,因为机器

机器要求的正是这个数字。 它在回复数据包中是处理请求的机器的地址。在某些实现中(例如不检查

14-bit Ethernet header),将该字段作为数据包的目的硬件地址发送给硬件驱动,保存在寄存器中或

在堆栈空间中。

地址之间没有填充字节。 数据包数据被视为字节流,其中只有 3 个字节对被视为字(ar$hrd,a

r$pro 和 ar$op),它们首先发送高位字节。

10. 网络监控与故障排除

上述地址转换协议允许机器获取高层协议活动(如CHAOS、Internet、

PUP, DECnet) information.It 确定正在使用的以太网地址(按值)erc20可以转以太坊地址码,以及

协议地址。 事实上,监管者不必使用任何一种高层协议。 它是这样工作的:

当收到一个地址转换包时,它总是将存储的

换表。 硬件和协议地址的长度可以从数据包的ar$hln和ar$pln字段中得到。如果操作码是一个应答,监控

控制器可以丢弃该数据包。 如果操作码是一个请求并且目标协议地址与监视器的协议地址相同,

监控器通常会发送一个回复包。监控器只会得到一个映射,因为对请求的响应将直接发送给请求者

主持人。 监视器可以尝试发送自己的请求,但要小心,这会导致两个监视器卡在一个请求发送循环中。

由于协议和操作码没有合并到一个字段中,监视器不必知道每个高级协议的请求操作

响应操作码对应的code。长度字段携带足够的信息来“解析”协议地址,虽然它不携带

协议地址的含义。

地址转换协议的成功实现也可以调试不成功的实现。假设硬件驱动程序成功

广播了以太类型为 ether_type$ADDRESS_RESOLUTION 的数据包。由于实现错误或维护表重复

复杂度,数据包格式可能不正确。因为请求是广播,monitor会收到这个数据包,必要时显示

用于故障排除。

11.一个例子

假设您在同一条 10M 以太网电缆上有机器 X 和 Y。 它们的以太网地址为 EA(X) 和 EA(Y),DOD

互联网地址 IPA(X) 和 IPA(Y)。 假设Internet的以太网类型是ET(IP)。机器X刚刚启动,并且

它迟早会向机器 Y 发送一个数据包。 X 知道要向 IPA(Y) 发送一个数据包,并告诉 IPA(Y) 给硬件驱动程序(这里

以太网驱动程序)。驱动程序让地址转换模块将其转换为 48 位以太网地址,但是

由于 X 刚刚启动,它没有这些信息。 它不先发送数据包,而是生成一个地址转换数据包,

(ar$hrd)=ares_hrd$以太网

(ar$pro)=ET(IP)

(ar$hln)=EA 的长度 (X)

(ar$pln)=(IPA(X) 的长度

(ar$op)=ares_op$REQUEST

(ar$sha)=EA(X)

(ar$spa)=IPA(X)

(ar$tha) = 任意值

(ar$tpa)=IPA(Y)

并广播到电缆上的所有机器。

机器Y收到这个数据包,判断自己是否理解这个硬件类型(Ethernet),是否理解这个协议(Internet

net), 包是否是给自己的((ar$tpa)=IPA(Y))。然后把字母映射到EA(X)

写下信息(可能会覆盖已有的条目)。然后我意识到这是一个请求,所以我交换了字段并在发送中填写了EA(Y)

发件人以太网地址字段 (ar$sha),设置操作码以回答,并将数据包直接(不广播)发送到 EA(X)。

这时候Y已经知道怎么发给X了,但是X不知道怎么发给Y。

机器X收到Y发来的数据包,生成到EA(Y)的映射,意识到是响应数据包,

就这么废弃了。 下次 X 的 Internet 模块尝试向 Y 发送数据包时,地址转换将成功并且数据包将到达。

如果 Y 的 Internet 模块要发送给 X,它也会成功,因为 Y 已经从 X 的地址转换请求中记住了

需要的信息。

十二、有关情况

转换表过期可能是可取的,这些的实现超出了本协议的范围。这里有更详细的描述(感觉

谢谢 MOON @SCRC @MIT-MC)。

当主机移动时,假设地址转换表在移动期间被清除,则从该主机发起的任何连接都可以

工作。 但是已经发起连接到该主机的其他主机没有任何理由知道要丢弃它们的旧地址。

48 位以太网地址是唯一的,在任何时候都是固定的,不会改变。如果主机名(和其他协议

地址)在不同的物理硬件上重新分配,主机被“移动”。根据经验,总会有

由于组件或软件错误导致的错误路由信息,但此类错误不允许永远存在。可能是启动连接失败

如果失败,地址翻译模块会认为对方由于对方死机或翻译表条目错误等原因无法联系到对方,从而删除

删除此信息。也许当从主机接收到数据包时,用于发送到该主机的转换表条目已更新

钟。 如果在一定时间内没有收到来自某个主机的数据包,这个翻译条目将被删除。这将为每个生成

为传入数据包扫描转换表的额外负担。 也许使用散列或索引会更快。

所提出的用于接收地址转换数据包的算法试图减少主机移动后的恢复时间。 如果已经在转换表中,发送者的硬件地址将覆盖这个条目。因此在 good ether

在网络上,当请求广播到达时,每个工作站都会得到这个新的硬件地址。

另一种方法是有一个处理超时的守护进程。在一定时间后,守护进程考虑删除一个表

物品。 它首先使用表中的以太网地址直接发送地址转换请求数据包(必要时重传几次)。如果在

如果短时间内没有收到回复,条目将被删除。此请求直接发送,不会影响

每个工作站。 删除表项是删除必须重新获取的有用信息。

由于主机只发送关于他们自己的信息而不是关于任何其他主机的信息,重新启动一个

主机保持其地址映射表是最新的。 通过机器对机器的传输,错误消息不会永远存在。机器

唯一可能存在的错误信息是不知道其他机器修改了48位以太网地址。可能需要手动更新

(或清除)地址映射表就足够了。

如果认为该文档很重要,则需要多加考虑。 可以使用任何地址转换类型的协议。

RFC826 - AnEthernetAddressResolutionProtocolorConvertingNetworkProtocol

Addressesto48.bitEthernetAddressforTransmissiononEthernetHardware

Ethernet Address Translation Protocol 或将网络协议地址翻译成 48 位以太网地址,以便在以太网硬件上传输