路由器简介

2009/5/25 来源:www.arpun.com 作者:小白

最简单的网络可以想象成单线的总线, 各个计算机可以通过向总线发送分组以互相通信。 但随着网络中的计算机数目增长, 这就很不可行了, 会产生许多问题:

  1、带宽资源耗尽。

  2、每台计算机都浪费许多时间处理无关的广播数据。

  3、网络变得无法管理, 任何错误都可能导致整个网络瘫痪。

  4、每台计算机都可以监听到其他计算机的通信。

  把网络分段可以解决这些问题, 但同时你必须提供一种机制使不同网段的计算机可以互相通信, 这通常涉及到在一些ISO网络协议层选择性地在网段间传送数据, 我们来看一下网络协议层和路由器的位置。

  

路由器简介

  我们可以看到, 路由器位于网络层。 本文假定网络层协议为IPv4, 因为这是最流行的协议, 其中涉及的概念与其他网络层协议是类似的。

  一、路由与桥接

  路由相对于2层的桥接/交换是高层的概念, 不涉及网络的物理细节。 在可路由的网络中, 每台主机都有同样的网络层地址格式(如IP地址), 而无论它是运行在以太网、令牌环、FDDI还是广域网。 网络层地址通常由两部分构成:网络地址和主机地址。

  网桥只能连接数据链路层相同(或类似)的网络, 路由器则不同, 它可以连接任意两种网络, 只要主机使用的是相同的网络层协议。

  二、连接网络层与数据链路层

  网络层下面是数据链路层, 为了它们可以互通, 需要“粘合”协议。 ARP(地址解析协议)用于把网络层(3层)地址映射到数据链路层(2层)地址, RARP(反向地址解析协议)则反之。

  虽然ARP的定义与网络层协议无关, 但它通常用于解析IP地址;最常见的数据链路层是以太网。 因此下面的ARP和RARP的例子基于IP和以太网, 但要注意这些概念对其他协议也是一样的。

  1、地址解析协议

  网络层地址是由网络管理员定义的抽象映射, 它不去关心下层是哪种数据链路层协议。 然而, 网络接口只能根据2层地址来互相通信, 2层地址通过ARP从3层地址得到。

  并不是发送每个数据包都需要进行ARP请求, 回应被缓存在本地的ARP表中, 这样就减少了网络中的ARP包。 ARP的维护比较容易, 是一个比较简单的协议。

  2、简介

  如果接口A想给接口B发送数据, 并且A只知道B的IP地址, 它必须首先查找B的物理地址, 它发送一个含有B的IP地址的ARP广播请求B的物理地址, 接口B收到该广播后, 向A回应其物理地址。

  

路由器简介

  注意, 虽然所有接口都收到了信息, 但只有B回应该请求, 这保证了回应的正确且避免了过期的信息。 要注意的是, 当A和B不在同一网段时, A只向下一跳的路由器发送ARP请求, 而不是直接向B发送。

  

路由器简介

  下图为接收到ARP分组后的处理, 注意发送者的对被存到接收ARP请求的主机的本地ARP表中, 一般A想与B通信时, B可能也需要与A通信。

  

路由器简介

  3、IP地址冲突

  ARP产生的问题中最常见的是IP地址的冲突, 这是由于两个不同的主机IP地址相同产生的, 在任何互联的网络中, IP地址必须是唯一的。 这时会收到两个ARP回应, 分别指出了不同的硬件地址, 这是严重的错误, 没有简单的解决办法。

  为了避免出现这类错误, 当接口A初试化时, 它发送一个含有其IP地址的ARP请求, 如果没有收到回应, A就假定该IP地址没有被使用。 我们假定接口B已经使用了该IP地址, 那么B就发送一个ARP回应, A就可以知道该IP地址已被使用, 它就不能再使用该IP地址, 而是返回错误信息。 这样又产生一个问题, 假设主机C含有该IP地址的映射, 是映射到B的硬件地址的, 它收到接口A的ARP广播后, 更新其ARP表使之指向A的硬件地址。 为了解决这个错误, B再次发送一个ARP请求广播, 这样主机C又更新其ARP表再次指向B的硬件地址。 这时网络的状态又回到先前的状态, 有可能C已经向A发送了应该发送给B的IP分组, 这很不幸, 但是因为IP提供的是无保证的传输, 所以不会产生大的问题。

  4、管理ARP缓存表

  ARP缓存表是对的列表, 根据IP地址索引。 该表可以用命令arp来管理, 其语法包括:

  向表中添加静态表项 -- arp -s

  从表中删除表项 -- arp -d

  显示表项 -- arp -a

  ARP表中的动态表项(没有手动加入的表项)通常过一段时间自动删除, 这段时间的长度由特定的TCP/IP实现决定。

  5、静态ARP地址的使用 www.arpun.com

  静态ARP地址的典型使用是设置独立的打印服务器, 这些设备通常通过telnet来配置, 但首先它们需要一个IP地址。 没有明显的方法来把此信息告诉该设备, 好象只能使用其串口来设置。 但是, 这需要找一个合适的终端和串行电缆, 设置波特率、奇偶校验等, 很不方便。

  假设我们想给一个打印服务器设置IP地址P-IP, 并且我们知道其硬件地址P-hard, 在工作站A上创建一个静态ARP表项把P-IP映射到P-hard, 这样, 虽然打印服务器不知道自己的IP地址, 但是所有指向P-IP的数据就将被送到P-hard。 我们现在就可以telnet到P-IP并配置其IP地址了, 然后再删除该静态ARP表项。

  

路由器简介

  有时会在一个子网里配置打印服务器, 而在另一个子网里使用它, 方法与上面类似。 假设其IP地址为P-IP, 我们分配一个本网的临时IP地址T-IP给它, 在工作站A上创建临时ARP表项把T-IP映射到P-hard, 然后telnet到T-IP, 给打印服务器配以IP地址P-IP。 接下来就可以把它放到另一个子网里使用了, 别忘了删除静态ARP表项。

  

路由器简介

  6、代理ARP

  可以通过使用代理ARP来避免在每台主机上配置路由表, 在使用子网时这特别有用, 但注意, 不是所有的主机都能理解子网的。 基本的思想是即使对于不在本子网的主机也发送ARP请求, ARP代理服务器(通常是网关)回应以网关的硬件地址, 见下图, 注意与上面的图比较一下。

  代理ARP简化了主机的管理, 但是增加了网络的通信量(不是很明显), 并且可能需要较大的ARP缓存, 每个不在本网的IP地址都被创建一个表项, 都映射到网关的硬件地址。 在使用代理ARP的主机看来, 世界就象一个大的没有路由器物理网络。

  

路由器简介

网友评论
评论(...
全部评论