1、第7章 网络层计算机网络技术及应用(第2版)7.1网络层概述n网络层的根本任务是将源主机发出的分组经各种途径送到目的主机。从源主机到目的主机可能得经过许多中间节点。这一功能与数据链路层形成鲜明的对比,数据链路层仅将数据帧从导线的一端送到其另一端,而网络层是处理点到点数据传输的最低层。7.1.1网络层的的设计问题n当源主机与目的主机不处于同一网络中时,应由网络层来处理这些差异(如表7-1中所示),并解决由此而带来的问题,这是网络层关心的一个重要问题:异种网络互联。网络层必须知道通信子网的拓扑结构(即所有路由器的位置),并选择通过子网的合适路径,这是网络层要解决的另一个重要问题:路由选择。另外,选
2、择路径时要注意到,不要使一些通信线路超负荷工作,而另一些通信线路却处于空闲状态,这是另一方面的问题:拥塞控制。表7-1 网络的不同性质不同的方面可能的取值提供的服务面向连接的和无连接的网络层协议IP,IPX,CLNP,AppleTalk,DECnet等服务质量支持服务质量或不支持,许多不同的方法多点广播存在多点广播或不存在分组大小各个网络分组长度的最大值不一致寻址方式分层的(如IP),平面的(如IEEE 802)流量控制速率控制,滑动窗口,其它方法或不支持流量控制拥塞控制漏桶、抑制分组等差错控制可靠的,有序的和无序的提交安全性使用规则、加密等参数不同的超时值、流说明等计费方式按连接时间计费,按
3、分组数计费,按字节数计费或不计费7.1.2 虚电路与数据报n在网络层主要提供两种数据传输服务:面向连接的虚电路方式和无连接的数据报方式。1面向连接的虚电路方式n在面向连接的互连方式中,假定每个子网都提供一种面向连接形式的服务,这样连在整个互连的网中任意两台主机之间都可以建立一条逻辑的网络连接。当一个本地主机要和远程网络中的主机建立一条连接时,它发现其目的地在远端,于是选择一个离目的地最近的路由器,并且与之建立一条虚电路,然后该路由器再继续通过路由选择算法选择一个离目的地近的路由器,直到最后到达目的端主机。这样,从源端到目的端的虚电路是由一系列的虚电路连接起来的,这些虚电路间通过路由器隔开,路由
4、器记录下有关这条虚电路的信息,以便以后转发这条虚电路上的数据分组。n数据分组沿着这条路径发送时,每个路由器负责转发输入分组,并按要求转换分组格式和虚电路号。显然,所有的数据分组都必须按顺序沿着这条路径经过各个路由器,最后按序到达目的端主机。这种方式中的路由器主要完成转发和路由选择功能,在建立端到端的连接时,通过路由选择来确定该连接上的下一个跳段的路由器节点,在数据传输时,把输入分组沿着已经建立好的路径向另一个子网转发。n对于这种面向连接的互连方式,如果所有子网都具有大致相同的特性,这种方式就能够正常工作。考虑所有子网都提供可靠或者不可靠的发送保障,这时从源端到目的端的数据流就也会是可靠的或者不
5、可靠的。但是,如果源端和大多数子网可以保证可靠发送,而其中有一个子网可能丢失分组,这时使用面向连接的互连方式就不是那么简单。这种方式假设所有子网提供面向连接方式的服务,并且提供的服务质量相差不多,如果某些通信子网不能满足这个要求,就必须对该通信子网的服务予以加强。2无连接的数据报方式n在无连接的数据报方式中,每个网络层分组不是按顺序沿着到达目的地的同一条路径发送,它们被分别进行处理,经过多个路由器和子网后到达目的端。一个主机如果要向远端的另一个目的端发送分组,源端会根据路由信息决定转发该分组的路由器地址,收到该分组的路由器根据分组中包含的目的地信息以及当前的路由情况选择下一个路由器,这样该分组
6、会经过多个路由器最后到达目的端。由于每个分组可以根据发送分组时的网络状况动态地选择最合适的路由,故与面向连接的虚电路方式相比可以更好地利用网络的带宽。但是,由于分组会走不同的路径,最后到达目的端时没法保证正确的顺序。n不同通信子网可能采用不同的分组格式,并且路由器在转发分组时一般是根据目的地的地址信息来进行路由选择,这就带来了一个严重的问题。考虑一个Internet上的主机要给连在网络中的一个0SI主机发送一个IP分组,由于这两种网络层协议所使用的地址格式完全不同,这样就可能需要进行地址映射,同时可能要进行分组格式的转换。这个问题的一个解决方法是设计一个通用的互连网分组,并让每个路由器都能识别
7、。这实际上是Internet中广泛使用的IP协议的目标:一个可在许多网络中传送的分组。但是,由于存在IPX、CINP和其它协议,都遵循同样的标准是非常困难的。在无连接的数据报方式的设计中,下面几个部分是非常关键的。n(1)寻址n(2)路由。n(3)分组生命期。n(4)差错控制和流量控制。n(5)分段和重组。n n面向连接和无连接的互连方式的优缺点与单个子网中的虚电路和数据报服务的优缺点类似。面向连接的互连方式的优点是:缓冲区可以预约;保证顺序发送;可以使用较短的分组头;可以避免由延迟的重复分组带来的问题。它的缺点是:需要有一张表存储每个打开的连接的信息;连接一旦建立后路由就固定了,没法绕过出现
8、故障的区域;沿途路由器崩溃带来的脆弱性。另外它还有一个缺点,就是某个子网为不可靠数据报方式时,实现起来很困难,甚至不可能实现。n无连接的互连方式与数据报子网具有相同的特性:更有可能造成拥塞;但也更能适应拥塞;路由器崩溃时的健壮性;需要更长的分组头部;可以进行动态路由选择等。提供数据报服务的互连模型中,一般是将若干个局域网通过广域网连接起来,使得一个局域网上的主机能与远地局域网上的主机通过广域网相互通信。网络互连的无连接方式可以用于大多数网络(包括各种LAN和WAN)之间的互连,不论是提供虚电路还是提供数据报方式的服务。而面向连接的网络互连中,要求不可靠的数据报子网提供虚电路服务,有时还是非常困
9、难的。7.2网际协议IPn TCP/IP协议族是Internet所采用的协议族,是Internet的实现基础。IP是TCP/IP协议族中网络层的协议,是TCP/IP协议族的核心协议。7.2.1 IP协议提供的服务n因特网协议IP(Internet Protocol)是因特网中的基础协议,由IP协议控制传输的协议单元称为IP数据报。IP将多个网络连成一个互联网,可以把高层的数据以多个数据报的形式通过互联网分发出去,它的基本任务是屏蔽下层各种物理网络的差异,向上层(主要是TCP层或UDP层)提供统一的IP数据报,各个IP数据报之间是相互独立的。nIP协议屏蔽下层各种物理网络的差异,向上层(主要是T
10、CP层或UDP层)提供统一的IP数据报。相反,上层的数据经IP协议形成IP数据报。IP数据报的投递利用了物理网络的传输能力,网络接口模块负责将IP数据报封装到具体网络的帧(LAN)或者分组(X.25网络)中的信息字段。如图7-1所示,将IP数据报封装到以太网的MAC数据帧。图7-1 IP数据报封装到以太网的MAC数据帧nIP协议提供不可靠的、无连接的、尽力的数据报投递服务。所谓不可靠的投递服务是指IP协议无法保证数据报投递的结果。在传输过程中,IP数据报可能会丢失、重复传输、延迟、乱序,IP服务本身不关心这些结果,也不将结果通知收发双方。7.2.2 IPv4与 IPv6n目前因特网上广泛使用的
11、IP协议为IPv4,IPv4的IP地址是由32位的二进制数值组成的。IPv4协议的设计目标是提供无连接的数据报尽力投递服务。图7-2示意了IPv4的数据报结构。n版本号(Version):4位,说明对应IP协议的版本号,(此处取值为4)。nIP头长度(IP Header Length):4位,以32位为单位的IP数据报的报头长度。n服务类型(Type of Service):8位,用于规定优先级、传送速率、吞吐量和可靠性等参数。nIP数据报总长度(Total Length):16位,以字节为单位的数据报报头和数据两部分的总长度。n标识符(Identifier):16位,它是数据报的唯一标识,用
12、于数据报的分段和重装。n标志(Flag):3位,数据报是否分段的标志。n段偏移(Fragment Offest):13位,以64位为单位表示的分段偏移n生存期(Time of Live):8位,允许数据报在互联网中传输的存活期限。n协议(Protocol):8位,指出发送数据报的上层协议。nIP报头校验和(Header Checksum):16位,用于对报头的正确性检验。n源站IP地址:32位,指出发送数据报的源主机IP地址。n目的站IP地址:32位,指出接收数据报的目的主机的IP地址。nIP选项:可变长度,提供任选的服务,如错误报告和特殊路由等。n填充项:可变长度,保证IP报头以32位边界对
13、齐。n32位的IP地址空间将无法满足因特网迅速增长的要求;不定长的数据报头域处理影响了路由器的性能提高;单调的服务类型处理;缺乏安全性要求的考虑;负载的分段/组装功能影响了路由器处理的效率。n90年代初,人们就开始讨论新的互联网络协议。IETF的IPng工作组在1994年9月提出了一个正式的草案The Recommendation for the IP Next Generation Protocol,1995年底确定了IPng的协议规范,并称为IP版本6(IPv6)新型IP协议IPv6的数据报头结构如图7-3所示:图7-3 IPv6的数据报头结构n版本号(Version):4位,说明对应IP
14、协议的版本号(此处取值为6);n优先级(Priority):4位,定义了源发结点要求的拥塞处理功能和优先级别。n流量标签(Flow labal):24位,标识主机要求路由器特殊处理的数据报序列。n负载长度(Payload length):16位,标识所有扩展域和后继的数据域的总长度,以字节为单位。n下一报头域(Next header):8位,标识紧跟其后的扩展域的类型。n跳跃限制(Hop limit):8位,限制数据报经过路由器的个数,其功能类似于IPv4的生存期。IPv6主要特点有:n(1)扩展地址和路由的能力。n(2)简化了IP报头的格式。n(3)支持扩展选项的能力。n(4)支持对数据的确
15、认和加密。n(5)支持自动配置。n(6)支持源路由。n(7)定义服务质量的能力。n(8)IPv4的平滑过渡和升级。7.2.3 IP地址n每个因特网上的主机和路由器都有一个IP地址,包括类别、网络标识和主机标识。所有的IP地址都是32位,并且在整个因特网中是唯一的。为了避免冲突,因特网中所有的IP地址都是由一个中央权威机构SRI的网络信息中心NIC(Network Information Center)分配。IP地址的一般格式为:类别+Netid+Hostidn其中:n(1)类别:用来区分IP地址的类型:通常将因特网IP地址分成5种类型:(A类、B类、C类、D类、E类)n(2)网络标识(Neti
16、d):表示入网主机所在的网络;n(3)主机标识(Hostid):表示入网主机在本网段中的标识。表7-2 IP地址结构地址网络部分主机部分A类0XXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXB类10XXXXXX XXXXXXXXXXXXXXXX XXXXXXXXC类110XXXXX XXXXXXXXXXXXXXXX XXXXXXXXD类1110XXXX XXXXXXXXXXXXXXXX XXXXXXXXE类1111XXXX XXXXXXXXXXXXXXXX XXXXXXXXnIP地址通常用带点十进制标记法(dotted decimal notation)来书写,这时IP地址写
17、成4个十进制数,相互之间用小数点隔开,每个十进制数(从0到255)表示IP地址的一个字节。例如,32位的十六进制地址C0260813被记为192.38.8.19,这是一个C类地址。值得注意的是因特网还规定了一些特殊地址:n(1)Hostid为全0的IP地址,不分配给任何主机,仅用于表示某个网络的网络地址;例:202.119.2.0。n(2)Hostid为全1的IP地址,不分配给任何主机,用作广播地址,对应分组传递给该网络中的所有结点(能否执行广播,则依赖于支撑的物理网络是否具有广播的功能);例:202.119.2.255。n(3)32位为全1的IP地址(255.255.255.255),称为有
18、限广播地址,通常由无盘工作站启动时使用,希望从网络IP地址服务器处获得一个IP地址;n(4)32位为全0的IP地址(0.0.0.0),表示本身本机地址;n(5)127.0.0.1:为回送地址,常用于本机上软件测试和本机上网络应用程序之间的通信地址。7.2.4子网及子网掩码 n1、子网n任何一台主机申请任何一个任何类型的IP地址之后,可以按照所希望的方式来进一步划分可用的主机地址空间,以便建立子网。为了更好地理解子网的概念,我们假设有一个B类地址的IP网络,该网络中有两个或多个物理网络,只有本地路由器能够知道多个物理网络的存在,并且进行路由选择,因特网中别的网络的主机和该B类地址的网络中的主机通
19、信时,它把该B类网络当成一个统一的物理网络来看待。n如图7-4所示一个B类地址为128.10.0.0的网络由两个子网组成。除了路由器R外,因特网中的所有路由器都把该网络当成一个单一的物理网络对待。一旦R收到一个分组,它必须选择正确的物理网络发送。网络管理人员把其中一个物理网络中主机的IP地址设置为128.10.1.X,另一个物理网络设置为128.10.2.X,其中X用来标识主机。为了有效的进行选择,路由器R根据目的地址的第三个十进制数的取值来进行路由选择,如果取值为1则送往标记为128.10.1.0的网络,如果取值为2则送给128.10.2.0。n使用子网技术,原先的IP地址中的主机地址被分成
20、两个部分:子网地址部分和主机地址部分。子网地址部分和不使用子网标识的IP地址中的网络号一样,用来标识该子网,并进行互连的网络范围内的路由选择,而主机地址部分标识是属于本地的哪个物理网络以及主机地址。子网技术使用户可以更加方便、更加灵活地分配IP地址空间。n子网不仅仅单纯地将IP地址加以分割,其关键在于分割后的子网必须能够正常地与其它网络相互连接,也就是在路由过程中仍然能识别这些子网。问题是,子网分割后如何判断原主机地址中的前几位是哪个子网地址?子网掩码正是解决这一问题的技术。nIP协议标准规定:每一个使用子网的网点都选择一个32位的位模式,若位模式中的某位为1,则对应IP地址中的某位为网络地址
21、(包括类别、网络地址和子网地址)中的一位;若位模式中某位置为0,则对应IP地址中的某位为主机地址中的一位。子网掩码与IP地址结合使用,可以区分出一个网络地址的网络号和主机号。n例如位模式11111111.11111111.00000000.00000000(255.255.0.0)中,前两个字节全为1,代表对应IP地址中最高的两个字节为网络号,后两个字节全0,代表对应IP地址中最后的一个字节为主机地址。这种位模式叫做“子网掩码”。n为了使用方便,常常使用“点分整数表示法”来表示一个子网掩码。由此可以得到A、B、C三大类IP地址的标准子网掩码。nA类地址:255.0.0.0nB类地址:255.2
22、55.0.0nC类地址:255.255.255.0例:已知一个IP地址为202.168.73.5,其缺省的子网掩码为255.255.255.0。求其网络号及主机号。n首先,将IP地址202.168.73.5转换为二进制11001010.10101000.01001001.00000101。n其次,将子网掩码255.255.255.0转换为二进制11111111.11111111.11111111.00000000n。n然后将两个二进制数进行逻辑与(AND)运算,得出的结果即为网络号。结果为,202.168.73.0。n最后,将子网掩码取反再与二进制的IP地址进行逻辑与运算,得出的结果即为主机号
23、。结果为0.0.0.5,即主机号为5。下面来看一个实例,具体分析子网掩码的用法。n例如,某单位需要构建5个分布于不同地点的局域网络,每个网络有10到25台不等的主机,而其仅向NIC申请了一个C类的网络ID号,其号码为192.65.126.0。正常情况下,C类IP地址的子网掩码应该设为255.255.255.0。这种情况下,C类网络的254台主机必然属于同一个网络段内。但现在网络构建需求却为分布于5个不同地点的不同网络段。此时,如果将子网掩码设为255.255.255.224,与255.255.255.0不同的是该子网掩码的最后一个字节为224,而不是0。224所对应的二进制值为11100000
24、,它表示原主机地址的最高三位是现在所划分出的子网的个数。也就是可将主机ID中最高的三位用于子网分割。n主机ID中用于子网分割的这三位共有000、001、010、011、100、101、110、111这8中组合,出去不可使用的代表本身的000及代表广播的111外,还剩余6种组合,也就是说它共可提供6个子网。而每个子网都可以最多支持30台主机,满足构建需求。7.3 因特网路由选择协议n因特网的路由选择协议又分为内部网关路由协议(RIP和OSPF)和外部网关路由协议(BGP)7.3.1内部网关协议RIP和OSPFn由一个独立的管理实体控制的一组网络和路由器一般称为一个自治系统(autonomous
25、system)。一般一个互连的网络是由多个自治系统组成的。自治系统内部可以自己任意选择任何路由协议来传递路由信息,而与其它自治系统无关,其它自治系统也不关心别的自治系统内部所使用的路由协议。但是,为了使自治系统中的网络能够被互连的网络中别的自治系统访问到,必须把自治系统内网络的可达性信息传递给其它自治系统。一般,自治系统中选取一个或多个路由器把该路由信息传递给其它自治系统,它们之间要使用相应的路由协议来完成这个功能。n上面所说的自治系统概念初看起来可能有点模糊,但是在实践中自治系统间的边界应该是精确的,从而允许路由信息自动传播。比如,尽管某个组织拥有的自治系统和别的自治系统是直接相连的,也不会
26、把自治系统内部交换的路由信息传递给别的自治系统。为了使自治系统间的路由算法能够正常工作,对每个自治系统都分配了一个自治系统编号,该自治系统编号与IP地址一样,都由一个中央权威机构进行分配,它唯一地标识了对应的自治系统。两个属于不同自治系统并且交换路由信息的路由器一般称为外部邻居,而属于同一自治系统并交换路由信息的两个路由器称为内部邻居。内部邻居所使用的路由协议称为IGP。1RIP协议n路由信息协议RIP(Routing Information protocol)实际上是一个简单的距离向量路由协议。RIP可能在主机或路由器中实现,因此RIP协议被分为两种不同类型的操作方式。主机中实现的RIP工作
27、在被动(Passive)状态,它不会传递自己路由表中的信息给别的路由器,它只是静静地倾听其它RIP路由器广播的路由信息,并且根据收到的路由信息更新自己的路由表。路由器中实现的RIP工作在主动(active)状态,它定期把路由信息传递给其他RIP路由器,并且根据收到的RIP消息来更新自己的路由表。这也就是说,被动RIP只接收,而主动RIP则发送和接收RIP消息。下面我们将主要讨论主动型RIP路由器的操作 n每个RIP路由器都保存了一张路由表,每一项对应着一个目的地,其中每项包括了目的地的IP地址、到目的地的路径距离的度量(metric)、到目的地的路径的下一个路由器的IP地址(如果目的地是直接连
28、接的,则不需要这个字段)、路由改变标志(指示这条路由信息是否最近被改变过)以及和这条路由有关的一些计时器。nRIP采用的距离度量是一种非常简单的到目的地距离的测量方式:站点计数度量,路由器把到它直接连接的网络的距离定义为1,如果距离为n,表示它到达目的地途中要经过n个路由器,即距离给出了该路由要经过的路由器个数。为了能应付一些复杂的情况,比如说经过一个速率较高的网络的路由显然比一个慢速网络要更好一些,RIP在具体实现时常常允许管理人员对这些慢速的网络指定一个更大的距离度量值,例如3。当路由器初始化时,它会把那些到达它所直接连接的网络的路由加载进来,到直接连接的网络的距离一般被设置为1。一般,R
29、IP的具体实现也允许管理人员增加新的路由,比如说不是通过RIP协议了解到的路由。n每个RIP路由器每隔30秒广播一个路由消息。RIP路由器也可能通过发送Request消息来询问别的路由器有关某些路由或者所有路由的信息,比如,当一个主机启动后,可能要求相邻的RIP路由器传递路由表中的所有信息。当RIP路由器R从路由器G收到一个路由消息时,它会检查该消息中包含的每一条到目的地D的路由,其中距离为cost(G,D),并把该路由与自己路由表中到同一目的地D的路由相比较。n如果路由表中不存在到目的地D的路由,就在路由表中增加一条路由:到目的地D的下一个路由器跳段的地址为G,距离为cost(R,G)+co
30、st(G,D),其中cost(R,G)为本地网络的花费(经常为1)。如果路由表中的路由把G作为下一个跳段,则更新该路由的距离为cost(R,G)+cost(G,D)。否则,比较是否路由消息中指出的到目的地D的路由的距离更短:cost(R,G)+cost(G,D)R2-R5-B;并将数据帧发往路由器2。n(3)路由器2重复路由器1的工作,并将数据帧转发给路由器5。n(4)路由器5同样取出目的地址,发现120.0.5.1就在该路由器所连接的网段上,于是将该数据帧直接交给工作站B。n(5)工作站B收到工作站A的数据帧,一次通信过程宣告结束。n事实上,路由器除了上述的路由选择这一主要功能外,还具有网络流量控制功能。n路由器可分为接入路由器、企业或校园级路由器、骨干级路由器和大比特路由器等若干种不同的类型。