协议是网络的血液和生命,计算机网络的发展是
网络协议设计和开发的结果。但计算机通信与网络技术的发展进一步增强了协议的复杂性,主要体现在协议开发难度大、周期长、而且潜在错误多,而协议开发过程中任何一点错误和缺陷都将给分布系统的稳定性、可靠性、坚固性、安全性、容错性以及异种系统之问互通性带来巨大的危害。为此,便出现了协议工程。
背景
随着计算机网络快速发展,网络影响的范围越来越广,网络应用也越来越多,网络已经成为现代生活中不可或缺的一部分。网络中不同计算机系统之间的数据交互、协同工作都是由
网络协议来控制的。可以说,协议是网络间实时、有序、有效通讯的基础保证。据统计,现在的网络中超过有600个网络协议,2000个网络
应用程序在工作,并且还在不断增加。
发展
在20多年的时间里,协议工程的研究有了长足的进步,大致可分为三个阶段。
(1)研究各种形式描述阶段(1968年~1979年)
这个阶段人们提出各种描述协议的模型,主要包括这样几种:有穷自动机,形式语言,Petri网,高级程序设计语言以及一些混合模型。此外还有用时态逻辑和抽象代数语言描述协议。各种形式描述技术都得到了实际应用。
(2)协议及其形式描述的标准化阶段(1979年~1985年)
人们在验证协议正确性的过程中发现协议实现中的错误主要是由于协议文本本身的描述(用自然语言形式)就存在着二义性或矛盾之处。1976年由
CCITT确认的SDL,经多年广泛的修改和提高,是一种基于扩展状态变跃图和
抽象数据类型(ACT ONE)的混合技术。SDL已被电信公司广泛用于描述电子交换系统。ISO在1988年公布了两个国际标准文本
Estelle与
LOTOS,并提供了用它们描述的运输层和会话层等协议文本,为协议工程打下基础。Estelle也基于扩展的状态变跃模型,但使用
PASCAL语法和数据类型。80年代初有人试图协调Estelle和SDL,终因不能有共同的语义模型而失败。
(3)协议工程阶段(1985年以后)
这一阶段人们开始研究基于
ISO或
CCITT建议的协议开发方法。然而,协议工程目前主要的问题仍是形式技术和方法的研究和开发,许多专家学者按照协议工程的形式方法,经过一轮或几轮协议软件系统的实现后,都感到形式技术的重新研究是当前协议工程深入的关键。
开发过程
协议工程系统的主要组成部分及其关系,它大体上可归纳成以下几个方面内容:协议设计、协议描述、协议验证与分析、协议实现、协议测试。
协议设计
协议开发的第一步是构造一个协议,提出协议文本初稿。这包括:协议环境分析,协议功能设计,协议元素的构造,协议组织形式的确定及协议文本的编写。
协议描述
协议可以用
自然语言、
程序设计语言、形式描述语言或专用语言描述。用自然语言描述的协议可读性好,因此,
ISO是采用自然语言描述并公布协议标准的。
协议验证与分析
协议验证是对通信协议本身的逻辑性进行验证的过程,其主要目的是,在协议开发的前期,最大限度地检测和纠正协议错误和缺陷,包括死锁、活锁、不可执行的行动、不符合要求的协议外部性能等。
协议的半自动实现
协议实现的目的是要产生与机器无关的可执行的协议目标代码。而所谓的半自动实现,是指通过编译器,将Estell,
Lotos等形式描述语言描述的协议规范文本直接转换成协议代码(
C ,
Pascal等程序设计语言)。
协议的一致性测试
协议的测试是协议开发的最后一个阶段。由于协议实现采用的是半自动代码生成技术.与机器相关的协议代码是手工编写的,协议实现者对协议的理解各不相同,这就难以保证协议实现与协议规范之间的一致性,而在0SI的环境下,与标准不一致的实现是没有任何意义的。因此,协议的
一致性测试对实现来说是至关重要的。
核心协议
TCP/IP协议簇是Internet
网络体系结构的核心协议,已成为实际上的计算机网络工业标准.随着计算机网络的发展,
网络协议的数量越来越多,内容也越来越复杂,如何设计出正确可靠的协议已成为一个挑战性的课题。为此,
协议工程学应运而生。