第三章 ARP 和 RARP

Post on 16-Mar-2016

128 views 7 download

description

第三章 ARP 和 RARP. §3-1 引言. 在网络级上,主机和路由器用它们的 逻辑地址 ( IP 地址)来标识。 分组都要通过物理网络才能到达这些主机和路由器。 在物理级上,主机和路由器用它们的 物理地址 ( MAC 地址)来标识。 这就表示将分组交付到一个主机或路由器需要两级地址:逻辑地址和物理地址。我们需要他们之间的互相映射。 可以使用静态和动态映射。 静态映射是创建一个表,他将一个逻辑地址与物理地址关联起来,这个表就存储在网络上的每一个机器上。这种做法局限性比较大。. - PowerPoint PPT Presentation

Transcript of 第三章 ARP 和 RARP

第三章 ARP 和 RARP

2

§3-1 引言 在网络级上,主机和路由器用它们的逻辑地址( IP 地址)来标识。 分组都要通过物理网络才能到达这些主机和路由器。 在物理级上,主机和路由器用它们的物理地址( MAC 地址)来标识。 这就表示将分组交付到一个主机或路由器需要两级地址:逻辑地址和物理地址。我们需要他们之间的互相映射。 可以使用静态和动态映射。 静态映射是创建一个表,他将一个逻辑地址与物理地址关联起来,这个表就存储在网络上的每一个机器上。这种做法局限性比较大。

3

在动态映射中,每当一个机器知道两个地址(逻辑地址或物理地址)中的一个时,就可使用协议将另一个地址找出来。 有两个协议来完成动态映射:地址解析协议( ARP )和逆地址解析协议( RARP )。 ARP 和 RARP 使用单播和广播物理地址。

4

§3-2 ARP 在任何时候,当主机或路由器有数据报要发送给另一个主机或路由器时,它必须有接收站的逻辑( IP )地址。但是 IP 数据报必须封装成帧才能通过物理网络。 这就表示,发送站必须有接收站的物理地址。 ARP 将一个 IP 地址与其物理地址关联起来。 任何时候当主机或路由器需要找出另一个主机或路由器在此网络上的物理地址时,他就发送一个 ARP 查询分组。 这个分组包括发送站的物理地址和 IP 地址,以及接收站的 IP 地址。 因为发送站不知道接收站的物理地址,查询就在网络上广播。

5

每一个在网络上的主机或路由器都接受和处理这个 ARP查询分组,但只有意图中的接受者才识别其 IP 地址,并发回 ARP 响应分组。 这个分组直接用单播发送给查询者,并使用接受到的查询分组中所用的物理地址。

请求系统A

系统B

我要查找一个结点的物理地址,其 IP 地址为:141.23.56.23

a. ARP 请求用广播发送

6

回答系统A

系统B

我是你要找的结点。 我的物理地址为: A46EF45983AB

b. 回答用单播发送

7

§3-3 ARP 分组格式 ARP 分组是直接封装在数据链路帧中。如下图所示,是

ARP 分组封装在以太网的帧中。 其中的类型字段指出了此帧所携带的数据是 ARP 分组。

前同步码和 SFD

目的地址 源地址 类型 数据 CRC

ARP 请求或回答分组类型: 0x0806

8 字节 6 字节 6 字节 2 字节 4 字节

8

而下图所示的是 ARP 分组的格式:

9

ARP 分组具有如下的一些字段: HTYPE (硬件类型):这是一个 16 比特字段。用来定义运行 ARP 的网络的类型。例如,以太网类型是 1 。 PTYPE (协议类型):这是一个 16 比特字段。标识发送设备所使用的协议类型。例如,对 IPv4 协议,这个字段的值是 080016 。 HLEN (硬件长度):这是一个 8 比特字段。数据报中硬件地址以字节为单位的长度。例如,对以太网这个值是 6 。 PLEN (协议长度):这是一个 8 比特字段。数据报中所用协议地址以字节为单位的长度。例如,对 IPv4 这个值是 4 。 OPER (操作码):这是一个 16 比特字段。操作码指明数据报是 A R P 请求还是 A R P 应答,假如是 A R P 请求,此值为 1 ;假如数据报是 A R P 应答,此值为 2。

10

SHA (发送站硬件地址):这是一个可变长度字段。用来定义发送方设备的硬件地址。例如,对以太网这个字段是 6 字节长。 SPA (发送站协议地址):这是一个可变长度字段。用来定义发送方设备的逻辑地址。对于 I Pv4 协议,这个字段是 4 字节长。 THA (目标硬件地址):这是一个可变长度字段。用来定义接收方设备的硬件地址。对以太网这个字段是 6 字节长。对于 ARP 请求报文,这个字段是全 0 ,因为发送站不知道目标的物理地址。 TPA (目标协议地址):这是一个可变长度字段。用来定义接收方设备的逻辑地址。对于 I Pv4 协议,这个字段是 4 字节长。

11

§3-4 ARP 操作步骤(一)工作步骤 当发送站知道目标站的 IP 地址,下面将讨论它如何知道目标站的物理地址:1 、 IP 请求 ARP 产生一个请求 ARP 报文,填入发送站的物理地址、发送站的 IP 地址以及目标 IP 地址。目标物理地址字段则填入 0 。2 、这个报文发送给数据链路层,在这一层他被封装成帧,使用发送站的物理地址作为源地址,而将物理广播地址作为目的地址。

12

3 、每一个主机或路由器都收到这个帧。因为这个帧包含了广播目的地址,所有的站都将此报文送交 ARP 。除了目标机器外,所有的机器都丢弃这个分组。目标机器识别这个 IP 地址。4 、目标机器用 ARP 报文进行回答。此报文包含他的物理地址。报文使用单播。5 、发送站收到这个回答报文,他现在知道了目标机器的物理地址。6 、携带数据发给目标机器的数据报现在封装成帧,用单播发送给目的站。

13

(二) ARP 的改进 当 A 向 B 发送 ARP 请求时,为了预计 B 的需求并避免额外的网络通信量, A 在向 B 发出的请求中也包含了 A的 IP 到物理地址的绑定。 B 从请求中提取出 A 的绑定,把它保存在自己的 ARP缓存中,然后向 A 发送应答。 因为当 A 广播它的首次请求时,网上所有机器都接收到该请求,并且可以从中提取出 A 的 IP 到物理地址的绑定,更新自己的 ARP缓存中的相应绑定内容。 当一台计算机替换了自己的主机接口时,物理地址也就变了。此时,要通知网络上的在 ARP 中存有该机绑定的其他所有计算机,以便于他们修改相应的项。系统可以在启动时发送一个 ARP 广播把新地址通知给其他主机。

14

§3-5 代理 ARP 有一种技术叫做代理(混杂的) ARP 可用来产生子网构成效应。 代理 ARP 是可以代表一组主机的 ARP 。

请求路由器或主机

代理 ARP路由器

代理 ARP 路由器回答所收到的对目的地址为 141.23.56.21, 141.23.56.22 和 141.23.56.23的任何 ARP 请求。

代理 ARP 图示

增加的子网

141.23.56.21 141.23.56.22 141.23.56.23

15

§3-6 ARP实现 从功能上讲, ARP 被划分为两部分: 第一部分在发送分组时把 IP 地址映射到物理地址上。( 1 )给定了一个目的站的 IP 地址,软件查询他的 ARP缓存,看是否有从该 IP 地址到物理地址的映射。若有,则软件提取该物理地址,把数据放到使用该地址的帧中,并发送该帧。若没有,则软件必须广播一个 ARP 请求并等待应答。( 2 )通过广播 ARP 请求来找到地址映射可能会很复杂,需考虑多种情况。 如:发送方收不到应答;应答被延迟;最初的广播被丢失; 保留欲发送分组;不对给定目标机器广播多次请求; 固定时间清除高速缓存表的表项等。

16

第二部分回答其他机器的请求。( 1 )当 ARP 分组抵达时,软件首先提取发送方的 IP 地址和物理地址对,并检查本地的高速缓存,看是否已经保存有该发送方的表项。如果有这个 IP 地址的表项,处理程序就用从分组中获得的物理地址覆盖缓存中原先的物理地址,从而更新表项。然后处理 ARP 分组的其他部分。( 2 )如果到达的是一个 ARP 请求,则接收方机器要查看他自己是否是请求的目标。如果是,则 ARP软件用本机的物理地址形成应答,并把应答直接发给请求方。( 3 )如果发送方的地址对不在接收方的高速缓存中,则接收方还要把这个地址对添加到缓存中。( 4 )如果是一个 ARP 应答到达时, ARP软件就把分组从队列中移走,放到一个帧中,把该地址绑定填入物理目的地址。

17

§3-7 ARP举例下表给出高速缓存表中的一些字段的开始部分:状态 队列 尝试 超时 协议地址 硬件地址R 5 900 180.3.6.1 ACAE32457342

P 2 2 129.34.4.8

P 14 5 201.11.56.7

R 8 450 114.5.7.89 457324ACAE32

P 12 1 220.55.5.7

F

R 9 60 19.1.7.82 4573E3242ACA

P 18 3 188.11.8.71

状态栏有三个值: FREE (表示此项目的生存时间已到期,可用于新的项目), PENDING (表示此项目的请求已经发出,但回答未收到)或 RESOLVED (表示此项目是完整的。已有了目的物理地址)

18

例 1 : ARP软件收到一个 IP 数据报,其目的地址为 114.5.7.89 。他检查高速缓存表,并找出了存在一个于此地址匹配的项目,状态为 R 。他提取出硬件地址,并将此分组和此地址发送给数据链路层来传输。高速缓存表保持不变。

例 2 : 20秒钟以后, ARP软件收到一个 IP 数据报,其目的地址为 116.1.7.22 。他检查高速缓存表,在表中未发现这个目的地址。于是在表中增加一个项目,其状态为 P ,而尝试值为 1 。他为这个目的创建一个新的队列,并将分组放入此队列。他然后就将对该目的地的 ARP 请求发送给数据链路层,新的高速缓存表如下:

19

状态 队列 尝试 超时 协议地址 硬件地址R 5 900 180.3.6.1 ACAE32457342

P 2 2 129.34.4.8

P 14 5 201.11.56.7

R 8 450 114.5.7.89 457324ACAE32

P 12 1 220.55.5.7

P 23 1 116.1.7.22

R 9 60 19.1.7.82 4573E3242ACA

P 18 3 188.11.8.71

20

例 3 : 15秒钟后, ARP软件收到一个 ARP 分组,其目标协议( IP )地址为: 188.11.8.71 。检查高速缓存表,找出了这个地址。他将项目的状态改变为 R ,并将超时值置为 900 。然后把目标地址添加到这个项目。现在他将队列 18 中的分组一个接一个的发送到数据链路层。新的高速缓存表如下:状态 队列 尝试 超时 协议地址 硬件地址R 5 900 180.3.6.1 ACAE32457342

P 2 2 129.34.4.8

P 14 5 201.11.56.7

R 8 450 114.5.7.89 457324ACAE32

P 12 1 220.55.5.7

P 23 1 116.1.7.22

R 9 60 19.1.7.82 4573E3242ACA

R 18 900 188.11.8.71 E34573242ACA

21

例4: 25秒钟后,高速缓存控制模块更新每一个项目。对4个已解析的项目的超时值减少60。倒数第二个项目的状态改变为 F ,因为超时时间是零。对三个项目中的每一个,尝试字段的值加1。在加1以后,有一个项目(其 IP 地址为: 201.11.56.7 )的尝试值超过了最大值,状态变为 F ,队列被取消。状态 队列 尝试 超时 协议地址 硬件地址R 5 840 180.3.6.1 ACAE32457342

P 2 3 129.34.4.8

F

R 8 390 114.5.7.89 457324ACAE32

P 12 2 220.55.5.7

P 23 2 116.1.7.22

F

R 18 840 188.11.8.71 E34573242ACA

22

§3-8 RARP RARP 是设计用来解析地址映射问题,这就是当一个机器知道它的物理地址但不知道其逻辑地址。 通常,机器的 IP 地址保存在硬盘中,操作系统在启动时找到它。 但通常一个无盘机器是从 ROM 来引导的,而 ROM 只有最少的引导信息。他不包括 IP 地址,因为在网络上的 IP地址是由管理员指派的。 但机器可以得到其物理地址,这在本地是唯一的。 这样就可以使用 RARP 协议从物理地址得到逻辑地址。 RARP 请求分组是广播发送, RARP 回答分组是单播发送。

23

请求主机 RARP服务器

我的物理地址是 A46EA4578236 ,我要查找我的 IP 地址

a. RARP 请求用广播发送

回答主机 RARP服务器

你的 IP 地址是:141.14.34.2

b. 回答用单播发送

24

前同步码和 SFD

目的地址 源地址 类型 数据 CRC

RARP 请求或回答分组类型: 0x0835

8 字节 6 字节 6 字节 2 字节 4 字节

除了操作码字段外( RARP 请求是 3 ,回答是 4 ), RARP 分组格式与 ARP 分组的完全一样。

25

随堂作业1 、 C 类网络上的一个主机的 IP 地址是 198.123.46.237 ,这个网络可划分为 5 个子网,试问子网掩码是什么?每一个子网的配置?2 、 ARP 分组的长度是固定的吗?试加以解释。3 、一主机的 IP 地址是 125.45.23.12 而所在的以太网物理地址是 2345ABC4567D ,收到了一个分组,其目的 IP 地址是 125.11.78.10 而所在的以太网物理地址是 AABB2345C

C67 。试给出此主机发出的 ARP 请求分组中的各项目,和 ARP 回答分组中的各项目。