计算机网络理论与实践 课件 第4章 网络层_第1页
计算机网络理论与实践 课件 第4章 网络层_第2页
计算机网络理论与实践 课件 第4章 网络层_第3页
计算机网络理论与实践 课件 第4章 网络层_第4页
计算机网络理论与实践 课件 第4章 网络层_第5页
已阅读5页,还剩174页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章

网络层

4.1网络层提供的两种服务4.2网络层的功能4.3网络层协议4.4IP分组的转发4.5

网际控制报文协议(ICMP)4.6

互联网的路由选择协议4.7

IPv6*4.8网络地址转换(NAT)4.9虚拟专用网(VPN)4.10

IP多播*4.11SDN*4.12实验

在计算机网络领域,网络层应该向运输层提供怎么样的服务(“面向连接”还是“无连接”)曾引起了长期的争论。争论焦点的实质就是:在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统?

从OSI/RM的通信角度来看,网络层所提供的服务主要有两大类,即面向连接服务和面向无连接服务。这两种网络服务的具体实现就是所谓的虚电路服务和数据报服务。4.1网络层提供的两种服务4.1.1虚电路服务

虚电路服务是网络层向运输层提供的一种使所有分组按顺序到达目的端系统的可靠的数据传送方式。进行数据交换的两个端系统之间存在着一条为它们服务的虚电路。

我们先通过电信网来了解虚拟电路,电信网进行的是面向连接的通信方式,使用昂贵的程控交换机(为了保证传输的可靠性),从而向用户提供可靠传输的服务。电信网把用户电话机产生的语音信号可靠地传输到对方的电话机。一条虚拟电路的组成有这些部分构成:(1)源主机和目的主机之间的路径(一些列链路和路由器)(2)路径中每一段链路都有一个VC号(3)路径中的每个路由器都有一个转发表

每一次IP数据报跨越一台路由器创建一个新的连接,就在这个路由器的转发表中增加一个新的连接项。同样,每次施放一个链接,就从表中删除这一项。使用虚拟电路服务就一般是通过以下三个步骤:(1)虚拟电路的建立(2)数据传送(3)虚拟电路的拆除

H1发送给H2的所有分组都沿着同一条虚电路传送,如果这条线路断开了,那么H1和H2就是不通的了。如图4-1所示。H1H2图4-1虚电路传送4.1.2数据报服务

数据报服务是由数据报交换网来提供。端系统的网络层同网络节点中的网络层之间,一致地按照数据报操作方式交换数据。当端系统要发送数据时,网络层给该数据附加上地址、序号等信息,然后作为数据报发送给网络节点;目的端系统收到数据报可能是不按照顺序到达,也有可能出现数据报丢失。数据报服务与OSI的无连接网络服务类似。数据报服务是由数据报交换网来提供。端系统的网络层同网络节点中的网络层之间,一致地按照数据报操作方式交换数据。当端系统要发送数据时,网络层给该数据附加上地址、序号等信息,然后作为数据报发送给网络节点;目的端系统收到数据报可能是不按照顺序到达,也有可能出现数据报丢失。数据报服务与OSI的无连接网络服务类似。由于传输网络不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,且价格低廉(与电信网的交换机相比较)。如果主机(即端系统)中的进程之间的通信需要是可靠的,那么就由网络的主机中的运输层负责(包括差错处理、流量控制等)。采用这种设计思路的好处是:网络的造价大大降低,运行方式灵活,能够适应多种应用。互联网能够发展到今日的规模,充分证明了当初采用这种设计思路的正确性。H1发送给H2的分组可能沿着不同的路径传送,就算里面有一条路线是断开了,那么数据报就会走其他的路线进行传送,两台主机不会无法连接。如图4-2所示。H1H2丢失IP数据报图4-2数据报传送虚电路服务与数据报服务的不同点:对比的方面虚电路服务数据报服务思路可靠通信应当由网络来保证可靠通信应当由用户主机来保证连接的建立必须有不需要终点地址仅在连接建立阶段使用,每个分组使用短的虚电路号每个分组都有终点的完整地址分组的转发属于同一条虚电路的分组均按照同一路进行转发每个分组独立选择路由进行转发当节点出故障时所有通过故障的节点的虚电路均不能工作出故障的节点可能会丢失分组,一些路由可能会发生变化分组时的顺序总是按发送顺序达到终点到达终点的时间,不一定按发送顺序端到端的差错处理和流量控制可以由网络负责,也可以由用户主机负责有用户主机负责4.2.1异构网络互联

所谓异构是指两个或以上的无线通信系统采用了不同的接入技术,或者是采用相同的无线接入技术但属于不同的无线运营商。利用现有的多种无线通信系统,通过系统间融合的方式,使多系统之间取长补短是满足未来移动通信业务需求一种有效手段,能够综合发挥各自的优势。由于现有的各种无线接入系统在很多区域内都是重叠覆盖的,所以可以将这些相互重叠的不同类型的无线接入系统智能地结合在一起,利用多模终端智能化的接入手段,使多种不同类型的网络共同为用户提供随时随地的无线接入,从而构成了如图4-3所示的异构无线网络。4.2网络层的功能图4-3异构无线网络

我们在连接不同网络的时候需要一些中间设备。中间设备又称中间系统或中继系统,根据其所在的层次,可以有一下四种:物理层使用的中间设备叫做转发器(集线器)。数据链路层使用的中间设备叫做网桥(包括交换机)或桥接器。网络层使用的中间设备叫做路由器。在网络层以上使用的中间设备叫做网关。用网关来连接两个不兼容的系统需要在高层进行协议的转换。

使用转发器或网桥不称为网络互连,通过转发器和网桥进行连接的网络,仅仅是把一个局域网扩大了,从网络层的角度看,仍然还是一个网络。一般把用路由器进行互连的网络称为网络互连。如图所示。图4-4互联网络

TCP/IP体系在网络互连上采用的做法是在网络层(即IP层)采用了标准化协议,但相互连接的网络可以是异构的。这样,参加互连的计算机网络都使用相同的网际协议IP,因此可以把互连以后的计算机网络看成如下图所示的一个虚拟互连网络。如图4-5所示。

当互联网上的主机进行通信时,就好像在一个网络上通信一样,看不见互连的各具体的网络异构细节。如果在这种覆盖全球的IP网的上层使用TCP协议,那么就是现在的互联网(Internet)。互联网可以由多种异构网络互连组成。图4-5虚拟互联网络4.2.2路由与转发

路由器主要完成两个功能是路由选择和分组转发。路由选择:确定数据报走那一条路径,即路由器根据不同的算法生成动态的路由表。分组转发:路由器根据转发表将用户的IP数据从合适的端口报转发出去。

路由表是根据路由选择算法得出的,需要对网络拓扑变化的计算最优化。而转发表是从路由表得出的,转发表的结构应当使查找过程最优化。在讨论路由选择的原理时,往往不去区分转发表和路由表,而是笼统地使用路由表一词。

转发是一个节点在本地执行的一个相对简单的过程,即报文从某台设备的一个端口进入而从另一个端口出去。路由选择依赖于网络发展过程中的不断演进的、复杂的分布式算法。最简单的路由选择可以决定报文发送的下一跳主机的地址,复杂的路由协议可以选择一条从主机1和主机2之间经过若干主机的路径。如图4-6所示。图4-6路由转发转发表和路由表的区别:(1)转发表中的一行包括从网络号到发出接口的映射和一些MAC信息,而路由表作为建立转发表的前奏,是由路由选择算法建立的一个表,它通常包含从网络号到下一跳的映射。对于单个主机来说,转发表比路由表更详细;(2)二者建立的目的也不同:构造转发表-目的是为了优化转发分组时查找网络号的过程;优化路由表是为了计算拓扑结构的改变;(3)实现方式不同:转发表可以由特殊的硬件来实现,而路由表很少这样。简单说路由是根据路由表查找到达目标网络的最佳路由表项,转发是根据最佳路由中的出口及下一跳IP转发数据包的过程。因此,路由选择是转发的基础,数据转发是路由的结果。4.3.1网络层协议简介

网络层协议,OSI参考模型的第三层。它控制通信子网进行工作,提供建立、保持和释放连接的手段,保证传输层实体之间进行透明的数据传输。

TCP/IP协议栈的网络层位于网络接口层和传输层之间,主要协议包括IP、ARP、ICMP、IGMP等。其中IP协议是TCP/IP网络层的核心协议,它规定了数据的封装方式和网络节点的标识方法,于网络上数据的端到端的传递。4.3网络层协议TCP/IP的网络层主要定义了以下协议:(1)IP:负责网络层寻址、路由选择、分段及包重组;(2)ARP:负责把IP地址解析成物理地址。在实际进行通信时,物理网络所使用的是物理地址,IP地址是不能被物理网络识别的。对于以太网而言,当IP数据包通过以太网发送时,以太网设备是以MAC地址传输数据的,ARP协议就是用来将IP地址解析成MAC地址的;(3)ICMP:定义了网络层控制和传递消息的功能,可以报告IP数据包传送过程中发生的错误、失败等信息,提供网络诊断功能。ping和tracert两个使用极其斯泛的测试工具就是ICMP消息的应用;(4)IGMP:负责管理IP组播组。于支持在主机和路由器之间进行组播传输数据,它让一个物理网络上的所有路由器知道当前网络中有哪些主机需要组播。组播路由器需要这些信息以便知道组播数据包应该像哪些接口转发。4.3.2IP地址的含义及表示方法

人们为了通信的利便给每一台计算机都事先分配一个类似我们的电话号码一样的标识地址,该标识地址就是IP地址。根据TCP/IP协议划定,IP地址是由32位二进制数组成。

互联网上的每台主机(或路由器)的每个接口分配一个在全世界唯一的IP地址。由互联网名字和数字分配机构ICANN(InternetCorporationforAssignedNamesandNumbers)进行分配。

如:某IP地址为10000000000010110000001100011111为了方便记忆,人们把32位的IP地址分成四段,每段8位,中间用小数点“.”隔开,然后再将每8位二进制换成十进制,即128.11.3.31。如图4-7和4-8所示。图4-7点分十进制图4-8点分十进制记法举例

网络标识:同一物理网络上的所有主机都用同一个网络标识,网络上每一个主机都有一个主机标识与其对应。

主机标识:网络中特定的计算机号码。例:一个主机服务器的IP地址为192.168.10.2,其中网络标识为192.168.10.0主机标识为2。

同一个局域网上的主机或路由器的IP地址中的网络号必须一样。路由器的每一个接口都有一个不同网络号的IP地址。两个路由器直接相连的接口处,可指明也可不指明IP地址。如指明IP地址,则这一段连线就构成了一种只包含一段线路的特殊“网络”。这种网络仅需两个IP地址,可以使用/31地址块,主机号可以是0或1,如图4-9所示。图4-9网络拓扑图4.3.3地址解析协议(ARP)

网络层以上的协议用IP地址来标识网络接口,但以太数据帧传输时,以物理地址来标识网络接口。因此我们需要进行IP地址与物理地址之间的转化。对于IPv4来说,我们使用ARP地址解析协议来完成IP地址与物理地址的转化(IPv6使用邻居发现协议进行IP地址与物理地址的转化,它包含在ICMPv6中)。ARP协议提供了网络层地址(IP地址)到物理地址(MAC地址)之间的动态映射。ARP协议是地址解析的通用协议。如果4-10所示。图4-10

IP地址与物理地址的转化

Mac地址由设备制造商定义、分配,每一个硬件设备都有一个链路层主地址(MAC地址),保存在设备的永久内存中。设备的mac地址不会改变(现在可以进行mac地址伪装)。

IP地址由用户配置给网络接口,网络接口的IP地址是可以发生变化的(通过DHCP获取IP,变化速度比较快)。在一个以太网中获取目的端的MAC地址步骤如图4-11所示。图4-11获取目的端的MAC地址(1)发送ARP请求的以太网数据帧给以太网上的每个主机,即广播(以太网源地址填全1)。ARP请求帧中包含了目的主机的IP地址。(2)目的主机收到了该ARP请求之后,会发送一个ARP应答,里面包含了目的主机的MAC地址。ARP协议工作原理如图12所示:图4-12主机A向本局域网上的某个主机B发送IP数据报(1)每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。(2)主机(网络接口)新加入网络时(也可能只是mac地址发生变化,接口重启等),会发送免费ARP报文把自己IP地址与Mac地址的映射关系广播给其他主机。(3)网络上的主机接收到免费ARP报文时,会更新自己的ARP缓冲区。将新的映射关系更新到自己的ARP表中。(4)某个主机需要发送报文时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机IP地址,源主机MAC地址,目的主机的IP地址等。(5)当本网络的所有主机收到该ARP数据包时:①首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包。②如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,如果已经存在,则覆盖。③然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。(6)源主机收到ARP响应包后。将目的主机的I和MAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。

ARP高速缓存(即ARP表)是ARP地址解析协议能够高效运行的关键,(如果有多次ARP响应时,以最后一次响应为准)

ARP给IP地址和MAC地址中间做了动态映射,也就是说缓存了一个ARP表,将得到的IP地址和MAC地址对应起来,如果在表中没有查到IP地址对应的MAC地址,就会发广播去找。随着用户的使用,ARP表如果不做任何措施,就会变得越来越臃肿缓慢,就降低了网络传输数据的效率,所以ARP缓存中每一项被设置了生存时间,一般是20分钟,从被创建时开始计算,到时则清除,如果在计时期间又被使用了,计时会重置。超过生存时间的项目都从高速缓存中删除,以适应网络适配器变化。如表4-2所示.<IP地址;MAC地址;生存时间(age);类型等>IP地址MAC地址生存时间类型10.4.9.20030.7131.abfc00:08:55Dynamic10.4.9.10000.0c07.ac2400:02:55Dynamic10.4.9.990007.ebea.44d000:06:12Dynamic表4-2映射表

ARP高速缓存的作用:(1)存放最近获得的IP地址到MAC地址的绑定。(2)减少ARP广播的通信量。(3)为进一步减少ARP通信量,主机A在发送其ARP请求分组时,就将自己的IP地址到MAC地址的映射写入ARP请求分组。(4)当主机B收到A的ARP请求分组时,就将主机A的IP地址及其对应的MAC地址映射写入主机B自己的ARP高速缓存中。不必在发送ARP请求。

ARP用于解决同一个局域网上的主机或路由器的IP地址和MAC地址的映射问题。

通信的路径:A→经过R1转发→B。因此主机A必须知道路由器R1的IP地址,解析出其MAC地址。然后把IP数据报传送到路由器R1。如图4-13所示。图4-13通信途径使用ARP的四种典型情况:(1)发送方是主机,要把IP数据报发送到本网络上的另一个主机。这时用ARP找到目的主机的硬件地址。(2)发送方是主机,要把IP数据报发送到另一个网络上的一个主机。这时用ARP找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。(3)发送方是路由器,要把IP数据报转发到本网络上的一个主机。这时用ARP找到目的主机的硬件地址。(4)发送方是路由器,要把IP数据报转发到另一个网络上的一个主机。这时用ARP找到本网络上另一个路由器的硬件地址。剩下的工作由这个路由器来完成。4.3.4分类IP地址

IP地址根据网络ID的不同分为5种类型,A类地址、B类地址、C类地址、D类地址和E类地址,如图4-14所示。图4-14

IP地址分类A类IP地址:一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”,地址范围从1.0.0.0到126.0.0.0。可用的A类网络有126个,每个网络能容纳1亿多个主机。B类IP地址:一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,地址范围从128.0.0.0到191.255.255.255。可用的B类网络有16382个,每个网络能容纳6万多个主机。C类IP地址:一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”。范围从192.0.0.0到223.255.255.255。C类网络可达209万余个,每个网络能容纳254个主机。D类IP地址:用于多点广播(Multicast),D类IP地址第一个字节以“1110”开始,它是一个专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。E类IP地址:以“1111”开始,研究和试验用,为将来使用保留。

各类IP地址的指派范围:A类地址最大可指派的网络数为126(27-2),第一个可指派的网络号为1,最后一个可指派的网络号为126,每个网络中最大主机数为16777214;B类地址最大可指派的网络数为16383(214-1),第一个可指派的网络号为128.1,最后一个可指派的网络号为191.255,每个网络中最大主机数为65534;C类地址最大可指派的网络数为2097151(221-1),第一个可指派的网络号为192.0.1,最后一个可指派的网络号为223.255.255,每个网络中最大主机数为254。注意指派时要扣除全0和全1的主机号。一般不使用的特殊的IP地址如表4-3所示。表4-3一般不使用的特殊的IP地址分类的IP地址的优点有:管理简单;使用方便;转发分组迅速;划分子网,灵活地使用。缺点有:设计上不合理:大地址块,浪费地址资源;即使采用划分子网的方法,也无法解决IP地址枯竭的问题。4.3.5无类别域间路由(CIDR)

无类别域间路由(ClasslessInter-DomainRouting、CIDR)是一个用于给用户分配IP地址以及在互联网上有效地路由IP数据包的对IP地址进行归类的方法。消除了传统的A类、B类和C类地址以及划分子网的概念,可以取IP地址的任意前缀作为网络号,更加有效地分配IPv4的地址空间,但无法解决IP地址枯竭的问题。CIDR可以利用层次网络和路由汇总减小路由器中路由表的规模,提高转发速度。

CIDR地址的网络地址由网络前缀和主机号决定。前缀的位数n不固定,可以在0~32之间选取任意值。如图4-15所示。图4-15

CIDR地址CIDR还采用斜线记法,在IP地址后面加斜线之后写上网络前缀所占的位数。a.b.c.d/n:二进制IP地址的前n位是网络前缀。例如:220.78.168.0/24

我们从这个IP地址可以看出由于主机号是8位,故此时最多有2^8-2=254个主机可以使用。但当这个IP地址表示为220.78.168.0/23时我们可以看到此时从网络号中借了一位出来作为主机号。所以此时网络中的主机个数最多为2^9-2。

通过斜线记法,我们可以知道网络前缀的个数,由此可以知道子网掩码(把网络前缀的位置都标上1即为子网掩码)。之后让子网掩码与该IP地址做与运算可以计算得出网络地址。由此也可以推出最大的地址和最小的地址。

注意:当主机号全为0和全为1的时候,不使用这两个地址,使用这两个地址之间的地址。这里强调的是主机号不能全为0和全为1,但是网络号是可以全为0的。CIDR把网络前缀都相同的所有连续的IP地址组成一个CIDR地址块一个CIDR地址块包含的IP地址数目,取决于网络前缀的位数。4.3.6子网掩码

子网掩码(subnetmask)又叫网络掩码、地址掩码,它用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。

子网掩码是一个32位地址,用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在广域网上。

子网掩码是由由一连串1和接着的一连串0组成,而1的个数就是网络前缀的长度。例如:/20地址块的地址掩码:11111111111111111111000000000000点分十进制记法:255.255.240.0,CIDR记法:255.255.240.0/20。

子网掩码不能单独存在,它必须结合IP地址一起使用。对于A类地址来说,默认的子网掩码是255.0.0.0;对于B类地址来说默认的子网掩码是255.255.0.0;对于C类地址来说默认的子网掩码是255.255.255.0。如图4-16所示。图4-16子网掩码

将子网掩码二进制和IP地址二进制进行逻辑“与”(AND)运算,得到的就是主机地址。如:192.168.10.11AND255.255.255.0,结果为192.168.10.0,其表达的含义为:该IP地址属于192.168.10.0这个网络,其主机号为11,即这个网络中编号为11的主机。

子网掩码一定是配合IP地址来使用的。对于常用网络A、B、C类IP地址其默认子网掩码的二进制与十进制对应关系如上图所示。子网掩码工作过程是:将32位的子网掩码与IP地址进行二进制形式的按位逻辑“与”运算得到的便是网络地址。如图4-17所示。

网络地址=(二进制的IP地址)AND(地址掩码)图4-17网络地址计算4.3.7子网划分与路由聚合

为了减少网络上的通信量,节省IP地址,又增加了一个“子网号字段”,使两级IP地址变为三级IP地址,这种做法叫做划分子网。如图4-18所示。图4-18划分子网

使用子网掩码划分子网后,子网内可以通信,跨子网不能通信,子网间通信应该使用路由器,并正确配置静态路由信息。划分子网,就应遵循子网划分结构的规则。就是用连续的1在IP地址中增加表示网络地址,同时减少表示主机地址的位数。

划分子网的基本思路:(1)一个拥有许多物理网络的单位,可将所属的物理网络划分为若干个子网,划分子网纯属一个单位内部的事情,本单位以外的网络看不见这个网络是由多少个子网组成。(2)从网络的主机号中借用若干位作为子网号,当然主机号也就相应的减少了同样的位数。于是两级IP地址在本单位内部就变为三级IP地址。IP地址::={<网络号>,<子网号>,<主机号>}(3)凡是从其他网络发送给本单位某台主机的IP数据报,仍然是根据IP数据报的目的网络号找到连接在本单位网络上的路由器。但此路由器在收到IP数据报后,再按目的网络号和子网号找到目的子网,把IP数据报交付目的主机。

例如,IP地址为130.39.37.100,网络地址为130.39.37.0、子网地址为130.39.37.0、子网掩码为255.255.255.0,网络地址部分和子网标识部分为“1”所对应,主机标识部分为“0”所对应。使用CIDR表示为:130.39.37.100/24即IP地址/掩码长度。其中第三个字节上的255所对应的8位二进制数值就是将主机地址位数借给了网络地址部分,充当了划分子网的位数。

在今天如此大规模的网络互联环境下,尤其是负责核心网建设的运营商,处在核心网的路由器要处理海量的数据,必然它就要存储特别长的路由表(可能会包含几万条路由项),路由表过长就会引起匹配条目的时间过长,也就导致了数据转发延迟过长,造成网络质量差的效果,为了解决这个问题,提出了路由聚合的技术,也称为超网。如图4-19所示。图4-19超网

聚合前:16个C类地址,地址掩码=255.255.255.0,路由表中需要16个路由项目。

聚合后:聚合为1个地址,地址掩码=255.255.240.0,路由表中只需1个路由项目。

超网的功能是将多个连续的C类的网络地址聚合起来映射到一个物理网络上。这样,这个物理网络就可以使用这个聚合起来的C类地址的共同地址前缀作为其网络号。

超网创建用来解决路由列表超出现有软件和管理人力的问题以及提供B类网络地址空间耗尽的解决办法。超网允许一个路由列表入口表示一个网络集合,就如一个区域代码表示一个区域的电话号码的集合一样。

超网(路由聚合)技术是为了解决路由表的内容冗余问题,使用路由聚合能够缩小路由表的规模,减少路由表的内存。

某大学的ISP共有64个C类网络。如果不采用CIDR技术,则在与该ISP的路由器交换路由信息的每一个路由器的转发表中,需要有64行。采用地址聚合后,转发表中只需要用1行来指出到206.0.64.0/18地址块的下一跳。在ISP内的路由器的转发表中,也仅需用206.0.68.0/22这1个项目,就能把外部发送到这个大学各系的所有分组,都转发到大学的路由器。如图4-20所示。

可见:网络前缀越短,地址块所包含的地址数越多。图4-20

CIDR地址块划分举例4.3.8IP数据报的格式

TCP/IP协议定义了一个在互联网上传输的包,称为IP数据报(IPDatagram)。这是一个与硬件无关的虚拟包,由首部和数据两部分组成。首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的.在首部的固定部分的后面是一些可选字段,其长度是可变的,如图4-21所示。图4-21

IP数据报首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。可选字段,其长度是可变的。版本——占4位,指IP协议的版本,目前的IP协议版本号为4(即IPv4)。首部长度——占4位,可表示的最大数值是15个单位(一个单位为4字节),因此IP的首部长度的最大值是60字节。区分服务——占8位,用来获得更好的服务,只有在使用区分服务(DiffServ)时,这个字段才起作用,在一般的情况下都不使用这个字段。总长度——占16位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为65535字节,总长度必须不超过最大传送单元MTU。标识(identification)——占16位,它是一个计数器,用来产生IP数据报的标识。标志(flag)——占3位,目前只有前两位有意义。标志字段的最低位是MF(MoreFragment),MF=1表示后面还有分片,MF=0表示最后一个分片。标志字段中间的一位是DF(Don'tFragment),只有当DF=0时才允许分片。片偏移——占13位,指出:较长的分组在分片后某片在原分组中的相对位置,片偏移以8个字节为偏移单位。生存时间——占8位,生存时间字段常用的英文缩写是TTL(TimeToLive),其表明数据报在网络中的寿命,由发出数据报的源点设置这个字段,其目的是防止无法交付的数据报无限制地在互联网中兜圈子,因而白白消耗网络资源。最初的设计是以秒作为TTL的单位,每经过一个路由器时,就把TTL减去数据报在路由器消耗掉的一段时间。若数据报在路由器消耗的时间小于1秒,就把TTL值减1。当TTL值为0时,就丢弃这个数据报。协议——占8位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。首部检验和——占16位,这个字段只检验数据报的首部,但不包括数据部分。这是因为数据报每经过一个路由器,都要重新计算一下首都检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化),不检验数据部分可减少计算的工作量。源地址——占32位,表示发送端IP地址。目的地址——占32位,表示目的端IP地址。IP首部的可变部分就是一个可选字段。选项字段用来支持排错,测量以及安全等措施,内容很丰富。此字段的长度可变,从1个字节到40个字节不等,取决于所选择的项目。某些选项项目只需要1个字节,它只包括1个字节的选项代码。但还有些选项需要多个字节,这些选项一个个拼接起来,中间不需要有分隔符,最后用全0的填充字段补齐成为4字节的整数倍。增加首部的可变部分是为了增加IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销,实际上这些选项很少被使用。新的IP版本IPv6就将IP数据报的首部长度做成固定的。4.4.1基于终点的转发

基于终点的转发是一种传统的方式,目前的主流方式。这种转发方式要求主机或者路由器具有一张路由表。当主机有分组要转发时,或者路由器收到分组要进行转发时,就要搜索路由表找到最后终点的路由。分组在互联网中是逐跳转发的。如图4-22所示。4.4

IP分组的转发图4-22分组转发基于终点的转发:基于分组首部中的目的地址传送和转发。为了压缩转发表的大小,转发表中最主要的路由是(目的网络地址,下一跳地址)而不是(目的地址,下一跳地址)。查找转发表的过程就是逐行寻找前缀匹配。如图4-23所示。图4-23查找转发表主机H1发送出的、目的地址是128.1.2.132的分组转发过程如图4-24所示。图4-24分组转发路由器R1收到分组后检查转发表。先检查第1行:255.255.255.192AND128.1.2.132!=128.1.2.128/26,不匹配。接着检查第2行:255.255.255.128AND128.1.2.132=128.1.2.128/25,匹配。进行分组的直接交付(通过路由器R1的接口1)。如图4-25所示。图4-25转发过程4.4.2IP分组的匹配

最长前缀匹配机制(LongestPrefixMatchAlgorithm)是目前行业内几乎所有的路由器都缺省采用的一种路由查询机制。在使用CIDR时,路由表的每个项目的组成,<网络前缀,下一跳地址>。在查找路由的时候可能会得到不止一个匹配的结果。此时应当从匹配结果中选择具有最长网络前缀的路由。因为网络前缀越长,其地址块就越小,路由就越具体。

主机路由(hostroute)又叫做特定主机路由。是对特定目的主机的IP地址专门指明的一个路由。网络前缀就是a.b.c.d/32放在转发表的最前面。

默认路由(defaultroute)不管分组的最终目的网络在哪里,都由指定的路由器R来处理,用特殊前缀0.0.0.0/0表示。

只要目的网络不是N1和N2,就一律选择默认路由,把IP数据报先间接交付默认路由器R1,让R1再转发给下一个路由器。如图4-26所示。图4-26路由器R1充当到达互联网的默认路由器路由器的分组转发算法如图4-27所示。图4-27路由器分组转发算法(1)从数据报的首部提取目的主机的IP地址D,得出目的网络地址为N。(2)若网络N与此路由器直接相连,则把数据报直接交付目的主机D;否则是间接交付,执行(3)。(3)若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)。(4)若路由表中有到达网络N的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行(5)。(5)若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)。(6)报告转发分组出错。4.4.3查找转发表

二叉线索:一种特殊结构的树,可以快速在转发表中找到匹配的叶节点。从二叉线索的根节点自顶向下的深度最多有32层,每一层对应于IP地址中的一位。为简化二叉线索的结构,可以用唯一前缀来构造二叉线索。唯一前缀是指,在表中所有的IP地址中,该前缀是唯一的。为了提高二叉线索的查找速度,广泛使用了各种压缩技术。

查找规则为先检查IP地址左边的第一位,如为0,则第一层的节点就在根节点的左下方;如为1,则在右下方。然后再检查地址的第二位,构造出第二层的节点。依此类推,直到唯一前缀的最后一位。每个叶节点代表一个唯一前缀。如图4-28所示。

为检查网络前缀是否匹配,必须使二叉线索中的每一个叶节点包含所对应的网络前缀和子网掩码。图4-28二叉线索4.5.1ICMP报文解析

ICMP允许主机或路由报告差错情况和提供有关异常情况。ICMP是互联网的标准协议,但ICMP不是高层协议,而是IP层的协议。如图4-29所示。4.5网际控制报文协议(ICMP)图4-29各层协议通常ICMP报文被IP层或更高层协议(TCP或UDP)使用。一些ICMP报文把差错报文返回给用户进程。ICMP报文作为IP层数据报的数据,加上数据报的首部,组成数据报发送出去。ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文。ICMP所有报文的前4个字节都是一样的,但是剩下的其他字节则互不相同。其他字段都因ICMP报文类型不同而不同。ICMP报文共有三个字段:即类型,代码和检验和。8位类型和8位代码字段一起决定了ICMP报文的类型。如图4-30所示。图4-30

ICMP报文类型8,代码0:表示回显请求(ping请求)。类型0,代码0:表示回显应答(ping应答)。类型11,代码0:超时。16位的检验和字段:包括数据在内的整个ICMP数据包的检验和;其计算方法和IP头部检验和的计算方法一样的。ICMP报文具体分为查询报文和差错报文(对ICMP差错报文有时需要做特殊处理,因此要对其进行区分。如:对ICMP差错报文进行响应时,永远不会生成另一份ICMP差错报文,否则会出现死循环)。ICMP差错报告报文共有5种:(1)终点不可达:终点不可达分为:网络不可达,主机不可达,协议不可达,端口不可达,需要分片但DF比特已置为1,以及源路由失败等六种情况,其代码字段分别置为0至5。当出现以上六种情况时就向源站发送终点不可达报文。(2)源站抑制:当路由器或主机由于拥塞而丢弃数据报时,就向源站发送源站抑制报文,使源站知道应当将数据报的发送速率放慢。(3)时间超过:当路由器收到生存时间为零的数据报时,除丢弃该数据报外,还要向源站发送时间超过报文。当目的站在预先规定的时间内不能收到一个数据报的全部数据报片时,就将已收到的数据报片都丢弃,并向源站发送时间超过报文。(4)参数问题:当路由器或目的主机收到的数据报的首部中的字段的值不正确时,就丢弃该数据报,并向源站发送参数问题报文。(5)改变路由(重定向)路由器将改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器。所有的ICMP差错报告报文中的数据字段都具有同样的格式。将收到的需要进行差错报告IP数据报的首部和数据字段的前8个字节提取出来,作为ICMP报文的数据字段。再加上响应的ICMP差错报告报文的前8个字节,就构成了ICMP差错报告报文。提取收到的数据报的数据字段的前8个字节是为了得到运输层的端口号(对于TCP和UDP)以及运输层报文的发送序号(对于TCP)。如图4-31所示。图4.31

ICMP差错报文以下几种情况都不会导致产生ICMP差错报文(1)ICMP差错报文(但是,ICMP查询报文可能会产生ICMP差错报文)(2)目的地址是广播地址或多播地址的IP数据报(3)作为链路层广播的数据报(4)不是IP分片的第一片(5)源地址不是单个主机的数据报。即源地址不能为零地址、环回地址、广播地址或多播地址。这些规则是为了防止过去允许ICMP差错报文对广播分组响应所带来的广播风暴。4.5.2ICMP应用举例

PING(PacketInterNetGroper)用来测试两个主机之间的连通性。使用了ICMP回送请求与回送回答报文。是应用层直接使用网络层ICMP的例子,没有通过运输层的TCP或UDP。该程序发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答。Ping程序还能测出到这台主机的往返时间,以表明该主机离我们有多远。我们将发送回显请求的ping程序为客户,而称被ping的主机为服务器。如图4.32所示。图4.32

PING命令

Traceroute命令用来获得从本地计算机到目的主机的路径信息。在MSWindows中该命令为Tracert,而UNIX系统中为Traceroute。Tracert先发送TTL为1的回显请求报文,并在随后的每次发送过程将TTL递增1,直到目标响应或TTL达到最大值,从而确定路由。如图4.33所示。图4.33

Traceroute命令4.6.1概述

互联网采用的是分层次的、分布式的动态路由协议。其中又划分为许多较小的自治系统,如图4.36所示。每一个小的自治系统中采用的是内部网关协议(IGPInteriorGatewayProtocol),也称为域内路由选择,多个小的自治系统间采用的是外部网关协议(EGPExternalGatewayProtocol),也称为域间路由选择。其中,常用的内部网关协议有RIP(RoutinginformationProtocol)和OSPF(OpenShortestPathFitst)等,常用的外部网关协议有BGP(BGPBorderGatewayProtocol)等,如图4-34所示。4.6互联网的路由选择协议图4-34内部网关协议与外部网关协议4.6.2内部网关协议——RIP协议

1.RIP协议路由信息协议(RoutingInformationProtocal)RIP是一种分布式的、基于距离向量的路由选择协议,协议要求网络中的每个路由器都要维护从它自己到其他每一个目的网络的距离记录,以便传给相邻的路由器,并且仅与相邻的路由器交换信息,交换的信息就是当前本路由器的路由表。相邻的路由器之间会按照固定的时间进行信息交换,当网络发生变化时,路由器也会及时向相邻路由器发送变化后的路由信息。在RIP协议中,路由器到直接连接的网络的距离=1。路由器到非直接连接的网络的距离=所经过的路由器数+1。RIP协议中的“距离”也称为“跳数”。因为网络规模有限,一条路径最多只能包含15个路由器。跳数的最大值为16时即相当于不可达。RIP协议的局限在于只把路径长度作为唯一的度量标准,如果遇到速度很快但是长度较长的路径就不作考虑。RIP协议还有一个主要缺点:坏消息传的慢,即当网络出现故障时,要经过较长的时间才能将此信息传到所有的路由器。2.路由表的建立路由器在刚刚开始工作的时候,路由表是空的,因为一开始还没有和其他路由器建立连接,也无法得知下一跳的具体地址,之后才能得到直连网络的距离。在RIP协议中,每个路由器都只和自己相邻的路由器进行数据交换路由表。在经过若干次更新后,所有的路由器都会知道到达本自治系统中任何一个网络的最短距离和下一跳的路由地址。路由表的主要信息包括:目的网络、最短距离、下一跳地址。路由表的更新则取决于距离向量算法找出到达每个目的网络的最短距离。3.距离向量算法对每个相邻路由器(假设其地址为X)发送过来的RIP报文,路由器:(1)修改报文中的所有路由地址:把“下一跳”字段中的地址都改为X,因为多经过一个路由器,所以把所有的“距离”字段的值加1。(2)对修改后的报文中的每一个项目,重复以下步骤:若路由表中没有目的网络N,则把该项目添加到路由表中。若路由器的路由表中,存在到N的路由,再进行如下步骤若路由表中的下一跳地址就是X,那么将修改过的表项替换原来的路由(坏消息传的慢)。若路由表中的下一跳地址不是X,则将自己的路由的距离与修改过的表项中的距离相比,若修改过的表项中的距离比自己的小,那么替换路由,否则什么也不做。若三分钟还没有收到相邻路由器发过来的报文,则将此相邻路由标记为不可到达,即把距离设置为16。4.6.3内部网关协议——OSPF协议

开放式最短路径优先OSPF(OpenShortestPathFirst)是为克服RIP的缺点在1989年开发出来的,使用的是Dijkstra提出的SPF算法,可以快速响应网络变化。OSPF路由协议是一种典型的链路状态(Link-state)的路由协议,一般用于同一个路由域内,对网络没有跳数限制。其中链路指的是路由器接口,链路状态(LSA)就是OSPF接口上的描述信息,例如接口上的IP地址,子网掩码,网络类型,Cost值等等。OSPF路由器之间交换的并不是路由表,而是链路状态(LSA),OSPF通过获得网络中所有的链路状态信息,从而计算出到达每个目标精确的网络路径。OSPF将一个自治系统再划分为若干个更小的范围,叫作区域。划分区域的好处就是把利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个的自治系统,这就减少了整个网络上的通信量。OSPF路由器会将自己所有的链路状态毫不保留地全部发给邻居,邻居将收到的链路状态全部放入链路状态数据库,邻居再发给自己的所有邻居,并且在传递过程种,绝对不会有任何更改。最终,网络中所有的OSPF路由器都拥有网络中所有的链路状态,并且所有路由器的链路状态应该能描绘出相同的网络拓扑。

OSPF简单地说就是两个相邻的路由器通过发报文的形式成为邻居关系,邻居再相互发送链路状态信息形成邻接关系,之后各自根据最短路径算法算出路由,放在OSPF路由表,OSPF路由与其他路由比较后优的加入全局路由表。整个过程使用了五种报文、三个阶段、四张表。

(1)五种报文 Hello报文:建立并维护邻居关系。 DBD报文:发送链路状态头部信息。 LSR报文:把从DBD中找出需要的链路状态头部信息传给邻居,请

求完整信息。 LSU报文:将LSR请求的头部信息对应的完整信息发给邻居。 LSACK:收到LSU报文后确认该报文。

(2)三个阶段 邻居发现:通过发送Hello报文形成邻居关系。 路由通告:邻居间发送链路状态信息形成邻接关系。 路由计算:根据最短路径算法算出路由表。

(3)四张表 邻居表:主要记录形成邻居关系路由器。 链路状态数据库:记录链路状态信息。 OSPF路由表:通过链路状态数据库得出。 全局路由表:OSPF路由与其他比较得出。

1.OSPF七种状态Down(停止):各路由器未与任何邻居交换信息,开始从运行OSPF的接口以组播地址224.0.0.5发送Hello包。Init(初始):各路由器收到第一个Hello数据包后,把该路由器添加到自己的邻居Neighbor列表中。Two-Way(双向状态属于邻居关系):收到的Hello包中有自己的RouterID,将该路由器加入自己邻居列表中,进入2-Way状态。在这个过程中同时选举出DR和BDR。若不形成邻接关系则一直停留在该状态。Exstart(准启动):DROther与DR/BDR发送DBD包确定Master/Slave关系,RID大的的成为Master(不一定是DR)。Exchange(交换):Master与Slave之间相互单播发送一个或多个DBD数据库描述数据包(Slave沿用Master的序列号先发送),进行DBD的同步。DBD有序号,由Master决定DBD的序号。相互收到DBD后,通过序列号进行隐式确认已收到DBD。Exchange状态结束的最后一个DBD包是Slave发送的。Loading(加载):将收到的信息同LSDB中的信息进行比较。如果DBD中有更新的链路状态条目,则向对方发送一个LSR,用于请求新的LSA,对方回复相应的LSU,当所有LSR都得到LSU答复后向对方回应LSAck进行显示确认。Full(完全状态,属于邻接关系):相邻的路由器在Loading完成同步后进入Full状态,开始正常转发数据。此时区域内的每个链路应该都有相同的数据链路状态数据库。后续只有Hello包、LSU包、LSAck包。

2.OSPF协议工作过程概述图4-35

OSPF协议工作过程

OSPF协议工作过程主要有4个阶段:(1)寻找邻居;(2)建立邻接关系;(3)传递链路状态信息;(4)进行路由计算。(1)寻找邻居,如图4-36所示。图4-36寻找邻居

(2)建立邻接关系,如图4-37所示。图4-37建立邻接关系

(3)传递链路状态信息,如图4-38所示。图4-38链路状态信息传递

(3)传递链路状态信息,如图4-38所示。图4-38链路状态信息传递

(4)进行路由计算,如图4-39所示。图4-39路由计算

3.Router-ID每一台路由器只有一个Router-ID,Router-ID使用IP地址的形式来表示,确定Router-ID的方法为:(1)手工指定Router-ID。(2)路由器上活动的Loopback接口的IP地址最大,也就是数字最大,如C类地址优先于B类地址,一个非活动的接口的IP地址是不能被选为Router-ID的。(3)如果没有活动的Loopback接口,则选择活动的物理接口的IP地址最大的。如果一台路由器收到一条链路状态,无法到达该Router-ID的位置,就无法到达链路状态中的目标网络。Router-ID只在OSPF启动时计算,或者重置OSPF进程后计算。

4.OSPF区域

OSPF中划分区域的目的就在于控制链路状态信息LSA洪泛的范围,减小链路状态数据库LSDB的大小,改善网络的可扩展性,快速收敛。当网络中包含多个区域时,OSPF协议有特殊的规定,即其中必须有一个Area0,通常也叫作骨干区域,当设计OSPF网络时,一个很好的方法就是从骨干区域开始,然后再扩展到其他区域。骨干区域在所有其他区域的中心,即所有区域都必须与骨干区域物理或逻辑上相连,因为OSPF协议要把所有区域的路由信息引入骨干区域,然后再依次将路由信息从骨干区域分发到其他区域中。OSPF将区域划分为以下几种类型。骨干区域:作为中央实体,其他区域与之相连。骨干区域编号为0,在该区域中,各种类型的LSA均允许发布。标准区域:除骨干区域外的默认的区域类型,在该类型区域中,各种类型的LSA均允许发布。末梢区域:即STUB区域,该类型区域中不接受关于AS外部的路由信息,即不接受类型5的AS外部LSA,需要路由到自治系统外部的网络时,路由器使用默认路由(0.0.0.0)。末梢区域中不能包含有自治系统边界路由器ASBR。完全末梢区域:该类型区域中不接受关于AS外部的路由信息,同时也不接受来自AS中其他区域的汇总路由,即不接受类型3、类型4、类型5的LSA。完全末梢区域也不能包含自治系统边界路由器ASBR。划分区域的优缺点如下。优点:(1)减少了整个网络上的通信量。(2)减少了需要维护的状态数量。缺点:(1)交换信息的种类增多了。(2)使OSPF协议更加复杂了。

5.OSPF协议和RIP协议的不同点

(1)OSPF协议向本自治系统中的所有路由器发送信息使用的方法是洪泛法,而RIP协议采用的则是距离向量法。(2)OSPF协议发送的信息是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。“链路状态”就是说明本路由器都和哪些路由器相邻,以及该链路的度量。RIP协议发送的信息是本路由器的路由表。(3)只有当链路状态发生变化时,OSPF路由器才向所有路由器用洪泛法发送此信息。而RIP不管网络拓扑有无发生变化,路由器之间都要定期交换路由表的信息。(4)距离矢量路由协议的根本特征就是自己的路由表是完全从其他路由器学来的,并且将收到的路由条目一丝不变地放进自己的路由表中,运行距离矢量路由协议的路由器之间交换的是路由表,距离矢量路由协议是没有大脑的,路由表从来不会自己计算,总是把别人的路由表拿来就用;而OSPF完全抛弃了这种不可靠的算法,OSPF是典型的链路状态路由协议,路由器之间交换的并不是路由表,而是链路状态,OSPF通过获得网络中所有的链路状态信息,从而计算出到达每个目标精确的网络路径。(5)OSPF允许管理员给每条链路指派不同的代价。这种灵活性是RIP所没有的。4.6.4外部网关协议——BGP协议

外部网关协议BGP是不同自治系统的路由器之间交换路由信息的协议。BGP只是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。BGP采用了路径向量(PathVector)路由选择协议。在AS之间的连接是eBGP,iBGP则用于将AS内部的信息传到eBGP,AS内部无法通过iBGP交换信息。eBGP和iBGP使用的报文类型、属性、状态机等都完全一样。但它们在通报前缀时采用的规则不同:从eBGP连接的对等端得知的前缀信息可以通报给一个iBGP连接的对等端。反过来也是可以的。但从iBGP连接的对等端得知的前缀信息则不能够通报给另一个iBGP连接的对等端。为了防止AS间产生环路,当BGP设备接收eBGP对等端发送的路由时,会将带有本地AS号的路由丢弃。而为了防止AS内产生环路,BGP设备不会将从iBGP对等端学到的路由通告给其他iBGP对等端,并与所有iBGP对等端建立全连接,如图4-40所示。图4-40外部网关协议BGP示意图

1.三种不同的自治系统(AS)(1)末梢AS:不会把来自其他AS的分组再转发到另一个AS。必须向所连接的AS付费。(2)多归属AS:同时连接到两个或两个以上的AS。增加连接的可靠性。(3)穿越AS:为其他AS有偿转发分组。(4)对等AS:经过事先协商的两个AS,彼此之间发送或接收分组都不收费。

2.BGP的路由选择(1)本地偏好值最高的路由。(2)AS跳数最小的路由。(3)使用热土豆路由选择算法(在当前AS内的转发次数最少)。(4)路由器BGPID数值最小的路由。

3.BGP的四种报文(1)OPEN(打开)报文:用来与相邻的另一个BGP发言人建立关系,使通信初始化。(2)UPDATE(更新)报文:用来通告某一路由的信息,以及列出要撤销的多条路由。(3)KEEPALIVE(保活)报文:用来周期性地证实邻站的连通。(4)NOTIFICATION(通知)报文:用来发送检测到的差错。

4.BGP的优点(1)BGP从多方面保证了网络的安全性、灵活性、稳定性、可靠性和高效性。(2)BGP采用认证和GTSM的方式,保证了网络的安全性。(3)BGP提供了丰富的路由策略,能够灵活地进行路由选路,并且能指导邻居按策略发布路由。(4)BGP提供的路由聚合和路由衰减功能可防止路由震荡,有效提高了网络的稳定性。(5)BGP使用TCP作为其运输层协议(目的端口号为179),提高了网络的可靠性。(6)在邻居数目多、路由量大且大部分邻居具有相同出口的策略的场景下,BGP使用按组打包技术,极大地提高了BGP打包、发包性能。4.7.1IPv6的特点

IPv6是英文“InternetProtocolVersion6”(互联网协议第6版)的缩写,是互联网工程任务组(IETF)设计的用于替代IPv4的下一代IP协议,其地址数量号称可以为全世界的每一粒沙子编上一个地址。由于IPv4最大的问题在于网络地址资源不足,严重制约了互联网的应用和发展,依靠NAT技术暂时缓解了IPv4地址不足的问题,但是无法从根本上解决。IPv6的使用,不仅能解决网络地址资源数量的问题,而且也扫除了多种接入设备连入互联网的障碍。4.7

IPv6*

1.地址空间丰富这是IPv6最大的特点,IPv6地址一共有128位。作为对比,IPv4仅有32位;也就是说IPv6的地址数量等于IPv4的地址数量再乘以三个42亿。这就是有人敢说IPv6可以为每一粒沙子都分配IP地址的原因。

2.精简报文结构

IPv6的报文结构相比IPv4精简了许多。IPv4的报文长度不固定,有一个长度可变的可选字段来实现一些功能;IPv6在此前提下长度固定,且将可选字段、分片的字段的功能转移到IPv6扩展首部(或叫扩展报头、扩展包头)中。这就极大地精简了IPv6的报文结构,更多的功能通过添加不同的扩展首部来实现。IPv6的报文格式如表4-4所示,IPv4的报文格式如表4-5所示。

3.实现自动配置和前缀重新编址在IPv6网络环境中,路由器会给终端设备通告自身接口的前缀信息;终端设备通过IPv6前缀,再通过计算生成接口标识就可以为自己生成一个可用的IPv6地址,同时还会将该地址作为自己的默认网关。就算这时需要将已经获得IPv6地址的终端设备移动到另一个网段的网络接入,那终端设备也可以通过上述过程自动更改自己的IPv6地址。

4.支持层次化网络结构IPv6不再像IPv4一样按照A、B、C等分类来划分地址,而是按照IANA、RIR、ISP这样的顺序来分配。IANA是国际互联网号码分配机构,RIR是区域互联网注册管理机构,ISP是一些运营商(例如电信、移动、联通)。IANA会给五个RIR(我们所在区域的机构是APNIC(亚太网络信息中心))合理分配IPv6地址,然后五个RIR再向区域内的国家合理分配地址,每个国家分配到的地址再交给ISP运营商,然后运营商再来合理地给用户分配资源。在这个分配过程中将能够尽力避免出现网络地址子网不连续的情况,这样可以更好地聚合路由,减少骨干网络上的路由条目。5.更好地支持QoSIPv6支持QoS(QualityofService),意味着可以确保重要的数据获得更好的服务质量。6.原生支持端到端的安全IPv6的扩展首部中有认证首部、封装安全净载首部,这两个首部是IPSec定义的。通过这两个首部,网络层自己就可以实现端到端的安全通信,而无须像IPv4协议一样需要其他协议的帮助。4.7.2IPv6地址

IPv6地址总共有128位。为了便于人工阅读和输入,和IPv4地址一样,IPv6地址也可以用一串字符表示。IPv6地址使用十六进制形式表示,IPv6地址划分成8块,每块16位,块与块之间用“:”隔开。1.IPv6地址化简(1)多个连续的全0地址可以化简为“::”。(2)一个IPv6地址中只能出现一个“::”。这里无明确规定,所以删除全0地址长度。(3)“::”可以出现在地址开头或者结尾,也可以出现在中间。IPv6地址化简如表4-6所示。化简前化简后ABCD:0000:2345:0000:ABCD:0000:2345:0000ABCD:0:2345:0:ABCD:0:2345:0ABCD:EF01:0:0:0:0:0:6789ABCD:EF01::6789ABCD:0:0:0:ABCD:0:0:6789ABCD::ABCD:0:0:6789ABCD:0:0:6789:ABCD:0:0:6789ABCD::6789:ABCD:0:0:67890:0:0:0:0:0:0:1::12001:0:0:0:0:0:0:02001::表4-6

IPv6地址化简2.IPv6地址类型IPv6地址整体上分为三类:单播地址、多播地址、任播地址。单播地址:一个单播地址对应一个接口,发往单播地址的数据报会被对应的接口接收。多播地址:一个多播地址对应一组接口,发往多播地址的数据报会被这组的所有接口接收。任播地址:IPv6增加的一种类型。任播的终点是一组计算机,但数据报在交付时只交付其中的一个,通常是按照路由算法得出的距离最近的那个。4.7.3IPv4向IPv6过渡

虽然IPv4目前仍是主流协议,但随着时间的推移以及技术的发展,IPv6终会取代IPv4,但这不是一蹴而就的,需要经历一个漫长的过程。因此,人们也研究出了IPv4向IPv6过渡的方法。1.双协议栈双协议栈(DualStack)是指在完全过渡到IPv6之前,使一部分主机(或路由器)装有两个协议栈:IPv4和IPv6。双协议栈主机在和IPv6主机通信时采用IPv6地址,而和IPv4主机通信时就采用IPv4地址。它用域名系统DNS来查询。若DNS返回的是IPv4地址,则双协议栈的源主机就使用IPv4地址。若DNS返回的是IPv6地址,源主机就使用IPv6地址。其实相当于是多了一种选择,既能接受IPv4,也能接受IPv6。2.隧道技术在IPv6数据报要进入IPv4网络时,将IPv6数据报封装成IPv4数据报(整个IPv6数据报变成了IPv4数据报的数据部分)。然后,IPv6数据报就在IPv4网络的隧道中传输,当IPv4数据报离开IPv4网络中的隧道时再把数据部分(即原来的IPv6数据报)交给主机的IPv6协议栈。IPv6会慢慢成为主流协议,但这个过程会是一个缓慢的过程,IPv6会一点点扩大自己的势力范围。在这漫长的岁月里,NAT技术会继续存在,既用于NAT44,也用于NAT64,这样就可以保证IPv4的主机与IPv6通信。这个过程可以概括为“兼容并蓄、蚕食市场、取而代之”。网络地址转换(NetworkAddressTranslation,NAT)方法是在1994年提出的。这种方法需要在专用网连接到互联网的路由器上安装NAT软件。装有NAT软件的路由器叫作NAT路由器,它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和互联网连接。使用网络地址转换(NAT)技术,可以在专用网内部使用专用IP地址,而仅在连接到互联网的路由器上使用全球IP地址。这样就节约了IP地址。4.8

网络地址转换(NAT)4.8.1NAT的三种类型NAT有三种类型:静态地址NAT(StaticNAT)、动态地址NAT(PooledNAT)、网络地址与端口号转换NAPT(Port-LevelNAT)。其中,NAPT把内部地址映射到外部网络的一个IP地址的不同端口上。它可以将中小型的网络隐藏在一个合法的IP地址后面。NAPT与动态地址NAT不同,它将内部连接映射到外部网络中的一个单独的IP地址上,同时在该地址上加上一个由NAT设备选定的端口号。在内部主机与外部主机通信时,在NAT路由器上发生了两次地址转换。(1)离开专用网时:替换源地址,将内部地址替换为全球地址。(2)进入专用网时:替换目的地址,将全球地址替换为内部地址。4.8.2NAT的特性1.优点(1)NAT允许企业内部网使用私有地址,并通过设置合法的地址集,使内部网可以与互联网进行通信,从而节省合法注册地址。(2)NAT可以减少规划地址时发生的地址重叠情况。(3)NAT增强了内部网与公用网络连接时的灵活性。(4)NAT支持地址重叠。2.缺点(1)NAT会使延迟增大。(2)NAT增加了配置和排错的复杂性。(3)NAT也可能会使某些需要使用内嵌IP地址的应用不能正常工作,因为它隐藏了端到端的IP地址。4.8.3NAPTNAPT(NetworkAddressPortTranslation,网络地址与端口号转换)可将多个内部地址映射为一个合法公网地址,但以不同的协议端口号与不同的内部地址相对应,也就是<内部地址+内部端口>与<外部地址+外部端口>之间的转换。NAPT普遍用于接入设备中,它可以将中小型的网络隐藏在一个合法的IP地址后面。NAPT也被称为“多对一”的NAT,或者叫PAT(PortAddressTranslation,端口地址转换)、地址超载(AddressOverloading)。NAPT算得上是一种较流行的NAT变体,通过转换TCP或UDP协议端口号以及地址来提供并发性。除了一对源IP地址和目的IP地址,还包括一对源协议端口号和目的协议端口号,以及NAT使用的一个协议端口号。NAPT的主要优势在于,能够使用一个全球有效IP地址来获得通用性;主要缺点在于其通信仅限于TCP或UDP。当所有通信都采用TCP或UDP时,NAPT允许一台内部计算机访问多台外部计算机,并允许多台内部计算机访问同一台外部计算机,相互之间不会发生冲突。4.8.4NAT的应用NAT主要可以实现以下几个功能:数据包伪装、负载均衡、端口转发和透明代理。数据包伪装:可以将内网数据包中的地址信息更改成统一的对外地址信息,不让内网主机直接暴露在互联网上,保证内网主机的安全。同时,该功能也常用来实现共享上网。例如,内网主机访问外网时,为了隐藏内网拓扑结构,使用全局地址替换私有地址。负载均衡:目的地址转换NAT可以重定向一些服务器的连接到其他随机选定的服务器上。端口转发:当内网主机对外提供服务时,由于使用的是内部私有IP地址,外网无法直接访问。因此,需要在网关上进行端口转发,将特定服务的数据包转发给内网主机。透明代理:如自己架设的服务器空间不足,需要将某些链接指向存在另外一台服务器的空间;或者某台计算机上没有安装IIS服务,但是却想让网友访问该台计算机上的内容,这个时候利用IIS的Web站点重定向即可轻松地搞定。由于IP地址的紧缺,一个机构能够申请到的IP地址数往往远小于本机构所拥有的主机数。考虑到互联网并不很安全,一个机构也并不需要把所有的主机都接入外部的互联网。如果一个机构内部的计算机通信也采用TCP/IP协议,那么这些仅在机构内部使用的计算机就可以由本机构自行分配其IP地址。利用公用的互联网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网(VirtualPrivateNetwork,VPN)。VPN内部使用互联网的专用地址。一个VPN至少要有一个路由器具有合法的全球IP地址,这样才能和本系统的另一个VPN通过互联网进行通信。所有通过互联网传送的数据都必须加密。4.9

虚拟专用网(VPN)4.9.1VPN的工作原理在VPN网关对数据包进行处理时,有两个参数对于VPN通信十分重要:原始数据包的目标地址(VPN目标地址)和远程VPN网关地址。根据VPN目标地址、VPN网关地址能够判断对哪些数据包进行VPN处理,对于不需要处理的数据包通常情况下可直接转发到上级路由;远程VPN网关地址则指定了处理后的VPN数据包发送的目标地址,即VPN隧道的另一端VPN网关地址。由于网络通信是双向的,在进行VPN通信时,隧道两端的VPN网关都必须知道VPN目标地址和与此对应的远端VPN网关地址。4.9.2VPN的工作过程VPN的工作过程如下:(1)要保护主机发送明文信息到其他VPN设备。(2)VPN设备根据网络管理员设置的规则,确定对数据进行加密还是直接传输。(3)对需要加密的数据,VPN设备将其整个数据包(包括要传输的数据、源IP地址和目的lP地址)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论