250 likes | 459 Views
第三章 ARP 和 RARP. §3-1 引言. 在网络级上,主机和路由器用它们的 逻辑地址 ( IP 地址)来标识。 分组都要通过物理网络才能到达这些主机和路由器。 在物理级上,主机和路由器用它们的 物理地址 ( MAC 地址)来标识。 这就表示将分组交付到一个主机或路由器需要两级地址:逻辑地址和物理地址。我们需要他们之间的互相映射。 可以使用静态和动态映射。 静态映射是创建一个表,他将一个逻辑地址与物理地址关联起来,这个表就存储在网络上的每一个机器上。这种做法局限性比较大。.
E N D
§3-1 引言 • 在网络级上,主机和路由器用它们的逻辑地址(IP地址)来标识。 • 分组都要通过物理网络才能到达这些主机和路由器。 • 在物理级上,主机和路由器用它们的物理地址(MAC地址)来标识。 • 这就表示将分组交付到一个主机或路由器需要两级地址:逻辑地址和物理地址。我们需要他们之间的互相映射。 • 可以使用静态和动态映射。 • 静态映射是创建一个表,他将一个逻辑地址与物理地址关联起来,这个表就存储在网络上的每一个机器上。这种做法局限性比较大。
在动态映射中,每当一个机器知道两个地址(逻辑地址或物理地址)中的一个时,就可使用协议将另一个地址找出来。在动态映射中,每当一个机器知道两个地址(逻辑地址或物理地址)中的一个时,就可使用协议将另一个地址找出来。 • 有两个协议来完成动态映射:地址解析协议(ARP)和逆地址解析协议(RARP)。 • ARP和RARP使用单播和广播物理地址。
§3-2 ARP • 在任何时候,当主机或路由器有数据报要发送给另一个主机或路由器时,它必须有接收站的逻辑(IP)地址。但是IP数据报必须封装成帧才能通过物理网络。 • 这就表示,发送站必须有接收站的物理地址。 • ARP将一个IP地址与其物理地址关联起来。 • 任何时候当主机或路由器需要找出另一个主机或路由器在此网络上的物理地址时,他就发送一个ARP查询分组。 • 这个分组包括发送站的物理地址和IP地址,以及接收站的IP地址。 • 因为发送站不知道接收站的物理地址,查询就在网络上广播。
我要查找一个结点的物理地址,其IP地址为:141.23.56.23我要查找一个结点的物理地址,其IP地址为:141.23.56.23 请求 系统A 系统B a. ARP请求用广播发送 • 每一个在网络上的主机或路由器都接受和处理这个ARP查询分组,但只有意图中的接受者才识别其IP地址,并发回ARP响应分组。 • 这个分组直接用单播发送给查询者,并使用接受到的查询分组中所用的物理地址。
回答 我是你要找的结点。 我的物理地址为:A46EF45983AB 系统A 系统B b. 回答用单播发送
ARP请求或回答分组 类型:0x0806 前同步码和SFD 目的地址 源地址 类型 数据 CRC 8字节 6字节 6字节 2字节 4字节 §3-3 ARP分组格式 • ARP分组是直接封装在数据链路帧中。如下图所示,是ARP分组封装在以太网的帧中。 • 其中的类型字段指出了此帧所携带的数据是ARP分组。
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。
SHA(发送站硬件地址):这是一个可变长度字段。用来定义发送方设备的硬件地址。例如,对以太网这个字段是6字节长。SHA(发送站硬件地址):这是一个可变长度字段。用来定义发送方设备的硬件地址。例如,对以太网这个字段是6字节长。 • SPA(发送站协议地址):这是一个可变长度字段。用来定义发送方设备的逻辑地址。对于I Pv4协议,这个字段是4字节长。 • THA(目标硬件地址):这是一个可变长度字段。用来定义接收方设备的硬件地址。对以太网这个字段是6字节长。对于ARP请求报文,这个字段是全0,因为发送站不知道目标的物理地址。 • TPA(目标协议地址):这是一个可变长度字段。用来定义接收方设备的逻辑地址。对于I Pv4协议,这个字段是4字节长。
§3-4 ARP操作步骤 (一)工作步骤 当发送站知道目标站的IP地址,下面将讨论它如何知道目标站的物理地址: 1、IP请求ARP产生一个请求ARP报文,填入发送站的物理地址、发送站的IP地址以及目标IP地址。目标物理地址字段则填入0。 2、这个报文发送给数据链路层,在这一层他被封装成帧,使用发送站的物理地址作为源地址,而将物理广播地址作为目的地址。
3、每一个主机或路由器都收到这个帧。因为这个帧包含了广播目的地址,所有的站都将此报文送交ARP。除了目标机器外,所有的机器都丢弃这个分组。目标机器识别这个IP地址。3、每一个主机或路由器都收到这个帧。因为这个帧包含了广播目的地址,所有的站都将此报文送交ARP。除了目标机器外,所有的机器都丢弃这个分组。目标机器识别这个IP地址。 4、目标机器用ARP报文进行回答。此报文包含他的物理地址。报文使用单播。 5、发送站收到这个回答报文,他现在知道了目标机器的物理地址。 6、携带数据发给目标机器的数据报现在封装成帧,用单播发送给目的站。
(二)ARP的改进 • 当A向B发送ARP请求时,为了预计B的需求并避免额外的网络通信量,A在向B发出的请求中也包含了A的IP到物理地址的绑定。B从请求中提取出A的绑定,把它保存在自己的ARP缓存中,然后向A发送应答。 • 因为当A广播它的首次请求时,网上所有机器都接收到该请求,并且可以从中提取出A的IP到物理地址的绑定,更新自己的ARP缓存中的相应绑定内容。 • 当一台计算机替换了自己的主机接口时,物理地址也就变了。此时,要通知网络上的在ARP中存有该机绑定的其他所有计算机,以便于他们修改相应的项。系统可以在启动时发送一个ARP广播把新地址通知给其他主机。
141.23.56.21 141.23.56.22 141.23.56.23 代理ARP路由器回答所收到的对目的地址为141.23.56.21, 141.23.56.22和141.23.56.23的任何ARP请求。 增加的子网 代理ARP路由器 请求 路由器或主机 代理ARP图示 §3-5 代理ARP • 有一种技术叫做代理(混杂的)ARP可用来产生子网构成效应。 • 代理ARP是可以代表一组主机的ARP。
§3-6 ARP实现 • 从功能上讲,ARP被划分为两部分: • 第一部分在发送分组时把IP地址映射到物理地址上。 (1)给定了一个目的站的IP地址,软件查询他的ARP缓存,看是否有从该IP地址到物理地址的映射。若有,则软件提取该物理地址,把数据放到使用该地址的帧中,并发送该帧。若没有,则软件必须广播一个ARP请求并等待应答。 (2)通过广播ARP请求来找到地址映射可能会很复杂,需考虑多种情况。 如:发送方收不到应答;应答被延迟;最初的广播被丢失; 保留欲发送分组;不对给定目标机器广播多次请求; 固定时间清除高速缓存表的表项等。
第二部分回答其他机器的请求。 (1)当ARP分组抵达时,软件首先提取发送方的IP地址和物理地址对,并检查本地的高速缓存,看是否已经保存有该发送方的表项。如果有这个IP地址的表项,处理程序就用从分组中获得的物理地址覆盖缓存中原先的物理地址,从而更新表项。然后处理ARP分组的其他部分。 (2)如果到达的是一个ARP请求,则接收方机器要查看他自己是否是请求的目标。如果是,则ARP软件用本机的物理地址形成应答,并把应答直接发给请求方。 (3)如果发送方的地址对不在接收方的高速缓存中,则接收方还要把这个地址对添加到缓存中。 (4)如果是一个ARP应答到达时,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 §3-7 ARP举例 下表给出高速缓存表中的一些字段的开始部分: 状态栏有三个值:FREE(表示此项目的生存时间已到期,可用于新的项目),PENDING(表示此项目的请求已经发出,但回答未收到)或 RESOLVED(表示此项目是完整的。已有了目的物理地址)
例1:ARP软件收到一个IP数据报,其目的地址为114.5.7.89。他检查高速缓存表,并找出了存在一个于此地址匹配的项目,状态为R。他提取出硬件地址,并将此分组和此地址发送给数据链路层来传输。高速缓存表保持不变。例1:ARP软件收到一个IP数据报,其目的地址为114.5.7.89。他检查高速缓存表,并找出了存在一个于此地址匹配的项目,状态为R。他提取出硬件地址,并将此分组和此地址发送给数据链路层来传输。高速缓存表保持不变。 例2:20秒钟以后,ARP软件收到一个IP数据报,其目的地址为116.1.7.22。他检查高速缓存表,在表中未发现这个目的地址。于是在表中增加一个项目,其状态为P,而尝试值为1。他为这个目的创建一个新的队列,并将分组放入此队列。他然后就将对该目的地的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 P 23 1 116.1.7.22 R 9 60 19.1.7.82 4573E3242ACA P 18 3 188.11.8.71
状态 队列 尝试 超时 协议地址 硬件地址 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 例3:15秒钟后,ARP软件收到一个ARP分组,其目标协议(IP)地址为:188.11.8.71。检查高速缓存表,找出了这个地址。他将项目的状态改变为R,并将超时值置为900。然后把目标地址添加到这个项目。现在他将队列18中的分组一个接一个的发送到数据链路层。新的高速缓存表如下:
状态 队列 尝试 超时 协议地址 硬件地址 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 例4:25秒钟后,高速缓存控制模块更新每一个项目。对4个已解析的项目的超时值减少60。倒数第二个项目的状态改变为F,因为超时时间是零。对三个项目中的每一个,尝试字段的值加1。在加1以后,有一个项目(其IP地址为:201.11.56.7)的尝试值超过了最大值,状态变为F,队列被取消。
§3-8 RARP • RARP是设计用来解析地址映射问题,这就是当一个机器知道它的物理地址但不知道其逻辑地址。 • 通常,机器的IP地址保存在硬盘中,操作系统在启动时找到它。 • 但通常一个无盘机器是从ROM来引导的,而ROM只有最少的引导信息。他不包括IP地址,因为在网络上的IP地址是由管理员指派的。 • 但机器可以得到其物理地址,这在本地是唯一的。 • 这样就可以使用RARP协议从物理地址得到逻辑地址。 • RARP请求分组是广播发送,RARP回答分组是单播发送。
请求 我的物理地址是A46EA4578236,我要查找我的IP地址 主机 RARP服务器 a. RARP请求用广播发送 你的IP地址是:141.14.34.2 回答 主机 RARP服务器 b. 回答用单播发送
RARP请求或回答分组 类型:0x0835 前同步码和SFD 目的地址 源地址 类型 数据 CRC 8字节 6字节 6字节 2字节 4字节 除了操作码字段外(RARP请求是3,回答是4),RARP分组格式与ARP分组的完全一样。
随堂作业 1、C类网络上的一个主机的IP地址是198.123.46.237,这个网络可划分为5个子网,试问子网掩码是什么?每一个子网的配置? 2、ARP分组的长度是固定的吗?试加以解释。 3、一主机的IP地址是125.45.23.12而所在的以太网物理地址是2345ABC4567D,收到了一个分组,其目的IP地址是125.11.78.10而所在的以太网物理地址是AABB2345CC67。试给出此主机发出的ARP请求分组中的各项目,和ARP回答分组中的各项目。