购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.1 TCP/IP网络协议架构

网络协议架构是一个非常复杂的架构,同时也在不断创新和演进。在研究未来网络设计体系时,需要结合现有的网络体系结构以及网络发展实践的历史经验。因此,研究者需要首先分析现有的网络设计架构,并且基于历史的角度分析当时协议设计的原则,以辩证的角度看待和分析网络协议架构的设计。不可否认的是,许多现在我们看来繁重、僵化的设计方案,在当时的网络环境和硬件设施基础上则是一种很灵活高效的设计方案。本节主要结合网络协议体系的几个核心功能和当时的网络基础环境设施,分析网络设计原因及目前存在的问题,为未来网络协议设计总结经验。

3.1.1 协议分层设计

网络分层是网络协议架构的核心理念,网络分层也使得网络更加清晰且易于演进。互联网是一个极为庞大且复杂的系统,网络需要支持大量多需求的应用、各种类型的接入端设备、异构多变的网络链路情况等。网络中的两个实体进行通信就需要一个通信协议,当该通信协议比较复杂时,通常将复杂的任务划分为简单成分,然后将这些单独协议复合起来形成协议族以实现通信的需求。最常用的复合技术就是层次方式,每一层执行每一层的功能目标,同时每一层也有各自的协议。协议分层的好处在于,各层的工作可以在一个大而复杂的系统中只关注本层的功能目标,分工清晰。同时,对于大而复杂且需要不断更新的系统,当改变某个层次中的内容后,不会影响该系统的其他层级,各层之间相对独立,易于实现和维护。分层可以将复杂的网络问题分解为许多比较小的、界线比较清晰的问题来处理和解决。这样使得复杂的计算机网络系统变得易于设计、实现和标准化。利用分层模型的体系结构,可以很方便地讨论一个大而复杂的系统的特定功能模块。

协议分层具有概念化和结构化的优点(参见RFC 3439)。目前常见的网络协议架构有OSI模型和TCP/IP模型,以及非官方的综合了OSI模型和TCP/IP模型的5层模型,网络各层代表性协议见表3-1。OSI的7层模型更加严谨并且概念清晰。但是相对而言,由于OSI中会话层和表示层的功能都较为单一,从开发的角度来讲,OSI体系较为复杂且不实用。TCP/IP体系结构把“物理层”和“数据链路层”合为一层,统称数据链路层,但是通常认为这样合并也不是很合理,因为其功能还是有一定差距。最常讨论的5层模型其实是一种非官方的模型,是结合了TCP/IP 4层模型和OSI 7层模型所得到的,它保留了OSI 7层模型中的物理层和数据链路层,同时又如TCP/IP模型一般将会话层、表示层、应用层合并为了一层。

表3-1 网络各层代表性协议

网络协议每层的功能设计并不是一成不变的,需要综合考虑效益和成本适当地进行修改。以下就是针对5层模型自顶向下阐述互联网设计时每层的功能,以及从未来网络协议的角度分析目前存在的不足。

(1)应用层

“端到端原则”是互联网核心设计原则之一,奠定了“核心网络简单,智能置于边缘”的网络基本结构。在“端到端原则”中,核心网络只提供简单和通用的传输服务,只维持最少的传输状态信息(如路由信息等),而数据可靠性、安全性、完整性等功能都留给端系统实现。应用层在网络协议架构中的作用是为应用程序提供服务,并规定应用程序中与通信相关的细节,也就是为应用提供服务,因此应用层程序主要在端系统中运行,而不在传输网络中运行。应用层需要屏蔽不同的端系统之间的差异,并且尽可能地向下复用网络基础能力。基于这样的设计,新的应用的出现并不会影响网络各层协议的部署和运营,只需要针对新应用总结提炼网络能力需求即可对新的业务进行快速部署使用。

随着终端设备的普及,应用层的种类也相应增长,同时对于网络基本的传输服务也有了多维度的需求,简单通用的网络传输已经很难满足应用层服务的需求。由于应用层无法干涉网络传输,因此自身会采取一定的手段来保障复杂的网络传输需求。例如,一些应用为了保障网络的安全性,会在自身数据中包裹大量应用层使用的安全鉴权方案,增大数据的传输量。采取这种方案的确可以在一定程度上解决应用层服务对于网络传输能力的需求,但是这样加大了网络的冗余流量,增大了网络传输的压力,不利于降低网络成本。而应用层开发相应的私有传输保障协议的方式有以下问题:首先,其缺乏足够的相关领域专家的参与和论证,无法从技术能力上保障先进性;其次,协议的复用能力差,一些协议只能支持本公司的某些应用,并且开发工程量巨大,小公司无法负担网络私有协议的开发和建设,且有重复“造轮子”的问题;最后,某些网络协议为了追求较高的服务质量,不遵守制定的网络协议,挤占其他服务的带宽。例如,某些协议在收到网络拥塞指示后并不降低自身报文的发送速率,这导致遵守拥塞控制协议的网络流量得到的网络资源越来越少,导致网络资源分配不公。未来网络协议的发展需要分析和抽象应用层的共用网络能力,基于成本效率考虑,将大量可以复用的能力下沉。

(2)传输层

传输层的主要作用是负责完整报文的进程到进程的交付,为应用进程之间提供了逻辑通信。传输层关注的是报文的完整和有序问题。网络层管理的是单个包(Packet,又称分组)从源点到终点的交付,并不考虑包之间的关系,而传输层则要确保整个报文原封不动地按序到达。其具体功能包括链接控制、流量控制、差错控制、报文的分段和组装、主机进程寻址等。传输层两个重要的协议是TCP和用户数据报协议(User Datagram Protocol,UDP)。

TCP是一种面向连接的、可靠的、基于字节流的传输层协议,详细协议细节可以参考IETF的RFC 793、RFC 1122、RFC 1323、RFC 2018以及RFC 2581。TCP是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议。TCP是一种面向连接的协议,即在一个应用进程向另一个应用进程发送数据之前,两个进程需要先建立连接,它们必须相互发送某些预备报文段,以建立确保数据传输的参数。TCP也是一种点对点的全双工服务,即数据流可以进行双向传输且只可以两台主机进行传输,不存在多播的场景。

UDP为应用程序提供了一种无须建立连接就可以发送封装的IP数据包的方法。详细协议可以参考RFC 768。UDP报文没有可靠性保证、顺序保证和流量控制字段等,可靠性较差。但是正因为UDP的控制选项较少,在数据传输过程中时延低、数据传输效率高,适合对可靠性要求不高的应用程序,或者可以保障可靠性的应用程序,如域名系统(Domain Name System,DNS)、简易文件传送协议(Trivial File Transfer Protocol,TFTP)、简单网络管理协议(Simple Network Management Protocol,SNMP)等。

目前,一些针对TCP的发展研究主要是面向拥塞控制和重传问题,在保障数据传输确定性的基础上增加了网络的传输效率。UDP的改进协议则是在保障其传输速率的基础上,增加了相应的可靠性保障机制。此外,还出现许多针对某些应用需求专门设计的新型传输协议。未来网络传输层设计需要有更高的灵活性,即从TCP、UDP的0/1需求过渡到一个渐进的需求。我们可以认识到,上层应用对于网络的可靠性及传输效率都有一定的要求,而提升应用服务体验的核心在于可以基于不同的应用平衡可靠性和传输效率。

(3)网络层

网络层主要负责把报文包从源主机传输到目的主机的端到端传输过程,网络层主要是为了解决不同网络之间的数据传输和转发问题。报文传输过程可能要跨多个网络(链路),网络层向上屏蔽了网络之间传输的路径选择等各种问题。网络层的通信单位是数据报(Datagram),每个数据报独立传输,不同的数据报可以走不同的路由,可能不按顺序到达。网络层主要涉及两个重要功能,分别为转发和路由选择。转发就是当一个数据包到达某路由器的一条输入链路时,该路由器必须将该数据包移动到输出链路。路由选择指当数据包从发送方流向接收方时,网络层必须决定这些数据包所采取的路由或路径。

网络层是网络协议架构中非常重要的一层,同时技术上也非常复杂。因为它既要解决不同网络的节点间通信的路由和协议识别问题,又要通过路由选择策略解决网络拥塞问题,尽可能提高网络通信的可靠性。网络层中涉及众多的协议,其中包括最重要的协议,也是TCP/IP的核心协议——IP。IP非常简单,仅仅提供不可靠、无连接的传送服务。IP的主要功能包括无连接数据报传输、数据报路由选择和差错控制。与IP配套使用实现其功能的还有地址解析协议(ARP)、反向地址解析协议(RARP)、互联网控制报文协议(ICMP)、互联网组管理协议(IGMP)。网络层中以IP数据包的形式来传递数据,IP数据包也包括两部分:头(Head)和数据(Data),将IP数据包放进数据帧中的数据部分,然后进行传输。

传统IP的核心理念是简单、高效、尽力而为。在IP架构的沙漏型“瘦腰”结构的支持下,上层网络应用只要支持简单的IP,即可在互联网上运行,所以大量的互联网创新应用随之而来。TCP/IP的两个理念:“everthing over IP”代表TCP/IP向上可以为多种多样的应用提供服务,承载多样化业务;“IP over everthing”代表IP在多种多样的网络构成的互联网上运行,向下适配异构网络链路。简单、开放的网络“瘦腰”结构使IP在互联网发展的前50年中取得巨大成功,使IP在互联网中起到核心的作用。

网络层被希望是尽可能的简单,但是简单并不意味着不能基于生产力的发展增加网络层能力。若是网络层一直希望自身保持极简的功能,就会导致上层应用为了实现自身的安全、确定性等需求在网络层造成大量的冗余流量,从而降低了网络的效率。例如,传统尽力而为的网络层传输模式在当今看来有所欠缺。尽力而为的设计原则更多地考虑当初网络的背景以及网络物理设施的能力,在尽力而为的模式下,即使有短暂的网络中断也可以使得上层感知不到。但是在现今的商业化网络背景下,不太需要考虑网络受攻击而导致中断的问题,同时现今网络基础设施的可靠性和带宽也大大提升。如果网络层能保障相应的网络传输质量,对于上层来讲,协议的设计会大大简化,同时对于自身来说也减少了冗余的流量,保障了网络的高效性。未来,网络层在演进发展的过程中必须考虑自身能力的扩充,在考虑成本和效率的情况下不断变得更加简单、高效。

(4)数据链路层

数据链路层位于OSI 7层网络模型的倒数第2层,在TCP/IP模型中,它与物理层合并作为模型中的最底层。但事实上,它跟物理层的传输数据单位,以及服务对象,都不尽相同。物理层的传输数据单位是原始的比特(bit),而数据链路层则会将比特组合成字节(byte),再将字节组合成帧(frame),然后进行传输。同时,二者所提供的服务和服务对象也大有不同。物理层主要针对网络中的硬件设备,而数据链路层主要针对网络中的链路接口。数据链路层主要功能是将不可靠的物理层转化为一条无差错的链路。物理层中也有许多规程或协议,但它们是用来构建物理传输线路、建立物理意义的网络通信,不是用来控制数据传输的。数据链路层主要解决的问题就是在原始的、有差错的物理传输线路的基础上,采取差错检测、差错控制与流量控制等方法,将有差错的物理线路改进成逻辑上无差错的数据链路,以便向它的上一层(网络层)提供高质量的服务。

数据链路层作用主要包括物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。数据链路层的数据单位称为帧,对物理层传输过来的比特流进行分组,一组电信号构成的数据包,就叫作“帧”。帧数据由帧头和帧数据两部分组成,帧头包括接收方物理地址(就是网卡的物理地址)和其他的网络信息,帧数据就是要传输的数据体。数据帧的一般最长为1500byte,如果数据很长,就必须分割成多个帧进行发送。

数据链路层又分为两个子层:逻辑链路控制(LLC)子层和介质访问控制(MAC)子层。MAC子层处理带冲突检测的载波监听多路访问(CSMA/CD)算法、数据出错校验、成帧等。而LLC子层定义了一些字段使得上层协议能够共享数据链路层。数据链路层协议的代表包括同步数据链路控制(SDLC)、高级数据链路控制(HDLC)、点对点协议(PPP)、生成树协议(STP)等。

(5)物理层

物理层是互联网协议体系的最底层,主要协调通过物理媒体传送比特流时所需要的各种功能,负责逐个把比特从一跳节点移动到下一跳节点。物理层在物理介质上为数据链路层提供原始比特流传输的物理连接,因此该层涉及大量的接口和传输媒体的机械和电气规约,定义了这些物理设备及接口为了实现传输必须完成的过程和功能,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。物理层关注的是在一条通信信道上传输原始比特。物理层关注的问题有接口和媒体的物理特性、比特的表示、数据率和传输速率、比特的同步、线路配置、物理拓扑和传输方式等。这里的典型问题包括用什么电子信号来表示1和0、一个比特持续多少纳秒(ns)、传输是否可以在两个方向上同时进行、初始连接如何建立、当双方传输结束之后如何撤销连接等。物理层的相关协议主要涉及机械、电子和时序接口,以及物理层之下的物理传输介质等,其代表性协议包括IEEE 802.3、EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45等。

物理层的能力提升会促使上层网络协议的改变,同时上层网络协议的演进也必须基于物理层能力的支撑。网络总是希望可以又快又好地传输数据,但是网络协议的设计不能脱离当时阶段的物理传输能力。双绞线、铜线在传输速率、带宽方面无法与光纤抗衡,无线和有线的传输环境也有所不同。上层的协议要基于物理层能力的提升而及时改变,一些冗余僵化的功能也需要及时地剔除,从而保障网络的高效性。

3.1.2 网络协议体系基础组成部分

网络的主要功能是进行数据的传输,为了实现网络的数据传输,需要命名和编址、报文封装以及路由和转发3个核心功能。命名和编址主要代表网络的需求方和提供方,相当于寄快递的寄件方和收件方,只有提供了这两个地址,数据才能知道自己的流转方向。报文封装是在数据外层包裹用于路由转发的数据。例如,在寄件过程中,不能直接把物品进行发送,而需要在外层进行打包。路由和转发在网络中主要负责数据的具体传输功能,即数据如何在网络中进行发送。本节主要针对3个核心功能,基于IPv4和IPv6的设计方案,分析网络协议核心功能的演变以及未来发展趋势。

3.1.2.1 地址设计及演变

地址设计是网络协议架构设计的基石,所以介绍和分析网络协议首先需要拆解地址设计方案。地址的本质是通信对象的标识符,而地址空间就是一个对象集的标识符集合。地址具有三大属性:定义、绑定和解绑定、寻址。首先,一个协议体系需要定义地址空间、地址长度、语义以及作用域(地址可能应用的通信对象的集合)。其次,协议体系需要具备将地址和通信对象进行绑定和解除绑定的能力。最后,协议体系需要提供可以通过地址访问与之绑定通信对象的能力,即寻址。

在一个网络协议体系中,地址是分层级的,也与网络的分级划分进行对应,这样设计的好处是方便报文的传递及应用的使用。网络需要用到4个级别的地址:物理地址、逻辑地址、端口地址和特定应用地址,其地址与网络分层关系如图3-1所示。在这些地址中,逻辑地址的设计是最为重要的,主要包含命名空间和逻辑寻址两个方面的原因。

图3-1 地址与网络分层关系

逻辑地址在TCP/IP网络协议体系中指代的是IP地址编址规范。命名空间在一个编址体系中的重要性主要体现在编址系统是用来标识通信的主机的,所有的通信和访问归根结底是一个点对点的信息传输,而命名空间就是对于点的标识。因此不恰当的以及缺乏扩展性的地址设计必然会限制网络的发展。以IP地址为例,IPv4协议采取了固定长度的32bit地址,这种设计在当时看来是符合需求的。当年的学者对于网络的发展速度有了错误的估计,甚至比尔·盖茨也曾说过计算机内存只需要1MB就够了。但是随着网络上的主机数量呈指数增长以及不恰当的地址空间分配方案,32bit的固定长度地址暴露了IP地址空间不足的低级问题。IPv6被提出的一个核心原因是解决地址空间不足的问题,但是简单粗暴地将地址空间扩张为128bit在现在看来并不一定是一个好的选择,因为这只是缓解了地址空间不足的现象,并没有从根本上解决问题。因此无法确定IPv6是否会重演网络地址空间不足的问题。同时粗暴地扩展IP地址长度会导致对低功耗设备的支持能力大幅下降。一些低功耗IoT设备的报文长度甚至小于IPv6地址长度。未来的地址设计需要更全面地思考网络地址设计的方案,同时也需要结合网络的硬件支撑能力进行设计。

相较于其他地址,逻辑地址更重要的原因在于其地址包含相应的网络拓扑逻辑,这样的好处是方便路由器的转发。主机的物理地址在出场时就已经设定好,并且无法更改,但是根据接入网段的不同,主机的逻辑地址会改变。路由器在转发数据的时候会根据报头上的地址进行下一跳端口的转发,但是如果使用物理地址进行通信,会造成的一个显著问题是路由表的极度膨胀,由于每一个参与数据转发的路由器都需要记录某个地址的下一跳转发端口,路由设备无法负担这样大的资源开销。IPv4的地址空间被分为A、B、C、D和E 5类,但是这样的分类灵活性弱,海量设备接入时会导致子网机器大量消耗,面临着路由碎片化或地址重新规划的问题,降低寻址效率。从1991年起,编址方法在原来的标准分类的IP地址的基础上,加入了子网号的三级地址结构,使得IP地址的结构分为网络号、子网号和主机号。

RFC 1009指明了在一个划分子网的网络中可以使用几个不同的子网掩码。早期的可变长子网掩码(VLSM)技术提高了IP地址的利用率,后续的无类别域间路由(CIDR)使得网络划分更加合理。相较于IPv4,IPv6的地址分配一开始就遵循聚类(Aggregation)的原则,这使得路由器能在路由表中用一条记录(Entry)表示一片子网,大大减小了路由器中路由表的长度,提高了路由器转发数据包的速度。

但是更合理的网络地址划分并不能满足网络日益发展的需求:一是异构地址网络接入IPv6网络体系中必须使用128bit地址,其原网络的地址分配、路由规则会打破;二是逻辑地址中只表达拓扑含义无法满足网络的需求,当前的IP网络无法直接根据服务名称获取服务内容,需要先通过DNS将服务名称翻译为服务位置,再由服务位置获取服务内容,造成网络时延高;三是现有的编址方案与通信的主体位置紧密绑定,通信主体发生移动时,IP地址会更改,导致正在进行的业务发生中断。

3.1.2.2 报文封装设计及演变

报文封装设计是一个协议体系设计的核心内容,良好、灵活的报头设计才能更快地提升网络内部的报文转发效率。网络协议报头设计是有其对应的考虑和功能,即使现在被认为是冗余的一些字段,考虑当时的物理设备等原因也是有一定的先进性,不能全盘否定。在协议的研究过程中,需要结合实践经验和物理设备的发展能力,分析其不足及改进点。以往的协议报头设计,普遍是定长、定界、定序的,更严格地说是字段语义空间定长,字段不可选,协议报头一旦定义了,不太好再加减新字段,固化的语法约束了语义灵活性。IPv4及IPv6报文封装格式如图3-2所示。

IPv4由于其设计的僵化已经极大地拖累网络的发展。IPv4报头设计中的字段较为固定,无法去掉冗余僵化字段,给路由转发效率带来了极大影响,并且一旦字段变动,需要全网同步升级,成本极高。例如,校验功能可以由上层协议提供,报头设计中的报头校验和字段就显得冗余。其次,IPv4的字段长度设计不够合理。协议(Protocol)字段定义了8bit的长度,但是现在已经使用了上百个协议值,随时面临着协议号用尽的危险。最后,虽然IPv4的报文封装设计中支持选项(Options)字段进行添加自读,但是操作起来基本不可用。

图3-2 IPv4及IPv6报文封装格式

IPv6使用了新的报头格式,把它的选项和基本报头分开,极大地简化了路由选择的过程,同时允许协议在扩展报头上进行字段扩充,方便了新技术的使用。IPv6首部精简了报头字段,并且报头长度改为定长40byte,定长的设计有利于路由器的处理,加快了报文的转发速度。IPv6最大的特色之一就是在基本报头后面还有零到多个扩展头。IPv6把一些可选的实现功能,通过扩展报头来实现。IPv6基本报头包含下一报头字段,该字段可以标识扩展报头的存在并且标识扩展报头所承载的协议。下一报头字段的作用是将多个IPv6报头链接在一起,链条的末尾就是IPv6数据部分,扩展报头使用方式如图3-3所示。

图3-3 扩展报头使用方式

相较于IPv4,IPv6报头只保留了最重要的功能,而对于一些非关键性的功能,则放在扩展报头中进行实现,使得整体的报头设计回归简洁,更加透明。但是随着网络各类使能技术的发展,为了避免对其他技术产生影响,许多技术在发展的过程中大量地采用了嵌套封装的形式。这导致报文中的有效报文占比减少,降低了传输效率。其次,网络协议需要更大的灵活性,所有字段本质上都可选,而不需要定义必选。历史上许多信誓旦旦定义必选的字段,最后大多都可选,而且有些字段在大多数情况下是不需要的,但是报文协议设计的不灵活性导致其必须存在,这包括流标记(Flow Label)、服务类型(TOS)、分片(Fragmentation)、校验和(Check Sum)等,甚至IP地址都能举出几个在一些场合可以不需要的例子。并且,所有具有数值大小含义的字段都有潜在的变长需求,包括虚拟局域网(VLAN)、IP地址、Flow Label、多协议标签交换(MPLS)Label、Framgentation ID、端口号(PortNo)、TCP的序列号等,其中VLAN空间不足也是一个突出的问题。由于字段灵活性不足,UDP无法扩展,IETF最近出现的一个草案把扩展字段放在了UDP载荷的尾部,因此未来的协议需要从体系化的角度考虑报文封装的灵活性。

3.1.2.3 寻址及网络控制设计及演变

互联网内主机A与主机B进行通信需要利用互联网分层协议栈通过网络路由进行分层的封装和转发。在互联网信息传递的流程中,应用层和传输层主要在对应主机上运行,网络层、数据链路层和物理层在两台主机及中间系统运行。

网络是由多个路由器连接起来组成的,数据报文从源节点到终点的过程中,可能要经过多个路由器,因此网络的选路能力是协议的一个重要组成功能。网络的寻址方案主要研究路由器如何建立及快速收敛路由表,以支持单播通信。路由表可以分为静态路由表和动态路由表。静态路由表是由人工配置的路由转发表,这种方法随着网络指数级的扩大已经不适用。动态路由表则是可以根据网络中的拓扑变化动态刷新配置,配置动态路由表需要有相应的路由选择协议。路由选择协议主要分为距离矢量路由协议和链路状态协议两类。距离矢量路由协议计算网络中的链路距离矢量,如内部网关路由协议(IGRP)、路由信息协议(RIP)等。链路状态协议主要是为了得到整个网络的拓扑结构,如开放最短路径优先(OSPF)协议等。网络路由协议的设计和使用需要基于路由器的自身能力发展,随着硬件能力的提升,路由可以进行更复杂和更精细的路径选择和规划。

网络协议顺利地将报文从源主机交付到目的主机的过程中,会涉及相应的控制协议,主要包括地址解析协议、网际控制协议等。ARP是IPv4中的地址解析协议,IP数据报文在最终转发的过程中必须封装成帧才能通过物理网络。ARP将IP地址与物理地址关联起来,再把这个物理地址交给数据链路层进行数据传输。其对应地将物理地址解析为IP地址的协议称为反向地址解析协议(RARP),但是此协议使用较少。IPv4提供了不可靠和无连接的数据报交付,这样设计的初衷是为了有效地利用网络资源,但是其问题在于缺少差错控制和辅助机制,ICMPv4就是为了补偿这两个问题而设计。与ICMPv4对应的IGMP,它是TCP/IP协议族中负责IP多播(Multicast)成员管理的协议,用来在IP主机和与其直接相邻的多播路由器之间建立和维护多播成员关系。

在IPv6中,一个重要的修改协议是因特网控制报文协议版本6(ICMPv6),它延续了ICMPv4的策略和目标,但是更加稳健,且增加了很多新特性。ICMPv6完成了IPv4中的ICMP、IGMP和ARP的相关功能,它是一种面向报文的协议,用来报告差错、获取信息、探测领站点以及管理多播通信。ICMPv6报文紧跟在IPv6报头之后。在IPv6中,为了标识该报文,会使用58作为下一个报头字段的值。ICMPv6的报文格式包括4个部分:类型、编码值、校验码和具体的ICMPv6报文数据。ICMPv6报文分为差错报文和信息报文两种,错误消息的类型代码为0~127,信息消息的类型代码为128~255。以下介绍几种重要的报文。

常用的差错报文主要有4类,分别为终点不可达、分组太大、超时以及参数问题。终点不可达是当一个路由器无法转发一个数据报文或是主机无法将数据报文的内容交付给上层协议时,就会给源主机发送一个终点不可达报文。终点不可达报文使用不同的编码值代表不同的不可达原因。分组太大指当路由器收到的数据报文长度长于路径上的最大传输单元时,路由器就会丢弃该报文,并向源节点发送一个ICMPv6分组太大报文。超时报文向源主机报告数据报的某些分片未能在限期内到达目标主机。参数问题报文指发送的报文存在含糊不清或不能支持的选项。

信息类报文实现网络内的协商和控制能力。其中最具代表性的是邻居发现协议(Neighbor Discovery Protocol,NDP)。NDP完成的功能包括路由器发现、前缀发现、参数发现、IPv6地址自动配置、地址解析、下一跳确定、邻居不可达检测、重复地址检测和重定向的等功能。这些功能涵盖并扩展了IPv4中的ARP、ICMP路由器发现和重定向等相似协议。NDP主要使用了5种类型的ICMPv6数据包,包括路由器请求(类型133)、路由器宣告(类型134)、邻居请求(类型135)、邻居宣告(136)和重定向。

IPv6中增加了对自动配置的支持,这是对动态主机配置协议(DHCP)的改进和扩展,使得网络(尤其是局域网)的管理更加方便和快捷。并且,IPv6提供了服务质量支持,IPv6增加了增强的多播支持以及流量控制(Flow Control),这使得网络上的多媒体应用有了长足发展的机会,为服务质量(Quality of Service,QoS)控制提供了良好的网络平台。

3.1.3 网络协议过渡方案

网络协议的发展和演进必然面临协议过渡的问题,如何保证新旧协议的平滑过渡是在协议设计之初就需要考虑的事情之一。同时,历史的协议过渡实践经验也给未来协议提供了重要的参考。

关于网络协议过渡主要有两种方案。第一种方案是选定某个时间节点,全网的所有主机设备都切换成目标协议。这种方案的好处是无须考虑网络协议之间的过渡问题,只需要保证所有的主机设备都可以兼容新的网络协议栈。这种方案在早期互联网节点较少、网络拓扑简单的情况下可以做到——1983年1月1日,ARPANET即采取这种方式将网络核心协议由NCP替换为TCP/IP(参见RFC 801)。但是这种过渡方式无法适应现今巨大且复杂的网络。第二种方案是采取渐进式的过渡,具有代表性的案例是IPv4过渡到IPv6的演进,这种方案也是目前采取的主流演进过渡方案。

从IPv4过渡到IPv6的过程面临着诸多困难,需要花费相当大的时间。互联网上的设备数量非常庞大,设备配置也多种多样,因此无法做到全网统一进行IPv4到IPv6的切换。因此在一段时间内,IPv4和IPv6会在网络上共存相当一段时间。为了保证IPv4到IPv6平稳过渡,IETF设计了双栈技术、隧道技术和协议转换等策略来帮助协议的过渡。

(1)双栈协议

双栈技术指网络节点上同时支持IPv4和IPv6两种协议,该节点可以分别与两种协议网络进行连接,并且可以收发IPv4包和IPv6包。支持双栈协议的网络节点会存在两个IP地址,分别与对应协议栈的网络节点进行通信。具体实施时,源地址会向DNS发送查询信息获得目标的IP地址,若DNS返回IPv4地址,则源主机就发送IPv4包;若返回IPv6地址,则源主机发送IPv6包。双栈技术不是一个新技术,在IPv4成为主要协议之前,许多网络节点除了运行IPv4还会运行其他网络协议,以保证与其他协议网络互通。双栈协议的优点是互通性好,易于理解;缺点是它加大了对设备性能的压力,一些低能耗设备无法支持。

(2)隧道技术

隧道技术主要是将协议数据单元封装在另一种协议单元报头之后,使得一种协议可以通过另一种协议的封装。隧道技术的一个典型案例是IPv6的报文在传输过程中需要通过IPv4的区域。隧道技术的工作原理是在隧道的入口节点,将IPv6的数据报封装到IPv4数据报中。封装报文的源地址和目的地址分别为该域两端节点的IPv4节点地址。封装好的数据报穿越IPv4网络到达隧道出口节点后再解封还原为IPv6报文。构建隧道的技术有很多,实现方式也不统一,例如6over4隧道、6to4隧道、Teredo隧道等,配置方式也分手工配置和自动建立。隧道技术的优点在于隧道的透明性,源节点和目的节点无法感知隧道的存在。

(3)协议转换技术

协议转换技术也称为翻译技术,它的应用场景为发送方和接收方所支持的协议栈不同。某些场景下,发送方希望使用IPv6而接收方使用IPv4。这种情况下无法使用隧道技术,因为必须将发送的报文转发为IPv4格式,接收方才可以接收报文。协议转换的目标是为IPv6网络节点与IPv4网络节点的相互通信提供透明的路由。协议转换技术采取一定的规则将IPv6的协议报头转换为IPv4支持的报头,例如,可以采用提取网络地址最右侧32bit的方法,把IPv6映射的地址转换为IPv4地址。一般在不能使用隧道技术和双栈技术时才考虑使用协议转换技术。它主要的缺点是地址和协议的转换会导致较高的时延以及某些功能对应的字段无法支持,导致产生碎片数据。

即使开发构建了相应的过渡方案,IPv6的部署进度并没有人们想像的快。其主要原因是最初开发IPv6的动机是解决IPv4地址的紧缺,但是短期内又出现一些解决方案,如无分类编址、动态地址分配、网络地址转换(NAT)等技术,可以缓解地址紧缺的问题。其次,在刚推出时IPv6还存在较高的不稳定性和缺陷,当时的大部分应用层面的开发都是基于IPv4,大部分应用运行时并不需要网络支持IPv6,因此一些厂商通常在部署网络时会考虑更稳妥的方案。最后,各运营商在IPv4基础设施上投资巨大,IPv6和IPv4的兼容互通性存在问题,单纯升级软件无法很好地支持IPv6的能力。这种从终端到服务器以及所穿过去的网络设备的大面积同步升级的方式对业界的挑战太大,并且需要大量的资金投入。“固定边界即语法”的做法,造成了一种博弈困境——终端等着服务器先升级,服务器等着传输网络先升级。这些原因综合起来导致IPv6网络发展缓慢。

但是,从发展的角度来看,IPv6技术可以解决IPv4网络面临的多种问题,同时,一些新兴的技术(如IP电话、物联网等)都需要IPv6的相关功能,因此,IPv6协议族取代IPv4协议族已经成为学术界和产业界的共识。众多厂商在生产的软硬件设备上已经全面支持IPv6。2016年年底,IETF互联网架构委员会(Internet Architecture Board,IAB)发布声明,停止要求新的或扩展协议标准内对于IPv4的兼容,未来的协议和标准的制定和需要基于IPv6进行。

IPv6的部署表现为最初缓慢启动、后续逐步加快。近年来,国内外都在逐步加快IPv6的部署。美国作为IPv4技术的发源地,较早地开展了对IPv6的研究。由于美国拥有大量的IPv4地址资源,对于IPv6的研究前期主要以科学研究与试验为主。研究和开发IPv6的主要国际组织(如IETF等)在美国,用于IPv6研究的主要网络(如6Bone等)也在美国。欧洲虽然在互联网领域落后于美国,但是在移动通信领域处于领先地位,IPv6作为发展通信业务的重要基础设施,得到了大力的研究和充分的发展。欧洲先后启动了Euro6IX、6NET、6INIT等多个项目,建立了一定数量的支持IPv6高速接入的节点。日韩等国家和地区也在2000年前后开展了IPv6的试验网络,并且近年来已经逐步商用。

从已有的过渡机制可以看出,目前所有的过渡方案都是针对某一类场景进行设计,不是普遍适用的方案。从IPv6部署现状中可以发现,相较于应用层协议的改变,改变网络层协议是一个极其复杂且困难的事情。由于IPv4和IPv6之间形成了两个独立的网络空间,其互相不能通信,这种灾难式升级导致了IPv6演进的缓慢。但是不可否认的是,网络层的改变会给整个互联网带来质的飞跃。因此,在下一代协议的制定和发展时,需要考虑协议过渡的代价性,保证协议的平稳过渡。 fAKvbS3WIpyZI6k1y7K9fL6+nP9KXrbRaMpWd8OOS1C/mz27My1/+f81V8p6aKzl

点击中间区域
呼出菜单
上一章
目录
下一章
×