网络规划设计师考点中,网络层协议是其中的一个重点内容。网络层协议负责实现数据在不同网络之间的传输。常见的网络层协议有IP协议和ICMP协议等。其中,IP协议是网络层的核心协议,负责实现数据包的传输和路由选择。ICMP协议则是网络层的辅助协议,用于网络状态的诊断和错误报告。了解网络层协议的工作原理和使用方法,可以帮助网络规划设计师更好地设计和优化网络架构,提高网络的稳定性和可靠性。
1.IPv4协议
(1) IP地址
① 概述
Internet中有数百万台以上的主机和路由器,IP地址可以确切地标识它们。一台主机至少拥有一个IP地址。任何两台主机的IP地址不能相同,但是允许一台主机拥有多个IP地址。如果一台计算机虽然也连入Internet,使用Internet的某些功能,但它没有自己的IP地址,就不能称为主机。它只能通过连接某台具有IP地址的主机实现这些功能的,因此只能作为上述主机的仿真终端,其作用如同该主机的普通终端一样,而不论其自身的功能有多强。
IP地址的划分经过了三个阶段:分类的IP地址;子网的划分;构成超网。
② 分类IP地址结构及类别
IP地址是由32位二进制数,即4个字节组成的,它与硬件没有任何关系,所以也称为逻辑地址。它由网络号和主机号两个字段组成,这样的IP地址是两级IP地址,如1.8.2图所示。IP地址的结构使我们可以在因特网上很方便地进行寻址,这就是:先按IP地址中的网络号(net-id)把网络找到,再按主机号(host-id)把主机找到。所以IP地址并不只是一个计算机的代号,而是指出了连接到某网络上的某计算机。
图1-78 IP地址结构
为了便于对IP地址进行管理,同时还考虑到网络的差异很大,有的网络拥有很多主机,而有的网络上的主机则很少。因此因特网的IP地址分成为五类,即A类到E类,如图1-79所示。目前大量使用的IP地址是A、B、C三类。当某单位申请到一个IP地址时,实际上只是获得了一个网络号net-id,具体的各个主机号由本单位自行分配。
图1-79 IP地址的类型
③ 特殊IP地址
IP定义了一套特殊地址格式,称为保留地址。 这些特殊地址包括:网络地址,主机地址,直接广播地址,有限广播地址,本机地址。
④ 子网及子网掩码
两级 IP 地址的缺点:
IP 地址空间的利用率有时很低。
给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。
在IP 地址中增加一个"subnet-id"字段,使两级的 IP 地址变成为三级的 IP 地址。这种做法叫作划分子网(subnetting) .划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。因此子网号 subnet-id是从两级IP的主机号部分"借用"的若干个位。
图1-80 三级IP地址的类型及子网掩码
当外面的分组进入到本单位网络后,本单位的路由器如何确定应转发的子网呢?这就是子网掩码的作用。将子网掩码和IP地址进行逐位相"与",所得的结果就是网络地址。这里的网络地址显然是Net-id和Subnet-id不变 Host-id全0的。
⑤ VLSM和CIDR
在 1992 年因特网面临三个必须尽早解决的问题,这就是:
B 类地址在 1992 年已分配了近一半,眼看就要在 1994 年 3 月全部分配完毕!
因特网主干网上的路由表中的项目数急剧增长(从几千个增长到几万个)。
整个 IPv4 的地址空间最终将全部耗尽。
1987 年,RFC 1009 指明在一个划分子网的网络中可同时使用几个不同的子网掩码。使用变长子网掩码 VLSM (Variable Length Subnet Mask)可进一步提高 IP 地址资源的利用率。
在 VLSM 的基础上又进一步研究出无分类编址方法,正式名字是无分类域间路由选择 CIDR (Classless Inter-Domain Routing)。
CIDR两级编址的记法如图1-81 所示。
图1-81 CIDR两级编址结构
CIDR 常采用如128.14.32.0/20的表示方法,即在IP地址后面加上一个斜线"/",然后写上网络前缀所占的比特数。并隐含地指出 IP 地址128.14.32.0的掩码是 255.255.240.0.CIDR 虽然不使用子网了,但仍然使用"掩码"这一名词(但不叫子网掩码)。
CIDR 将网络前缀都相同的连续的 IP 地址组成"CIDR地址块". 即一个 CIDR 地址块可以表示很多地址,这种地址的聚合常称为路由聚合,它使得路由表中的项目大大减少。
另外IP地址还分为全球地址和专用地址。【RFC 1918】指明的专用地址是:
10.0.0.0到10.255.255.255 (或记为10/8);
172.16.0.0到172.31.255.255 (或记为172.16/2)
192.168.0.0到192.168.255.255 (或记为192.168/16)
(2) IPv4数据报格式
如图1-82 IPv4数据报格式
版本:4 bit,指IP协议的版本,目前的 IP 协议版本号为 4 (即 IPv4)。
首部长度:4 bit,可表示的最大数值是 15 个单位(一个单位为 4 字节),因此 IP 的首部长度的最大值是60字节。
服务类型: 8 bit,用来获得更好的服务,包括时延、吞吐量、可靠性、路由费用等。在相当长一段时期内并没有什么人使用服务类型字段,直到最近,当需要将实时多媒体信息在因特网上传送时,服务类型字段才重新引起大家的重视。
总长度:16 bit,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节。总长度必须不超过最大传送单元 MTU.
标识:16 bit,为了使分片后的各数据报片最后能准确地重装成为原来的数据报。
标志:3 bit,目前只有前两个比特有意义。
片偏移:12 bit,表示较长的分组在分片后,某片在原分组中的相对位置。片偏移以 8 个字节为偏移单位。
生存时间:8 bit,记为 TTL,表示数据报在网络中的寿命,初始值为允许经过的跳数,一般为15.
协议:8 bit,指出此数据报携带的数据使用何种协议,以便目的主机的 IP 层将数据部分上交给哪个处理过程。
首部检验和:16 bit.只检验数据报的首部不包括数据部分。这里不采用 CRC 检验码而采用简单的补码计算方法。
源地址: 4 字节。
目的地址: 4 字节。
可选字段:用来增加IP数据报的功能。
填充:填充能够32位。
数据部分:使用IP数据报所传输的内容和协议字段有很大的关系。假如协议字段指明是TCP协议,那么数据部分就是一个TCP报文。但如果IP包分片了,就不是一个完整的TCP报文了。
(3) IP数据报的封装与分片
IP数据报处于网络层,在传送时它需要下层协议给它提供服务,把它封装在数据链路层的协议数据单元--帧的数据域中。而数据帧的格式和其数据域大小的定义和上层协议是独立的,它不会事先去考虑上层的协议数据单元的大小。所以如果下层帧的数据域小于IP数据报大小的话,IP数据报必须分片。如果IP数据报传送时进行了分片,IP首部的"总长度"字段不是指未分片前的数据报长度,而是指分片后每片的首部长度与数据长度的总和。
也就是说IP数据报的长度一定不能超过数据链路层的最大传送单元 MTU,即下层帧的数据域的大小。通常以太网的MTU为1500B,PPP的MTU为296B,FDDI的MTU为4352B,令牌环的MTU为4464B.下面的两个图说明了IP的封装与分片。
图 1-83 IP数据报的分片与封装
2.Internet路由协议
众所周知,Internet是由多个网络互联在一起的网络,当数据包在这样一个复杂的网络上传输时,会遇到很多"十字路口",到底该向那条路由上走,必须有一个类似"交警"的部件来完成这一功能。在Internet上这一部件就是路由器。而路由器又是依靠运行路由协议来完成其功能的。换句话说,路由器上的路由表是根据路由协议生成的。路由协议的核心就是路由算法。
由于Internet规模太大,所以常把它划分成许多较小的自治系统(AS,autonomous system)。通常把自治系统内部的路由协议称为内部网关协议,自治系统之间的协议称为外部网关协议。常见的内部网关协议有RIP协议和OSPF协议;外部网关协议有BGP协议。
(1)路由信息协议RIP
RIP 是一种分布式的基于距离向量的路由选择协议。该协议定义距离就是经过的路由器的数目,距离最短的路由就是最好的路由。它允许一条路径最多只能包含 15个路由器(限制了网络的规模)。距离的最大值为16 时即为不可达。所以RIP 不能在两个网络之间同时使用多条路由来进行负载均衡。
RIP协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录,并依此来形成自己的路由表。且按固定时间(一般为30秒)和相邻路由器交换路由表。
RIP 协议属于应用层协议,它使用运输层的用户数据报 UDP进行传送。RIP协议的格式如图1-84所示。
图 1-84 RIP协议的格式及它和UDP、IP协议的关系
RIP协议中的命令字段指出报文的意义。地址类别字段指出所使用的地址协议,当使用IP地址时,该字段的值为2.路由标记字段应该写入自治系统号。一个RIP报文最大长度为504字节,这是因为一个RIP报文的路由部分最多可包含25个路由信息。当超过504字节的最大长度时,就应该再用一个RIP报文来传送。
RIP的特点是:"好消息传播得快,坏消息传播的慢".它的意思是如果路由器发现了一个更短的路由,这个消息可以很快得以传播;但如果网络出现了故障,这样的消息会传播的很慢。
(2) 开放最短路径优先协议OSPF
OSPF协议是分布式的链路状态路由协议。链路在这里代表该路由器和哪些路由器是相邻的,即通过一个网络是可以连通的;链路状态说明了该通路的连通状态以及距离、时延、带宽等参数。在该协议中,只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送路由信息。所发送的信息是与本路由器相邻的所有路由器的链路状态。为了保存这些链路状态信息,每个路由器都建立有一个链路状态数据库,因为路由器交换信息时使用的是洪泛法,所以每个路由器都存有全网的链路状态信息,也就是说每个路由器都知道整个网络的连通情况和拓扑结构。这样每个路由器都可以根据链路状态数据库的信息来构造自己的路由表。
为了及时了解链路的状态情况,每个路由器需要定期(10秒)向邻居路由器发送Hello分组。如果40秒钟都还没有收到邻居的Hello信息,则认为该邻居是不连通的,应该立即修改链路状态数据库中所对应的记录,并要重新计算路由表。
除了Hello问候分组外,OSPF协议还有四种分组:链路状态更新分组、链路状态确认分组、数据库描述分组和链路状态请求分组。通过这四种分组达到全网链路数据库的同步。链路状态更新分组是正常情况下,当链路状态发生变化时使用洪泛法所发送的分组;链路状态确认分组是对链路状态更新分组的确认;链路状态描述分组是当路由器启动一条新的通路时,向邻居路由器所发送的分组;链路状态请求分组是在与邻居路由器交换了数据库描述分组后,还需要其他自己缺少的路由信息时所使用的分组。
OSPF协议格式如图1-85所示。
图 1-85 OSPF协议的格式及它与IP协议的关系
OSPF协议使用洪泛法向网络中所有路由器发送链路状态信息为了减小洪泛范围,OSPF协议对网络进行了区域划分。这在OSPF协议首部的区域标识符字段体现了出来。
(3) 外部网关协议BGP
BGP 是不同自治系统的路由器之间交换路由信息的协议。 由于Internet的规模太大,使得自治系统之间路由选择非常困难。 另外,对于自治系统之间的路由选择,要寻找最佳路由很不现实的。 所以 BGP 只是尽力寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而不像内部网关协议一样要寻找一条最佳路由。
每一个自治系统的管理员要选择至少一个路由器作为该自治系统的"BGP 发言人" .BGP 发言人往往就是 BGP 边界路由器,但也可以不是 BGP 边界路由器。通常,两个 BGP 发言人都是通过一个共享网络连接在一起的。
当一个 BGP 发言人与其他自治系统中的 BGP 发言人交换路由信息时,首先要建立 TCP 连接,然后在此连接上交换 BGP 报文以建立 BGP 会话(session),利用 BGP 会话交换路由信息。
在BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销方面都有好处。
BGP 发言人互相交换网络可达性的信息后,各 BGP 发言人就可找出到达各自治系统的比较好的路由。
BGP-4 共使用四种报文:
打开(Open)报文,用来与相邻的另一个BGP发言人建立关系。
更新(Update)报文,用来发送某一路由的信息,以及列出要撤消的多条路由。
保活(Keepalive)报文,用来确认打开报文和周期性地证实邻站关系。
通知(Notificaton)报文,用来发送检测到的差错。
BGP协议的格式及它与TCP和IP协议的关系如图1-86所示。
图 1-86 BGP协议的格式及它与TCP和IP协议的关系
(4)组播协议PIM与MOSPF
IP组播路由协议根据网络中组播组成员的分布可以分为两种基本类型:第一种被称作密集模式的组播路由协议。第二种被称为稀疏模式的组播路由协议。
① PIM(Protocol-Independent Multicast)
PIM是一种组播传输协议,能在现存IP网上传输组播数据。PIM是一种独立于路由协议的组播协议,可以工作在两种模式:密集模式(PIM-DM)和疏松模式(PIM-SM)。在PIM密集模式下,报文分组缺省向所有端口转发,直到发生裁减和切除。在密集模式下假设所有端口上的设备都是组播成员,可能使用组播包。疏松模式与密集模式相反,只向有请求的端口发送组播数据。
PIM-SM (Protocol Independent Multicast Sparse Mode)
PIM-SM围绕一个被称为集中点(RP)的路由器构建组播分布树。RP是所有叶路由器都知道的点。但某个叶路由器直接相连的网络中如果有主机希望加入某RP所代表的组播组时,该叶路由器沿着到达RP的最短路径向RP发出加入消息,所经过的路径构成基于RP的单向生成树的一个新枝。一旦形成新枝,叶路由器将获得该组播组源的信息。当某个源发出的信息速率超过某个门限,则叶路由器可以切换至基于源的最短路径树上去,当然叶路由器要向RP方向发出剪枝消息。
PIM-SM协议最初先为组播组构建一个组共享树。这个树由连接到集中点的发送者和接收者共同构建,就像CBT协议围绕着核心路由器构建的共享树一样。共享树建立以后,一个接受者(实际上是最接近这个接收者的路由器)可以选择通过最短路径树改变到发送源的连接。这个操作过程是通过向发送源发送一个PIM加入请求完成的。一旦从发送源到接收者的最短路径建立了,通过RP的外部分枝就被修剪掉了。PIM-SM结构同时支持共享树和最短路径树这两种分布树。
PIM-DM(Protocol-Independent Multicast-Dense Mode)
PIM-DM协议使用了反向路径组播机制来构建分布树。PIM-DM的运作方式是当来源端送出组播信息时,它会使用先扩散再截枝的方式来建立分散树,路由器某个接收端口接收到的组播数据包被发送到所有下行接口。当末端路由器收到这个组播消息后,如果该路由器没有属于这个群组的成员,这个路由器就会向上游发出截枝的消息,而上游路由器收到这个消息时,如果该路由器也没有属于这个群组的成员,那么这个路由器又会向上游传送;反之如果该路由器有属于该群组的成员,那么这个截枝的讯息就不会再往上游传送,而这个路由器就不会再把组播的资料送到这个路径上面去了。
② MOSPF(Multicast Open Shortest Path First)
MOSPF是为单播路由组播使用设计的,属于密集模式的组播路由协议。MOSPF依赖于OSPF作为单播路由协议,在一个OSPF/MOSPF网络中每个路由器都维持一个最新的全网络拓扑结构图。这个"链路状态"信息被用来构建组播分布树。每个MOSPF路由器都通过IGMP协议周期性的收集组播组成员关系信息。这些信息和这些链路状态信息被发送到其路由域中的所有其他路由器。路由器将根据它们从临近路由器接收到的信息更新其内部连接状态信息。由于每个路由器都清楚整个网络的拓扑结构,所以能够独立地计算出一个最小开销扩展树,将组播发送源和组播组成员分别作为树的根和叶。这个树就是用来将组播流从发送源发送到组播组成员的路径。
3.地址解析协议ARP与反向地址解析协议RARP
网络中的一个机器既有逻辑地址也有物理地址。逻辑地址是为了管理方便而设置的,就像一个学生的学号,在小学有一个学号,在初中、高中和大学也各有不同的学号。而物理地址就像一个人的姓名是与生俱来的,对一个机器来说,如果不换网卡那么它永远就是网卡上那个地址。逻辑地址是网络层的协议数据单元使用的地址,物理地址是数据链路层的协议数据单元MAC帧使用的地址。
(1) ARP协议
在通常情况下,当我们访问一个机器的时候一定可以知道它的逻辑地址,而物理地址就不一定知道。如果不知道物理地址那么就不能把网络层的数据包封装成MAC帧,完不成通信。ARP协议正是为了解决这个问题而设置的。
在每台主机上,ARP协议都设置有一个IP地址和硬件地址对应关系的高速缓存。当网络层的数据报要封装成MAC帧时,首先在高速缓存中查看有无该数据报首部的目的地址所对应的硬件地址,若有,则将该硬件地址写入MAC帧的目的地址中,完成数据报的封装。若无,ARP协议则在本局域网上广播发出一个ARP请求分组,格式如图1-87所示。在ARP请求分组中,发送方的IP地址和发送方硬件地址,以及目标IP地址都是应该写入已知的数据,要寻找的目标硬件地址写入全0.当该请求分组到达每一个机器上时,每一台机器都要拿自己的IP地址和请求分组中的目标IP地址进行比较,如果不同则不做任何动作;若相同则发送一个ARP相应分组给请求方。ARP相应分组的格式同样还是和图1-87一样。在相应分组中发送方写明了自己的硬件地址。当这一通信过程完成时,通信双方都要对自己的ARP高速缓存进行修改,添加上一条记录。
ARP协议的数据格式如图1-87所示。
图1-87 ARP报文的格式
硬件类型:发送方想知道的硬件接口类型,以太网的值位1.
协议类型:发送方提供的高层协议地址类型,IP地址为080616.
操作:ARP请求(1), ARP响应(2), RARP请求(3), RARP响应(4)。
协议长度:高层协议地址长度。
发送方MAC地址:发送方硬件地址。
目标MAC地址:接收方硬件地址。
(2) RARP协议
RARP协议往往用于无盘工作站环境。因为主机没有外存,本地不能存放IP地址,所以需要一个RARP服务器来存放IP地址和硬件地址的对应关系。当一台主机想要上Internet网时,它需要用自己网卡上的硬件地址到RARP服务器上取回自己的IP地址。RARP协议的格式和ARP协议的格式一样。
4.Internet控制报文协议ICMP
ICMP协议允许路由器报告差错情况和提供有关异常情况的报告。当数据报不能正确到达目的站点,或当路由器没有足够的缓存空间,或当路由器能够向主机提供更短的路由时,ICMP协议会及时将这些信息发送出去,就像网上的"交通警察"及时解决交通中的问题和"事故",保证交通快速、顺畅。
ICMP报文有ICMP差错报文和ICMP询问报文两种。
ICMP报文格式及它与IP的关系如图1-88所示。
IP数据报
图1-88 ICMP报文格式及它与IP的关系
5.IPv6协议
(1)IPv6协议的特点
更大的地址空间。IPv6 将地址从 IPv4 的 32 bit 增大到了 128 bit,
扩展的地址层次结构。
灵活的首部格式。
改进的选项。
增强安全性。
对QoS支持
(2)IPv6地址
IPv6 将 128 bit 地址空间分为两大部分。第一部分是可变长度的类型前缀,它定义了地址的目的。第二部分是地址的其余部分,其长度也是可变的。
图1-89 IPv6地址格式
每个 16 bit 的值用十六进制值表示,各值之间用冒号分隔。
IPv6 数据报的目的地址可以是以下三种基本类型地址之一:
单播(unicast) 单播就是传统的点对点通信。
多播(multicast) 多播是一点对多点的通信。
任播(anycast) 这是 IPv6 增加的一种类型。任播的目的站是一组计算机,但数据报在交付时只交付给其中的一个,通常是距离最近的一个。
前缀为 0000 0000 是保留一小部分地址与 IPv4 兼容的,这是因为必须要考虑到在比较长的时期 IPv 4和 IPv6 将会同时存在,而有的结点不支持 IPv6.
IPv6 扩展了地址的分级概念,使用以下三个等级:
第一级(顶级),指明全球都知道的公共拓扑。
第二级(地点级),指明单个的地点。
第三级,指明单个的网络接口。
(3)IPv6包格式
图1-90 IPv6数据报格式
① 对IPv6基本报头各域的说明如下:
版本(version): 4 bit,它指明了协议的版本,对 IPv6 该字段总是 6.
流量类型(Traffic Class):8 bit,这是为了区分不同的 IPv6 数据报的类别或优先级。
流标签(Flow Label):20位,用于源节点标识IPv6路由器需要特殊处理的包序列
载荷长度(Payload Length):16 bit,它指明 IPv6 数据报除基本首部以外的字节数(所有扩展首部都算在有效载荷之内),其最大值是 64 KB.
下一个报头(Next Head):8 bit.它相当于 IPv4 的协议字段或可选字段。
跳数限制(Hop Limit):8 bit.源站在数据报发出时即设定跳数限制。路由器在转发数据报时将跳数限制字段中的值减1.当跳数限制的值为零时,就要将此数据报丢弃。
源地址(Source Address):128位,指明生成数据包的主机的IPv6地址。
目的地址(Destination Address):128位,指明数据包的最终要到达的目的主机的IPv6地址。
② IPv6 的扩展首部
IPv6 将原来 IPv4 首部中选项的功能都放在扩展首部中,并将扩展首部留给路径两端的源站和目的站的主机来处理。数据报途中经过的路由器都不处理这些扩展首部(只有一个首部例外,即逐跳选项扩展首部)。这样就大大提高了路由器的处理效率。
在[RFC 2460]中定义了六种扩展首部:
逐跳选项:此扩展头必须紧跟在IPv6基本报头之后,它包含所经路径上的每一个节点都必须检查的选项数据。由于它需要在每个中间路由器都进行处理,所以只有在绝对必要的时候才出现。
路由选择:此扩展头指明数据包在到达目的地途中将经过地各节点的地址列表。
分片:当IPv6源地址发送的数据包比到达目的地址所经过的路径上的最小MTU还要大时,这个数据包就要被分成几段分别发送,这时就要用到分片头。
鉴别:鉴别头的功能是实现了数据的完整性何对数据来源的认证。
封装安全有效载荷:封装安全有效载荷头提供数据加密功能,实现端到端的加密,提供无连接的完整性和防重发服务。封装安全载荷头可以单独使用,也可以在使用隧道模式时嵌套使用。
目的站选项:目的站选项头中携带仅需要有最终目的节点检验的可选信息。它要在IPv6目的地址域所列的第一个目的主机上处理,也要在路由头所列的后续目的主机上处理。
(4)IPv6地址自动配置
IPv6中地址自动配置有两种方式:有状态地址自动配置和无状态自动配置,当站点并不是特别关心主机所使用的精确地址时,只要它们是唯一的,并且是可路由的,就能使用无状态方式;当站点严格控制地址分配时,就使用有状态方式。
① 有状态自动配置
在这种模式下,主机可以从服务器获得接口地址,也可以从服务器上获得配置信息和参数。服务器中维护着一个数据库,其中记录着主机和地址分配的列表。比较常用的是DHCPv6 (Dynamic Host Configuration Protocol for IPv6)协议,即支持IPv6的动态主机配置协议。它允许DHCPv6服务器把诸如IPv6网络地址等信息传给IPv6节点。DHCPv6服务器与客户端使用UDP来交换DHCPv6报文。服务器和中继代理使用UDP端口547来监听DHCPv6报文;客户端使用UDP端口546来监听报文
② 无状态地址自动配置
无状态自动配置要求本地链路支持组播。而且网络接口能够发送和接收组播包。采用这种方式可以为任意主机配置一个IPv6地址,这个地址内嵌一个以太网地址,由于以太网地址全球唯一,因此获得的IPv6地址也是唯一的。
具体过程如下:
首先,进行自动配置的节点必须确定自己的链路本地地址;
然后,必须验证该链路本地地址在链路上的唯一性;
最后,节点必须确定需要配置的信息。该信息可能是节点的IP地址,或者是其他配置信息,或者两者皆有。具体地说,在无状态自动配置过程中,主机首先通过将它的网卡MAC地址附加在链路本地地址前缀1111111010之后,产生一个链路本地单播地址(IEEE已经将网卡MAC地址由48位改为了64位。如果主机采用的网卡的MAC地址依然是48位,那么IPv6网卡驱动程序会根据IEEE的一个公式将48位MAC地址转换为64位MAC地址)。接着主机向该地址发出一个邻居发现请求(Neighbor Discovery Request),以验证地址的唯一性。如果请求没有得到响应,则表明主机自我配置的链路本地单播地址是唯一的。否则,主机将使用一个随机产生的接口ID组成一个新的链路本地单播地址。然后,以该地址为源地址,主机向本地链路中所有路由器多点传送一个路由器请求 (Router Solicitation)来请求配置信息,路由器以一个包含一个可聚集全球单播地址前缀和其它相关配置信息的路由器宣告(Router Advertisement)作为响应。主机用它从路由器得到的全球地址前缀加上自己的接口ID,自动配置全球地址,然后就可以与Internet中的其它主机通信了。
如果本地网络孤立于其他网络,则节点必须寻找配置服务器来完成其配置;否则,节点必须侦听路由器宣告报文。这些报文周期性地发往所有主机的组播地址,以指明诸如网络地址和子网地址等配置信息。节点可以等待路由器宣告,也可以通过发送组播请求给所有路由器的组播地址来请求路由器发送宣告。一旦收到路由器的响应,节点就可以使用响应的信息来完成自动配置。
(5)邻节点发现过程
邻居发现协议使用一系列的IPv6控制信息报文来实现相邻节点的信息交互管理,并在一个子网中保持网络层地址和链路层地址之间的映射。邻居发现协议中定义了5种类型的信息:路由器宣告、路由器请求、路由重定向、邻居请求和邻居宣告。
① 路由器发现:即帮助主机来识别本地路由器。
② 前缀发现:节点使用此机制来确定指明链路本地地址的地址前缀以及必须发送给路由器转发的地址前缀。
③ 参数发现:帮助节点确定诸如本地链路MTU之类的信息。
④ 地址自动配置:用于IPv6节点自动配置。
⑤ 地址解析:替代了ARP和RARP,帮助节点从目的IP地址中确定本地节点(即邻居)的链路层地址。
⑥ 下一跳确定:可用于确定包的下一个目的地,即可确定包的目的地是否在本地链路上。如果在本地链路,下一跳就是目的地;否则,包需要选路,下一跳就是路由器,邻居发现可用于确定应使用的路由器。
⑦ 邻居不可达检测:帮助节点确定邻居(目的节点或路由器)是否可达。
⑧ 重复地址检测:帮助节点确定它想使用的地址在本地链路上是否已被占用。
⑨ 重定向:有时节点选择的转发路由器对于待转发的包而言并非最佳。这种情况下,该转发路由器可以对节点进行重定向,使它将包发送给更佳的路由器。
6.IPv4向IPv6的过渡
在IPv4向IPv6过渡的时,只能采用逐步演进的办法,整个过渡需要一个比较漫长的过程。在过渡期间,由于IPv4和IPv6在很长一段时期内会共存,因此很有必要解决IPv4和IPv6之间相互通信的问题。
目前IPv4/IPv6过渡技术主要有3种方案:隧道技术、双协议栈技术和地址协议转换(NAT-PT )。
(1)双协议栈
双协议栈(dual stack)是指在完全过渡到 IPv6 之前,使一部分主机(或路由器)装有IPv4 和IPv6两个协议栈。
对于主机而言,双协议栈是指其可以根据需要来对上层协议所产生的数据进行IPv4封装或者IPv6封装。
对于路由器而言,分别支持独立的IPv6和IPv4路由协议,IPv4和IPv6路由信息按照各自的路由协议进行计算,维护两张不同的路由表。
图1-91 使用双协议栈从 IPv4 到 IPv6 过渡
(2)隧道技术
隧道策略是IPv4/IPv6过渡中经常使用到的一种机制。隧道技术的工作机理就在IPv6网络与IPv4网络间的隧道入口处,路由器将IPv6的数据分组封装入IPv4中,IPv4分组的源地址和目的地址分别是隧道入口和出口的IPv4地址。在隧道的出口处再将IPv6分组取出转发给目的节点。隧道技术巧妙地利用了现有的IPv4网络,为分离的IPv6子网(或主机)提供了有效的通信手段。隧道技术能够充分利用现有的网络投资,因此在过渡初期是一种简单方便的选择。但是,在隧道的入口处会出现负载协议数据包的拆分,在隧道出口处会出现负载协议数据包的重组。这就增加了隧道出入口的实现复杂度,不利于大规模的应用。并且隧道技术只能够实现 IPv6与IPv6之间的通信,不能够解决IPv6和IPv4之间的互通问题。
图1-92 使用隧道技术从 IPv4 到 IPv6 过渡
(3)NAT-PT
NAT-PT(网络地址转换-协议转换)包括两个组成部分:网络地址转换协议和协议转换。其中地址转化是指通过使用NAT网关将一种IP网络的地址转换为另一种IP网络的地址,它允许内部网络使用一组在公网中从不使用的保留地址。在使用这项技术是可以将将IPv6网视为一个独立而封闭的局域网,它需要使用一个地址翻译器进行地址翻译。
协议转换是指根据IPv6和IPv4之间的差异对数据包的首部做相应的修改以符合对方网络的格式要求,并且由于网络层协议的改变要对上层的TCP, UDP,ICMP等数据包做相应的修改。将网络地址转换机制与协议转换机制相结合而产生的NAT-PT可以通过对协议、地址的转换实现IPv6和IPv4之间的相互通信。
NAT-PT的优点是所有的地址转换和协议转换都在NAT-PT服务器上完成,而子网内部的主机不需要做任何改动,就可以实现两个不同子网之间的相互访问。同样由于所有的IP数据包都要在NAT-PT服务器上做数据包的修改,使得它们常常会破坏端到端服务(如端到端的IP安全),这一点和IPv4中的NAT类似。同时,翻译器还会造成网络潜在的单故障点。同时NAT-PT实现起来比较复杂,牵涉到如何简单快速地实现网络地址和端口分配和数据包的快速修改。由于有大量的数据包在NAT-PT服务器上处理,因此NAT-PT服务器的处理能力成为两个网络之间通信的瓶颈。
7.移动IP协议
(1)移动IP技术的功能实体
移动IP定义了三个功能实体:移动节点、归属代理和外区代理。
① 移动节点MN(Mobile Node):当节点从一条链路切换到另一条链路上时仍能保持所有正在进行通信的移动主机。它有两个IP地址:一个是归属地址(Home address),用来标识TCP连接的永久地址;另一个是转交地址(CoA,Care of address),是当移动节点漫游到其他子网时所获得的供IP包选路使用的临时地址。转交地址可以由外地代理提供,称为代理转交地址(agent CoA),也可以由外地网络的DHCP服务器分配,称为配置转交地址(CCoA, Collocated CoA)。两种地址的不同在于后者是一个"真实"的转交地址,而前者是代理的某个接口地址。
② 归属代理HA(Home Agent):移动节点本地网络上的路由器。它有一个端口与移动节点家乡链路相连,同时保存移动节点的位置信息。当移动节点离开归属网络时,它能够将发往移动节点的数据包传给移动节点。归属代理广播对移动节点家乡地址的可达性,从而吸引那些送往移动节点归属地址的IP数据包,接着它将解析送往移动节点的归属地址的数据包,并将它们通过隧道技术传送到移动节点的转交地址上。
③ 外区代理FA(Foreign Agent):移动节点当前连接到的外地网络上的路由器。其作用是为移动节点提供路由服务,并且对经归属代理封装后发给移动节点的数据包进行解封装,然后转发给移动节点。
(2)移动IP技术的工作机制
移动IP的工作过程如下:
① 归属代理和外区代理周期性发送组播或广播报文,以此向它们所在的网络中的节点通告它们的存在。
② 移动节点收到广播报文后,检查报文的内容来判断它所连接的是归属网络还是外地网络。当连在归属网络上时,采用传统的IP通信方式而不使用移动IP的功能。如果是从外地网络重新返回的,则向本地代理发出取消注册的功能消息,声明自己回到了本地网。
③ 当移动节点移动到外区网络时,它可以从当前网络的外区代理发出的代理广播消息中获得转交地址,或者通过DHCP服务器配置获得。
④ 移动节点通过外区代理向归属代理注册转交地址,注册可以通过移动IP中定义注册消息来完成。
⑤ 归属代理对移动节点的注册请求进行鉴权、认证。归属代理通过发送注册成功消息到移动IP的转交地址来标志注册的完成。
⑥ 注册完毕后,所有发给移动主机的数据包被本地代理截获,经本地代理封装后通过隧道发到外地网络的外地代理FA(代理转交地址)或移动主机自身(配置转交地址)。在采用代理转交地址的情况下,外地代理再把数据包转发给移动主机。此时,数据包在不同子网间传送成功。
⑦ 移动节点发往与它通信的主机的数据会直接经过外地代理转发到相应主机。这就形成了一个"三角路由".
(3)移动IP技术中的几项关键技术
移动IP与传统IP协议相比,主要使用了下列几个关键技术:
① 隧道技术
隧道技术是归属代理把原先发往移动节点的数据包,封装在发向转交地址的数据包中,并在外区代理中解包,然后传向移动节点的当前位置。通过该技术,避免了从归属链路到外部链路上所有路由器的路由信息改动。当其他节点向移动节点发送数据包时,归属代理截获该数据包,使用隧道技术把数据包向外区代理发送。这是通过IP in IP封装来实现的。如图1-93所示。
图1-93 隧道技术
② 代理搜索
代理搜索通过两种消息来实现:代理请求消息和代理广播消息。代理搜索基于ICMP协议之上。代理请求消息是在移动节点没有耐心等待代理广播消息时由移动节点发送的。它的目的是为了让链路上的所有代理发送一个广播代理消息,该消息比较简单。代理广播消息用来实现代理搜索的所有功能。
③ 注册
注册发生在代理搜索之后,是移动主机把搜索获得的转交地址及时通知到隧道入口(归属代理)的方法。它在以下三种情况下都会发生:1)当移动主机切换网络时;2)当移动主机发现所连接的外地代理重启时;3)当移动主机的现有注册到期时。
注册过程是移动主机和归属代理间一次注册请求和注册应答的交互。注册的实现有两种方式一是移动主机用外地代理转交地址注册,如图1-93所示。
图1-93 移动主机使用外地代理转交地址的注册过程
此时注册的实现过程为移动主机根据搜索所得消息产生注册请求信息,并发送给外地代理,等待注册应答→外地代理先检查收到的请求消息,没问题就记下发回应答所要的信息,再将请求中继给归属代理→归属代理检查该请求,若请求无效,则发送表注册失败的应答;若有效,则更新本地地址、转交地址对应表中的绑定表项,做对应于请求的操作,最后向外地代理发送表注册成功的应答→外地代理对注册应答进行有效性检查。若应答无效就产生一个含Code域的应答送给移动主机;应答有效就更新来访移动主机的列表,将应答中继给移动主机→移动主机先检查应答的有效性,若有效,再检查注册被代理接受与否的Code域,若被拒绝则修正错误并尝试重新注册,若被接受就调整路由表以适应当前网络,停止重发注册请求。
二是移动主机用配置转交地址注册,如图1-94所示。
图1-94 移动主机使用配置转交地址的注册过程
此时注册过程相对简单,不需要通过外地代理,具体过程为移动主机向归属代理发送注册请求消息→归属代理处理注册请求并发回注册应答→移动节点处理注册应答。
8.QoS支持
(1)QoS概述
服务质量 QoS 是服务性能的总效果,此效果决定了一个用户对服务的满意程度。因此在最简单的意义上,有服务质量的服务就是能够满足用户的应用需求的服务。
在Internet上为用户提供高质量的QoS必须解决以下几个问题:
QoS的分类与定义:对QoS进行分类和定义的目的是使网络可以根据不同类型的QoS进行管理和分配资源。例如,给实时服务分配较大的带宽和较高的CPU处理时间等,另一方面,对QoS进行分类定义也方便用户根据不同的应用提出QoS需求。
准入控制和协商:根据网络中资源的使用情况,允许用户进入网络进行多媒体信息传输协商其QoS.
资源预约:为了给用户提供满意的QoS,必须对端系统、路由器以及传输带宽等相应的资源进行预约,以确保这些资源不被其他应用所抢用。
资源调度与管理:资源进行预约之后,是否能得到这些资源,还依赖于相应的资源调度与管理系统。
(2)QoS的若干性能指标
服务质量可用若干基本的性能指标来描述,包括可用性、差错率、响应时间、吞吐量、分组丢失率、连接建立时间、故障检测和改正时间等。
(3)由QoS控制来实现QoS保证的策略
IP网络如何提供服务质量QoS支持这一问题已经成为业界关注的焦点。对于由QoS控制来实现QoS保证,国际上不同组织和团体提出了不同的控制机制和策略,比较著名的有:
ISO/OSI提出了基于ODP分布式环境的QoS控制,至今仍只停留在给出了用户层的QoS参数说明和集成接口阶段,具体实现QoS的控制策略并未提出;
ATM论坛提出了QoS控制的策略和实现,ATM控制是"连接预定(connection and reservation)"型,它的核心内容是在服务建立之前,通过接纳控制和资源预留来提供服务的QoS保证,而在服务交互的过程中,用户进程和网络要严格按照约定的QoS实现服务QoS保证;
IETF组织也已经提出了多种服务模型和机制来满足对QoS的需求,其中比较典型的有:RFC2115. RFC2117以及1998、1999年提出的RFC26xx系列中的综合业务模型、差分业务模型、多协议标签MPLS技术、流量工程和QoS路由等,均用于解决Internet网络的QoS控制和管理。
(4) 主要的QoS技术
当前主要的QoS技术有:集成服务(Integrated Services, IntServ)/资源预留协议(RSVP),区分业务(Differentiated Services, DiffServ),多协议标记交换(Multi-Protocol Label Switching,MPLS,流量工程(Traffic Engineering),QoS路由(QoS Routing, QoSR)等。
① 集成服务(IntServ)
IntServ其基本思想是一个应用要想获得某种服务质量,必须在向网络传送流量之前请求网络为其预留所需资源。因此从某种意义上来说,IntServ实际上是提供了一种类似于电路级的服务质量。
在结构层次上,IntServ服务模型主要由以下四部分构成:
资源预留协议RSVP,它是IntServ的信令协议,负责逐点(hop-by-hop)地建立或者拆除每个流的资源预留软状态(soft state),即建立或拆除数据传输路径。
接纳控制,用来决定是否同意对某一资源的请求,其根据是链路和网络节点的资源使用情况以及QoS请求的具体要求。
分类器,用来将进入路由器的分组进行分类,并根据分类的结果将不同类别的分组分别放入不同类别的队列。IntServ常用的分类器是多域分类器,当路由器接收到数据包时,它根据数据包头部的多个域(如源IP地址,目的IP地址,源端口号,目的端口号,传输协议),将数据包放入相应的队列中。
调度器(packet scheduler),根据不同的策略对各个队列中的数据包进行调度转发。
使用RSVP信令建立数据发送路径以及为业务流预留资源的过程可分为下面几步:
第一步:数据发送的源端确定发送数据流所需的带宽、延迟和延迟抖动等指标(即TSPEC参数),并将其包含在在PATH控制消息中发送给接收端。
第二步:各RSVP路由器解释PA'I'R消息,保存上一中继的IP地址,将自己的IP地址作为前一中继段地址,并沿应用程序数据使用的路由发送更新后的消息。
第三步:接收端收到PATH消息后,它沿着与PATH消息中获取的源路径相反的方向向上一中继段路由器发送一个RESV消息。该RESV消息包含为数据流进行资源预留所需要描述的流量和性能期望等QoS信息。
第四步:RSVP路由器接收到RESV消息时,它通过接纳控制来确定是否可以满足这些RESV请求。如果可以,就合并收到的预留请求,进行带宽和缓冲区空间的预留,并且存储一些与数据流相关的特定信息,并将RESV消息转发给上一中继段路由器请求预留。如果不能,就拒绝预留,同时返给接收端一个错误信息。
第五步:如果源端收到RESV消息,则表明数据流的资源预留己经成功,可发开始向接收端发送数据。
第六步:当数据流发送完毕,路由器可以释放先前设置的预留资源。
IntServ模型的优点:
提供绝对保证的QoS,因为RSVP在从源端到目地端的每个路由器上运行,能监视每个数据流,以防资源浪费。
在源端与目的地之间,RSVI'可以用现有的路由协议决定数据流的通路,RSVP使用IP包承载,通过周期性重传路径和RESV消息,能对网络拓扑的变化做出反应。
可支持多播流,RSVP协议能让路径消息识别多播流的所有端点,并将路径消息发送给它们,还能把来自每个接收端的RESV消息合并到一个网络请求点上,让一个多播流能在分开的连接上发送。
IntServ模型的缺点:
状态信息的数量与流的数目成正比。因此在大型网络中,按每个流进行资源预留会产生很大的开销。
IntServ 体系结构复杂。若要得到有保证的服务,所有的路由器都必须装有 RSVP、接纳控制、分类器和调度器。
综合服务 IntServ 所定义的服务质量等级数量太少,不够灵活。
② 区分服务(DiffServ)
区分服务模型(DiffServ)的基本思想是根据预先确定的规则对数据流进行分类,将具有相同QoS需求的不同业务的数据流聚集成一个数据流集合进行统一处理,以便将多种应用数据流综合为有限的几种数据流等级,不同的数据流集合获得不同的优先级处理。DiffServ模型是为克服IntServ模型的扩展性问题,从IntServ模型发展而来的一种相对简单的、较粗糙的提供区别服务等级(CoS)的模型。它采用了IETF的基于RSVP的服务分类标准,但抛弃了分组流沿路节点上的资源预留。
DiffServ 将IPv4 协议中原有的服务类型字段和 IPv6 的通信量类字段定义为区分服务字段 DS.该字节中的前6个比特称为区分服务编码点,用于QoS的特殊定义,包括"等级"和"丢弃优先级".另外,DiffServ将整个网络分成若干个DS域,一个DiffServ域由一系列支持DiffServ机制的节点构成。在DiffServ域中,主要的成员有边缘路由器、核心路由器和资源控制器。
当数据流进入DiffServ网络时,边缘路由器通过标识该字段,将IP包分为不同的服务类别,而网络中的其它路由器在收到该IP包时,则根据该字段所标识的服务类别将其放入不同的队列,并由作用于输出队列的流量管理机制,按事先设定的带宽、缓冲处理控制每个队列,即给予不同的每一跳行为(PHB,PerHopBehaivor )。
总之,DiffServ根据每个IP包头中的DS字段,可以将其归类到与其具有相同QoS需求的一个数据集合中去,这样,众多的数据流被归类成了几个为数不多的具有相同QoS需求的数据集合进行传送,然后根据与每个数据集合相对应的处理方式对这些数据集合进行处理。这种模型简化了数据流的处理过程,减少了路由器中信息存储的负担;同时也免去了IntServ/RSVP模型中在网络内部建立路由通道的操作,从而减少了主机之间简短对话的负荷,提高了网络的响应性能。
具体工作流程如下:
首先DiffServ域的边缘路由器对来自用户或其它网络的非DiffServ的业务流进行分类,为每个IP包填入新的DSCP字段;同时,建立起并开始应用与每一个业务相对应的服务水平协定(SLA)和PHB.而对来自用户或其它网络的DiffServ业务流,则依据IP包中的DSCP字段选择特定的PHB.
然后开始业务转发,边缘路由器的策略单元将根据SLA对收到的业务流进行测量,监视用户是否遵守SLA,并将测量结果输入业务流策略单元,对业务流进行整形、丢弃、标记(DSCP的改写)等工作。这一过程称为业务量调整(Traffic Conditioning)或业务量策略(Traffic Policing)。
边缘路由器对DSCP字段进行检查,依据DSCP为业务流选择特定的PHB,根据PHB所指定的排队策略,将属于不同业务类别的业务流导入不同的队列加以处理,并按事先设定的带宽、缓冲处理输出队列,最后按PHB所指定的丢弃策略对IP包实施必要的丢弃。
核心路由器将只依据DSCP字段为业务流选择特定的PHB,根据PHB所指定的排队策略,将属于不同业务类别的业务流导入不同的队列加以处理,并按事先设定的带宽、缓冲处理输出队列,最后按PHB所指定的丢弃策略对IP包实施必要的丢弃。
DiffServ的优点:
DiffServ最主要的优势是弱化了对信令的依赖,中间节点只需依据一定的分组标记应用各种PHB即可,无需象IntServ在每个路由器上为每个业务流保留"软状态",避免了大量的资源预留信息的传递,具有更好的可扩展性。
DiffServ不要求实现端到端的QoS保证,只要求在DS域内QoS的一致性,而在DS域之间进行一定的映射来保证不同类别业务的QoS.
DiffServ将QoS的一致性范围缩小到每个区域之中,从而降低了这种模型实现的复杂性。
DiffServ模型的绝大部分分类和整形操作只在DS域的边缘路由器上执行,大大简化了在DS域内核心路由器对传输IP包的操作。而IntServ模型需要在传输的整个路由中对每个IP包都进行相应的分类和警管操作。
DiffServ的缺点:
DiffServ不提供全网端到端的QoS保证,它所提供的QoS只是一种相对的QoS只是不同等级业务流之间的QoS好坏关系,在转发方式上仍然是采用传统IP网的逐跳转发方式。有关业务等级的具体划分、每类业务性能的量化描述、IP业务类别与ATM QoS的映射等技术细节,IETF还未给出具体的规定。
③ MPLS
MPLS (Multi-Protocol Label Switching-多协议标记交换技术)是一种利用给每个分组打上的固定标记,在开放的通信网络上用硬件对分组进行转发的高速、高效传输的新技术。这种采用硬件技术对打上标记的分组进行转发称为标记交换。另外,MPLS并不仅限于使用ATM,它可以使用多种链路层协议,如IPX,DECnet,PPP,以太网以及帧中继等,所以,这种标记交换是"多协议"的。
MPLS协议的关键是引入了标记(Label)的概念。它是一种固定长度的、短的、不包含拓扑信息、只具有局部意义的信息内容。Label短是为了易于处理,通常可以用索引直接引用。只具有局部意义是为了便于分配。
MPLS的作用:
在无连接的网络中引入连接模式从而减少了网络的复杂性。
兼容现有各种主流网络技术,能大大降低网络成本。
在提高IP业务性能的同时,能确保网络通信的服务质量和数据传输的安全性。
MPLS的基本术语:
标记交换路由器LSR
标记交换路由器LSR具有标记交换和路由选择两种功能。因为它使用标记交换功能对分组进行转发。在转发分组前它需要使用路由选择功能构造分组转发表。根据标记交换协议确定特定标记的路径,即标记交换路径LSP.而LSR是根据LSP来构造分组转发表的。
转发等价类FEC
所有需要做相同转发处理(具有同样服务类别和同样丢弃优先级)、并转发到相同下一跳的分组属于同一转发类。如:目的IP地址与某一个特定IP地址的前缀匹配的分组,所有源地址与目的地址都相同的分组,具有某种服务质量需求的分组。相同FEC的分组都指派同样的标记,所以入口结点并不是给每一个分组指派一个不同的标记。而且FEC和标记是一一对应的。
标记栈
MPLS 的一个重要功能就是可以构成标记栈。
图1-95 MPLS的标记和标记栈
MPLS 标记一旦产生就压入到标记栈中,而整个标记栈放在数据链路层首部和IP首部之间。栈是一种后进先出的数据结构。MPLS 协议规定,标记栈的栈顶(最后进入栈的标记)最靠近数据链路层首部,而栈底最靠近 IP 首部。在最简单的情况下,标记栈中只有一个标记。
MPLS 的基本工作过程:
MPLS 域中的各 LSR 使用专门的标记分配协议 LDP 交换报文,并找出标记交换路径LSP.各 LSR 根据这些路径构造出分组转发表。
分组进入到 MPLS 域时, MPLS 入口结点把分组打上标记,并按照转发表将分组转发给下一个 LSR.
以后的所有LSR都按照标记进行转发。每经过一个 LSR,要换一个新的标记。
当分组离开 MPLS 域时,MPLS 出口结点把分组的标记去除。再以后就按照一般分组的转发方法进行转发。