第一章 网络互联
网络的根本目的非常简单:方便人们交换所获得的信息。但是网络的应用需求非常复杂:有的用户希望高带宽,但并不要求很长的传输距离;有的用户要求很长的距离,但对带宽要求很低;有的对网络的可靠性要求较高,而另外一些则要求较低,等等。这些都导致了网络的多样化,现在比较常见的局域网有以太网、令牌环和FDDI,广域网有DDN、X.25、帧中继、ATM等,这些网络分别从不同方面满足用户需求。这些网络的物理介质和协议都不相同,彼此之间不能直接相互通信。将它们相互连接,使不同网络上的用户之间可以交换信息的技术就称为网络互联技术。 实现网络互联的技术有两种:协议转换和隧道技术。 TCP/IP 和Novell的IPX是两种常见的协议转换技术。 Novell的IPX曾经红火一时,但现在网络互联中占统治地位的是TCP/IP,风靡世界的nternet就是利用TCP/IP作为互联协议的实例。 路由器就是一种利用协议转换技术将异种网进行互联的设备。而现在非常时髦的VPN(Virtual Private Network,虚拟私有网)则是隧道技术的代表。
第二章 路由器的基本结构和工作原理
路由器实质上是一种将网络进行互联的专用计算机,路由器在TCP/IP中又称为IP网关。本章拟以TCP/IP技术为例介绍路由器。大家都知道OSI的七层模型,如图
TCP/IP层次模型
路由器的软件结构就是以TCP/IP协议栈为核心的,下图是一个简单的路由器软件结构。
路由器软件结构
路由器的协议转换发生在IP层。如下图所示,路由器试图互联局域网和Internet。 局域网是以太网,运行IEEE802.2 和IEEE802.3。路由器和接入服务器之间为专线,而链路层协议为PPP(Point to Point Protocol,点对点协议)。以太网上的主机以及Internet上的接入服务器的网络层协议都是IP。主机将IP包封装在以太网帧中发向路由器;路由器的以太网口收到主机发来的以太网帧后处理帧头并上交路由器的IP层;IP查看报文头后将IP包交给广域网口的PPP;PPP将IP包封装在PPP帧中并通过专线发往接入服务器。上述互联原理具有普遍性:某种网络设备要在第n层上互联异种网N1和N2,那么N1和N2在第n层及以上的协议(若有)必须相同。这实际上也是N1和N2能够互联的充要条件。
问题是主机如何知道把要去Internet的报文交给正确的路由器(假设以太网上有多台主/路由器),而路由器又是如何知道将主机报文发给哪个接入服务器(假设路由器有多个广域网口,且每个广域网口都和一个接入服务器相连)的呢?答案是依靠寻址和路由机制。
路由器的工作原理
IP地址被用来标识一台工作在IP层的网络设备。在相互联结的网络中IP地址应该是唯一的,即一个IP地址不能同时被多个网络设备使用。但是TCP/IP允许一台网络设备占用多个IP地址,这种设备称为“多穴主机”。路由器就是一种多穴主机,它的每个端口都有一个IP地址,甚至于一个端口可以有多个IP地址。IP地址长度为四个字节。如下图所示,TCP/IP将IP地址划为A、B、C三个基本类(实际上还有D类和E类,这两类很少用到):
如图所示IP地址分为网络部分和主机部分,分别相当于电话号码中的局号和用户线路号。 我们平时使用点分十进制的形式来表示IP地址,如我的IP地址是129.102.1.56,129.102是指北研所局域网,是个B类网,而1.56则是我的主机号。RFC不推荐把零作为IP地址的某个字节,如129.102.1.0。
TCP/IP还允许使用掩码来将IP地址非标准地(意指与三种基本类不同)划分为网络部分和主机部分。如果用二进制表示掩码,则IP地址中与掩码中的“1”相对应的比特属于网络部分,与“0”相对应的部分属于主机部分。掩码的习惯表示法也是点分十进制。若使用基本划分方法,则A类网的掩码是255.0.0.0,B类网的掩码是255.255.0.0,C类网的掩码是255.255.255.0。仍然以129.102.1.56(10000001.1100110. 00000001.00111000)为例,如果不使用掩码(实际是使用基本掩码255.255.0.0),则其网络部分为129.102,主机部分是1.56。如果使用掩码255.252.0.0(11111111.11111100.00000000.00000000),则其网络部分为129.100,主机部分为2.1.56。掩码中的“1”可以不是连续的,但是既没有必要又费劲,RFC也不推荐使用。
IP地址属于高层地址,物理层只能依靠物理地址进行通信。数据发送者怎样通过接收者的IP地址找到所对应的物理地址呢?如果发送者与接收者在同一个物理网上,则可以通过地址解析协议(ARP——Address Resolution Protocol)或手动配置来确定接收者的物理地址。
ARP用于共享式网络,如以太网。其工作方法如下:IP把要发送的报文交给以太网链路层,同时要告诉链路将报文转发给哪个IP地址(记做A);链路用以太网广播帧的形式向本网询问谁是A;A收到ARP请求后回答自己的物理地址(记作P);发送者收到ARP响应后将IP报文发给P。设备可以使用缓存,只有在缓存中查不到的才做ARP请求,收到回答后将学习到的物理插入缓存。这样可以提高ARP的效率。为适应网络的变化缓存要有时限,超时后缓存失效。
手动配置方法主要用于不能运行ARP的非共享式网络。例如2501上需要配置Dialer map将IP地址与电话号码相对应。其中的电话号码就相当于电话网中的物理地址。其他,如X.25网、帧中继网等都需要手动将IP地址与物理地址相匹配。
如果发送者与接收者不在一个物理网上,则需要路由。
一条路由主要包括目的地址和下一跳两部分。目的(记做D)可以是一台主机,也可以某个网络,还可以是某个网络的一个子集。下一跳(记做N)是直译,英文称为“next-hop”,理解成“下一个驿站”可能更形象。正个路由信息所表示的意思就是要到达D,先要去N。比如“经北京去往美国”就是一条路由。路由的目的是一个复合成员,由一个IP地址和一个掩码组成。目的掩码为全“1”(255.255.255.255)的路由俗称主机路由,它的目的地是一台主机。如果目的掩码不是全“1”,则该路由是要去往某个网段(子网)。根据下一跳的性质可以将路由分为直接路由和间接路由两类。如果到达目的需要经过路由器转发,即下一跳是一台路由器,则该路由称为间接路由,否则称为直接路由。理解直接路由器有点困难,举个例子:路由器的以太网口接在局域网上,路由器启动后会有一条目的地为该以太网的路由,这条路由是路由器自动产生的,不需要手动配置或运行路由协议来获取。这条路由就是直接路由。一个更形象的例子就是:我们在北京,要去美国,而北京有直飞美国的飞机,不需要中转。下图是直接路由和间接路由的对比。
直接路由和间接路由
路由器获得路由的方式主要有手工配置(静态路由)和路由协议(动态路由)两种。静态路由主要用于规模较小、相对稳定的网络。如果网络规模较大或经常变动,如经常增减网络、主机等,就需要路由协议。常见的路由协议有RIP(Route Information Protocol)、IGRP(Internal Gateway Route Protocl)、EIGRP(Enhanced IGRP)、OSPF(Open Shortest Path First)。前三种都使用VD算法,OSPF使用LS算法。IGRP、和EIGRP都是cisco的标准。
第三章 路由器的基本配置方法
所有路由器的《用户手册》都会对路由器的配置方法做详细的介绍,本文仅介绍一下路由器的一般配置框架。
IP地址:路由器上每个要使用的端口都要配置IP地址
线路:专线方式需要配置线路的波特率;拨号方式的配置较复杂,如果是模拟拨号除需要配置物理属性(如异步、modem、波特率等)外还要配置IP地址与电话号码之间的对应关系。
路由:配置好IP地址和线路属性后就可以配置路由了。若配置动态路由,只要将动态路由协议打开即可。若需要配置静态路由,则建议首先画出组网草图,标出各网络的地址及所有相关路由器的各端口的地址,然后对照草图逐个设备配置路由。
Quidway路由器提供的命令行配制接口将配置状态分四级。第一级称为用户态,仅提供一些简单的命令。使用enable命令可以从普通用户态提升为特权态。特权态提供一些非配置命令,如打开调试开关等。要配置路由首先要使用configure命令进入全局配置态。全局配置态下可以对路由器的全局参数进行配置,如配置路由等。只有在端口配置态下才能配置IP地址等端口所特有的属性。 记住这四种状态的名称和意义不仅可以帮助大家更好地理解路由器的配置命令,还可以在寻求项目组的支持时与开发人员建立共同语言。
四、一些常见的计算机网络概念
地址代理的另一个名称为地址转换(NAT),它试图通过建立IP地址与传输层端口的映射。
地址代理的工作原理
如图所示,本地的PC机Local PC(IP地址为129.102.1.56)要访问远端的WWW 服务器Foreign server(IP地址为9.9.9.9)时发出报文(9.9.9.9,80;129.102.1.56,5000),报文中的成员从左到右依次为:目的地址、目的端口号、源地址、源端口。该报文经过路由器的地址转换后变为(9.9.9.9,80;202.38.161.1,10000),地址代理将源地址替换成了路由器的广域网口地址。为了保持一一对应,地址代理还修改了源端口号。当路由器收到Foreign Server的回文(202.38.161.1,10000;9.9.9.9,80)时,地址代理做相反的替换后得到报文(129.102.1.56,5000;9.9.9.9,80),这个报文可以被IP正确地发往Local PC。为完成这些工作地址代理显然需要维护一张IP地址与端口号之间的对应表格。
如果外部的Foreign PC(IP地址为8.8.8.8)要主动访问本地的WWW服务器(IP地址为129.102.1.5),那么它所发送的报文的目的地址显然不能直接填129.102.1.5,而应该填202.38.161.1,只有这样报文才能到达路由器。那么路由器怎么知道将该报文转交给谁处理呢(路由器并不能提供WWW服务)?回答是依靠配置。再图5-1所示的例子中路由器应该配置129.102.1.5为本地的WWW服务器。
验证是PPP的功能之一。PPP提供CHAP(Challenge Handshake Authentication Protocol)和PAP(Password Authentication Protocol)两种验证方法。PAP使用明文(不加密)传递密码,为单向验证且仅在协商开始时验证一次;CHAP使用密文传递密码,为相互验证且在传输过程中随时验证。
防火墙也是网络安全措施之一。防火可以分为包过滤和应用网关两种。包过滤就是检查报文的源地址、目的地址、源端口及目的端口,将某些报文过滤掉。包过滤防火墙可以实现诸如“禁止IP地址为129.102.1.56的本地微机被访问”之类的简单功能。应用层的防火墙则要强大得多,它可以对报文的内容进行限制。
VPN的主要目的是用较少的资金获取私有网的服务。VPN使用Internet上的隧道技术,PPP包封装在UDP包中通过Internet传送到远端。一个公司的分支要访问远端的中心,他可以选择DDN或是电话网作为连接方式。这两种方式都非常方便,因为它们都相当于用户组建了自己的私有网络。但是这两种方法都非常昂贵。图5-2提供了一种既方便又经济的方法。位于分支机构的ISP为用户提供VPN服务,它在Internet中建立一条TCP/IP的隧道,将其接入服务器和中心的路由器(或服务器)连接起来。ISP收到分支发来的数据(PPP报文)后不进行解析,而是将PPP报文通过隧道发往中心的路由器。Internet实际上提供了一条从分支到中心的虚拟私有线路,而用户所交纳的费用是两端的本地通信费用和Internet访问费用,这要比长途电话费用或DDN费用低。