在路由器中可以支持多种协议栈数据的转发。路由器在OSI的参考模型中,是一个第3层的网络连接设备。路由器连接的体系结构如图7.6所示。每台路由器可以有多个不同的网络接口。
IP网采用无连接方式传送IP数据分组或称数据包,每一分组包含源站和目的站的IP地址,可以独立地在网上传送。IP数据包的转发是根据IP协议由路由器完成的。
路由器在接收到数据时,要对其传输路径进行选择,则需要维护一个称为“路由表”的数据结构。概括地讲,路由表就是包含若干条目,供路由器选路时查询数据包传输路径的表项。路由表中的一个条目至少要包含数据报的目的IP地址(通常是目的主机所在网络的地址)、下一跳路由器(即从本路由器出发按所给路径到给定目的地所要通过的下一个路由器)的地址和相应的网络接口等几项内容。
当数据包达到路由器后,路由器就根据数据包的目的地址查询路由表中的相应条目,并按照其中的指示把数据包转发到相应的方向。因此,路由表要能够正确的反映实际网络的拓扑结构,这样才能保证路由器做出的路径选择是正确的。当网络拓扑发生变化的时候,路由表也应该做相应的变动,即路由器必须能生成路由表并在必要的时候更新路由表。
路由器的基本工作过程如下。
图7.7(a)是一个简单路由IP网的例子。有4个A类网络通过3个路由器连接在一起。每一个网络上都可能有成千上万个主机,可以想象,若按这些主机的完整IP地址来制作路由表,则这样的路由表显然过于复杂和庞大。若按主机所在的网络号Net-id来制作路由表,那么每一个路由器中的路由表就只包含4个要查找的网络,路由表大大简化。路由器是根据路由表查找路由的,它根据目的站所在的网络找出下一跳(下一个路由器)。以路由器R2的路由表为例,由于R2同时连接在网络2和网络3上,因此只要目的站在这两个网络上.都可由路由器R2直接交付(当然要通过地址转换协议ARP才能找到这些主机相应的物理地址)。若目的站在网络1中,则下一站路由器应为R1,根据路由表其1P地址为20.0.0.7.由于路由器R2和R1同时连接在网络2上,因此从路由器R2转发分组到路由器R1是很容易的。同理,
若目的站在网络4中,则路由器R2应将分组转发给IP地址为30.0.0.1的路由器R3。最后由路由器R3转交给目的主机。
既然在选择路由时路由表只根据目的站的网络号.那么就可以将整个网络拓扑简化为图7.7(E)所示的那样。
在简化图中,网络变成了一条链路,但每个路由器旁边都注明其IP地址。使用这样的简化图,可使我们不用关心某个网络内部的拓扑以及网络包含有多少台计算机,因为这些对研究路由选择问题并没什么关系。简化图强调了在互联网中转发分组时是从一个路由器转发到下一个路由器。只有路由中最后一个路由器才将数据报交付给主机。