本文共 7581 字,大约阅读时间需要 25 分钟。
下载 第5章章ARP和RARP 作者:Tim Parker 本章内容包括: • 使用地址 • 使用地址解析协议 • 使用A R P命令 I P地址是运行T C P / I P协议机器的通用标识,但是I P地址自身不能使报文到达其目的地。 网络系统自身及其行为对网络操作系统和硬件类型而言是特殊的。为了更好地理解数据从源 机到目的机的路由行为,需要理解网络是如何与机器互联的。这一章首先考查典型的网络系 统(特别是以太网),看一看T C P / I P如何把I P地址转化成网络能发现的与网络相关的地址。 5.1 使用地址 使用I P地址的目的是帮助T C P / I P把报文传送到正确的目的地,通常有三个和寻址相关的 术语:名字、地址和路由。 名字是一台机器、一个用户或一个应用的特殊标识,它通常是惟一的并提供了要传送报文 的绝对目标。地址通常标识目标所在地。通常是它在网络内的物理或逻辑位置。路由告诉系 统如何把数据报送到正确的地址。当使用术语地址时要注意,它经常和通信协议一起使用指 代许多不同的内容,它可以是目的地、一个机器的端口、一个存储器位置、一个应用或其他。 接收方的登录名通常是整个传输过程的关键。一个称为名字服务器的软件包用来把用户 名和机器名解析成地址和路由,对用户隐藏了T C P / I P的路由和发送的内部机制。除了使寻址 和路由对端用户透明之外,使用名字服务器有另一个好处:它给网络管理员按照需要改变网 络带来了很大的自由度,而不需单独更新每个用户的机器。只要一个应用能够访问位于某处 的名字服务器,应用和用户就能忽略路由的变化。 5.1.1 子网寻址 当用户把一块数据发送到另一台机器时,经常通过I P地址来完成。虽然T C P / I P设计成围绕 着I P地址工作,但是实际的网络软件和硬件却不是这样。相反,网络使用编码至网络硬件中的 地址来识别每一台机器。从I P地址得到物理地址,不是T C P / I P协议的标准部分,所以开发了 许多特殊的协议来完成这一部分任务。这些协议在下一节讨论,但是这一节首先考查网络物 理地址是如何构成和如何处理的。在一个局域网中,有一些保证报文正确传输的必要信息, 其中基本的信息是目的机器的物理地址和数据链路层地址。二者很重要,值得进一步讨论。 1. 物理地址 网络上的每一个设备有一个惟一的物理地址(physical address),有时被称为硬件地址或数 据链路地址。对于网络硬件而言,地址通常编码到网络的接口卡中。物理地址有时可以通过 开关或软件由用户设置。更常见的情况是,这些地址用户根本不能改变,因为一个惟一的编 号已经编到可编程只读存储器( P R O M )中;生产商经常联手以保证在任一个网络上地址没有冲 突的可能性,一个地址只能出现一个。否则,名字服务器将没有办法来区分目标机。物理地 址的长度依赖于网络系统。举例来说,以太网和其他一些网络使用4 8位地址。为了通信需要 有两个地址:一个地址标识发送设备;一个用于接收设备。 I E E E负责分给子网配置惟一的物理地址(以前由X e r o x公司完成这项工作, X e r o x开发了以 太网)。对每一个子网, I E E E分配一个2 4位长的组织惟一标识( o rganization unique i d e n t i f i e r, O U I ),其他2 4位由各组织随便分配。实际上2 4位O U I中的2位是控制位,所以只有2 2 位标识组织。O U I的格式由图5 - 1示出。2 4位的O U I和2 4位局部分配位的组合称为媒体访问控 制(media access control,MAC) 地址。当一个数据报文要组装在T C P / I P上发送时,要有两个 M A C地址,一个来自发送机,一个标识接收机。 图5-1 组织惟一标识结构 地址的最低位(结构中的最左一位)称为私有或组位。假如这一位设为0,剩余的地址是一 个私有地址,设为1意味着剩余的地址域标识一个需要进一步解析的组地址。假如整个的O U I 设为1,则整个网络上的每个站都是目的地,这是O U I支持的一个特殊约定。 O U I结构中的第2位称为局部或全局位。假如第二位设为0,则它是被全局管理团体设置 的。这是分配给IEEE OUI的。假如第二位设为1,则O U I是局部分配的,如果按I E E E分配的 地址解码就会导致问题。通常,第2位设为1的结构要维持在局域网或广域网内部,不能传送 到按I E E E地址格式编码的网络中。 O U I结构中的剩余2 2位组成子网的物理地址,由I E E E分配。剩下的一组2 4位标识局域网 地址,可以局部管理。假如一个组织要用光物理地址( 2 4位可有1 6 0 0万个地址),I E E E能为这 一组织再分配一个子网地址。 2. 链路层地址 I E E E以太网标准使用另一个称为链路层地址的地址(常被缩写为LSAP-link service access p o i n t )。L S A P标识数据链路层中链路协议的类型。和物理地址一样,一个数据报将携带接收 端和发送端的L S A P。 3. 网络帧 被传输数据报文的信息排列因所使用的网络协议不同而有所区别。然而,看一看前面提 到的地址和其他相关信息是如何在数据发送到网络上之前附加在数据报上的情形将是有启发 性的。我们将以与T C P / I P一起广泛使用的以太网为例。以太网和其他的系统非常相似,虽然 头结构可能不同。记住这是网络协议封装由T C P / I P创建的头的方式,和具体的T C P / I P没多大 联系。典型的以太帧(准备好网络发送的报文)如图5 - 2所示。 42使用第二部分命名和寻址 下载 1位1位2 2位 I E E E分配的子网地址局部分配的物理地址 2 4位 0 =私有 1 =组 0 =全局 1 =局部 I / G U / L 图5-2 以太帧结构 6 4位的前导符用于通信过程的同步和消除发送前几位时的随机噪声。前导域的后面是一 系列位称为帧定界符(start frame delimiter, S F D ),指示帧紧接在后面。 以太帧中接收方、发送方的以太网地址使用I E E E的4 8位格式,其后跟着1 6位的类型域, 用于标识使用的协议类型。实际的数据(由T C P / I P组装的数据报)跟在类型指示后面。对标准 以太网而言,数据域在4 6和1 500字节之间。如果数据小于4 6字节,则补零直到4 6字节。以太 帧的最后是循环冗余校验(cyclic redundancy check,CRC),用于保证帧的内容在传输过程中没 有被改变。传输路径上的每一台机器计算帧的C R C并和帧最后的C R C比较。假如二者一样, 帧就能继续沿网络传送或传到子网内部;否则,帧必定被改过,并且应该被丢弃。 一些和以太网相关的协议,如IEEE 802.3,使用的整个帧排列是一样的,但对一些内容进 行了一些更改。8 0 2 . 3把用于识别协议类型的1 6位数替换成指示数据长度的值。同样,一个新 的域附加在数据区前面。 5.1.2 IP地址 正如读者所知, T C P / I P使用3 2位地址用于标识网络上的机器以及和它相连的网络。I P地 址标识机器到网络的连接,而不是机器自身,这二者有重要的不同之处。但是一台机器在网 络上的位置发生变化时, I P地址有时也要改变,这要依赖于网络建造的方式。I P地址是一组 许多人在他们自己的工作站或终端上看到的数,如1 2 7 . 4 0 . 8 . 7 2,这个数惟一地标识了设备。 I P地址由4组8位数组成,总共3 2位。I P地址只能由网络信息中心(Network Information C e n t e r, N I C )分配,但是如果一个网络不与T C P / I P相连,也能决定自己的编号。I P地址使用的 十进制表示法称为点分四元表示法。 依赖网络的大小,有四种I P地址格式,4种格式从A类到D类,如图5 - 3所示。地址类别由 前几个位序列标识,在此图中, A类使用1位,D类使用4位。类别可以由前3位(高位)决定。实 际上,大多数情况下,前两位足够了,因为D类网很少。 图5-3 类IP地址结构 第5章ARP和RARP使用43 下载 前导 6 4位4 8位4 8位1 6位3 2位 接收方地址发送方地址类型数据 可变长 循环冗 余校验 A类 B类 C类 D类 网络( 7位) 网络( 1 4位) 网络( 2 1位) 多目广播地址( 2 8位) 局部地址( 8位) 局部地址( 1 6位) 局部地址0 ( 2 4位) 1 0 11 0 111 0 A类地址用于有许多机器的大型网络。这种情况需要2 4位的局部地址(也被称为主机地址)。 网络地址7位,限制了可识别的网络数量。B类地址用作中等规模的网络, 1 6位的局部或主机 地址,1 4位的网络地址。 C类网络只有8位表示局部或主机地址,限制了设备数最多为2 5 6个,C类使用2 1位表示网 络地址。最后,D类网络用作组播,当需要一个以上的设备接收时,采用这种地址类型。I P地 址中每个段的长度经过了仔细挑选以提供最灵活的网络和主机地址分配。 通过I P地址,网关能够决定数据是发送到I n t e r n e t上(或其他互联网络)还是保留在局域网 内部。假如网络地址和当前报文地址的网络部分相同(路由到局域网设备,称为直接主机),就 不用把报文送到互联网络上;所有其他网络地址路由到网关,离开局域网(称为间接主机)。 一台机器(特别是网关)如果连接了多个网络,那么这台机器可能有多个I P地址。这样的机器叫做 多穴主机,因为它们与每一个相连的网络对应一个惟一地址。两个网络被一台网关相连可以有相同 的网络地址,这里有一个寻址问题,因为网关必须能区别物理地址在哪个网络上。这个问题由一个 专门进行地址解析的特殊协议来解决,这个协议称为地址解析协议(Address Resolution Protocol, ARP)。 5.2 使用地址解析协议 在局域网或广域网上把报文从一台机器发送到另一台机器,如果不知道目的机器的物理地址 就会发生问题。需要一些方法能把I P地址(应用提供)解析为和网络相连的机器的硬件物理地址。 一种强制的方法是在每台机器上建一个用于把I P地址转化成物理地址的解析表。于是, 当一个应用程序要把数据发送到另一台机器时,软件就检查这个转换表以得到物理地址。这 个方法存在一些问题,这些问题也就是几乎没有这样实现的原因。最致命的缺点是一旦发生 一些变化,每台机器上的地址表就要更新。 为了解决这个问题,开发了地址解析协议( A R P )。A R P的任务是把I P地址转化成物理地址, 这样做,就消除了应用程序需要知道物理地址的必要性。用最简单的术语表述, A R P就是把 I P地址转换成相应物理地址的转换表。这个表称为A R P表。A R P表的排列如图5 - 4所示。A R P 在存储器中维护一个c a c h e,这个c a c h e称为ARP cache,通常搜索ARP cache进行匹配,假如 没有匹配成功就检查A R P表。 图5-4 ARP表排列,表中的每一行表示Cache中的每一个设备 44使用第二部分命名和寻址 下载 I F索引物理地址I P地址类型 表项1 表项2 表项3 表项n 5.2.1 ARP cache ARP cache中的每一行对应一个设备,每一个设备存储以下信息: • IF索引—物理端口(接口)。 • 物理地址—设备的物理地址。 • IP地址—和物理地址对应的I P地址。 • 类型—这一行对应的表项类型。 类型有4种可能的值,值2意味着表项是无效的,值3意味着映射是动态的(表项可能改变), 值4说明是静态项(表项不变化),值1意味着不是上面的任何一种情况。 当A R P解析一个I P地址时,它会搜索ARP cache和A R P表作匹配。如果找到了, A R P就把 物理地址返回给提供I P地址的应用,假如A R P没找到一个匹配的I P地址,它就会向网络上发 布消息,这个称为A R P请求的消息,被广播到局域网上的每一个设备。 A R P请求包括接收设备的I P地址。假如一个设备认出此I P地址属于自己,就把包含自己物 理地址的应答报文返回给产生A R P请求的机器, A R P请求机器会把此信息放到A R P表和A R P c a c h e中以备将来之用。使用这种方式, A R P能决定任何I P地址对应机器的物理地址。 A R P请求和A R P应答报文的格式如图5 - 5所示,当一个A R P请求发出时,除了接收端硬件 地址(正是请求机想知道的)之外所有域都被使用。A R P应答中,使用所有的域。 图5-5 ARP请求和应答报文格式 A R P请求和A R P应答报文中的域有几种值,本节的剩余部分会仔细解释各个域及其使用。 1. 硬件类型 硬件类型识别硬件接口类型,合法的值是: 类型描述 1 以太网 2 实验以太网 3 X . 2 5 4 Proteon ProNET(令牌环) 5 混沌网( c h a o s ) 6 IEEE 802.X 7 A R C网络 2. 协议类型 第5章ARP和RARP使用45 下载 硬件类型( 1 6位) 协议类型( 1 6位) 发送I P地址 接收端I P地址 接收端硬件地址 发送硬件地址 操作码( 1 6位) 硬件地址长度协议地址长度 协议类型标识发送设备所使用的协议类型, T C P / I P中,这些协议通常是E t h e r Ty p e,合法 的值是: 十进制描述 5 1 2 XEROX PUP 5 1 3 P U P地址翻译 1 5 3 6 XEROXNS IDP 2 0 4 8 网际协议 2 0 4 9 X . 7 5 2 0 5 0 N B S 2 0 5 1 E C M A 2 0 5 2 混沌网络 2 0 5 3 X . 2 5第三层 2 0 5 4 地址解析协议( A R P ) 2 0 5 5 X E R O X网络系统 4 0 9 6 伯克利Tr a i l e r 2 1 0 0 0 BBN Simnet 2 4 5 7 7 DEC MOP (维护操作协议) D u m p / L o a d 2 4 5 7 8 DEC MOP (维护操作协议)远程控制 2 4 5 7 9 DEC DECnet Phase 5 2 4 5 8 0 DEC LAT 2 4 5 8 2 D E C 2 4 5 8 3 D E C 3 2 7 7 3 HP Probe协议 3 2 7 8 4 E x c e l a n 3 2 8 2 1 反向地址解析协议( R A R P ) 3 2 8 2 3 A p p l e Ta l k 3 2 8 2 4 DEC 局部网桥协议 如果协议不是E t h e r Ty p e,允许使用其他值。 3. 硬件地址长度 数据报中硬件地址以字节为单位的长度。 4. 协议地址长度 数据报中所用协议地址以字节为单位的长度。 5. 操作码 操作码(O p c o d e)指明数据报是A R P请求还是A R P应答,假如是A R P请求,此值为1;假 如数据报是A R P应答,此值为2。 6. 发送方硬件地址 发送方设备的硬件地址。 7. 发送方I P地址 发送方设备的I P地址。 8. 接收方硬件地址 接收方设备的硬件地址。 9. 接收方I P地址 接收方设备的I P地址。 46使用第二部分命名和寻址 下载 5.2.2 代理ARP 本章前面已提及,当两个网络通过网关联接时能够有相同的网络地址。网关必须能确定 进来报文的物理地址或I P地址在哪一个网络上。网关能通过改进的A R P—代理A R P来完成这 个任务(有时称为杂收A R P )。 代理A R P创建一个ARP cache,其中包含这两个网络中设备的有关信息。网关必须管理穿 越于两个网络的A R P请求和应答。通过把两个ARP cache组合成一个,代理A R P扩充了地址解 析过程的灵活性,防止产生过多的A R P请求和A R P应答报文穿越网关。 5.2.3 反向地址解析协议 A R P协议有一个缺陷:假如一个设备不知道它自己的I P地址,就没有办法产生A R P请求 和A R P应答。网络上的无盘工作站就是这种情况。设备知道的只是网络接口卡上的物理地址。 一个简单的解决办法是使用反向地址解析协议( R A R P ),R A R P以与A R P相反的方式工作。 R A R P发出要反向解析的物理地址并希望返回其I P地址,应答包括由能够提供信息的R A R P服 务器发出的I P地址。虽然发送方发出的是广播信息, R A R P规定只有R A R P服务器能产生应答。 许多网络指定多个R A R P服务器,这样做既是为了平衡负载也是为了作为出现问题时的备份。 5.3 使用ARP命令 大多数T C P / I P实现(并非全部)给用户提供了检查ARP cache的方法。Unix arp命令显示出 机器中所有的ARP cache表项。为了看c a c h e内容可以使用带-a(for all)选项的命令: $ arp -a brutus <205.150.89.3> at 0:0:d2:03:08:10 这个例子中,叫b r u t u s的机器具有I P地址2 0 5 . 1 5 0 . 8 9 . 3,其M A C (媒体访问控制)地址是 0 : 0 : d 2 : 0 3 : 0 8 : 1 0。 很少使用a r p命令,除非网络管理员想解决I P地址重复问题。假如两台机器具有相同地址 (但有不同的M A C地址),管理员就需要使用这个命令显示arp cache。 5.4 小结 在这一章中,读者已经了解了地址解析协议的通常用法: A R P、代理A R P和R A R P,本章 首先考查了以太网帧如何对T C P / I P数据报文进行封装。理解了这些互联网络中的复杂层次, 读者应该对T C P / I P的功能和数据在网络上传送到其目的机器的过程有了更好的认识。 第5章ARP和RARP使用47 下载转载地址:http://qdpoj.baihongyu.com/