路由器基础知识介绍


最简单的网络可以想象成单线的总线,各个计算机可以通过向总线发送分组以互相通信 。但随着网络中的计算机数目增长,这就很不可行了,会产生许多问题:
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提供的是无保证的传输,所以不会产生大的问题 。

推荐阅读