网络协议
随处可见的协议
在计算机网络与信息通信领域里,人们经常提及“协议”一词。互联网中常用的具有代表性的协议有IP、TCP、HTTP等。而LAN(局域网)中常用的协议有IPX/SPX(Novell公司开发的NetWare系统的协议。) 等。
“计算机网络体系结构”将这些网络协议进行了系统的归纳。TCP/IP就是IP、TCP、HTTP等协议的集合。现在,很多设备都支持TCP/IP。除此之外,还有很多其他类型的网络体系结构。例如,Novell公司的IPX/SPX、苹果公司的AppleTalk(仅限苹果公司计算机使用)、IBM公司开发的用于构建大规模网络的SNA(System Network Architecture) 以及前DEC公司(1998年被收购。) 开发的DECnet等。
协议的必要性
简单来说,协议就是计算机与计算机之间通过网络实现通信时事先达成的一种“约定”。这种“约定”使那些由不同厂商的设备、不同的CPU以及不同的操作系统组成的计算机之间,只要遵循相同的协议就能够实现通信。反之,如果所使用的协议不同,就无法实现通信。这就好比两个人使用不同国家的语言说话,怎么也无法相互理解。协议可以分为很多种,每一种协议都明确地界定了它的行为规范。两台计算机之间必须能够支持相同的协议,并遵循相同协议进行处理,这样才能实现相互通信。
生活中的协议
在此举一个简单的例子。有三个人A、B、C。A只会说汉语、B只会说英语、而C既会说汉语又会说英语。现在A与B要聊天,他们之间该如何沟通呢?若A与C要聊天,又会怎样?这时如果我们:
将汉语和英语当作“协议”
将聊天当作“通信”
将说话的内容当作“数据”
那么A与B之间由于各持一种语言,恐怕说多久也无法交流。因为他们之间的谈话所用的协议(语言)不同,双方都无法将数据(所说的话)传递给对方(若两人之间有个同声翻译,就能够顺利沟通了。在网络环境中,网关就起着这种翻译作用。) 。
接下来,我们分析A与C之间聊天的情况。两人都用汉语这个“协议”就能理解对方所要表达的具体含义了。也就是说A与C为了顺利沟通,采用同一种协议,使得他们之间能够传递所期望的数据(想要说给对方的话)。
如此看来,协议如同人们平常说话所用的语言。虽然语言是人类才具有的特性,但计算机与计算机之间通过网络进行通信时,也可以认为是依据类似于人类“语言”实现了相互通信(与之相似,我们在日常生活中理所当然的一些行为,很多情况下都与“协议”这一概念不谋而合。) 。
计算机中的协议
计算机从物理连接层面到应用程序的软件层面,各个组件都必须严格遵循着事先达成的约定才能实现真正的通信。此外,每个计算机还必须装有实现通信最基本功能的程序。如果将前面例子中提到的A、B与C替换到计算机中,就不难理解为什么需要明确定义协议,为什么要遵循既定的协议来设计软件和制造计算机硬件了。
人们平常说话时根本不需要特别注意就能顺其自然地吐字、发音。并且在很多场合,人类能够根据对方的语义、声音或表情,合理地调整自己的表达方式和所要传达的内容,从而避免给对方造成误解。甚至有时在谈话过程中如果不小心漏掉几个词,也能从谈话的语境和上下文中猜出对方所要表达的大体意思,不至于影响自己的理解。然而计算机做不到这一点。因此,在设计计算机程序与硬件时,要充分考虑通信过程中可能会遇到的各种异常以及对异常的处理。在实际遇到问题时,正在通信的计算机之间也必须具备相应的设备和程序以应对异常。
在计算机通信中,事先达成一个详细的约定,并遵循这一约定进行处理尤为重要。这种约定其实就是“协议”。
分组交换协议
分组交换是指将大数据分割为一个个叫做包(Packet)的较小单位进行传输的方法。这里所说的包,如同我们平常在邮局里见到的邮包。分组交换就是将大数据分装为一个个这样的邮包交给对方。
一个较大的数据被分为多个分组时,为了标明是原始数据中的哪一部分,就有必要将分组的序号写入包中。接收端会根据这个序号,再将每个分组按照序号重新装配为原始数据。
通信协议中,通常会规定报文首部应该写入哪些信息、应该如何处理这些信息。相互通信的每一台计算机则根据协议构造报文首部、读取首部内容等。为了双方能正确通信,分组的发送方和接收方有必要对报文首部和内容保持一致的定义和解释。
协议的标准化
为了解决各家厂商的各种网络体系结构、各种协议之间并不相互兼容。即使是从物理层面上连接了两台异构的计算机,由于它们之间采用的网络体系结构不同,支持的协议不同,仍然无法实现正常的通信。
ISO(International Organization for Standards,国际标准化组织。) 制定了一个国际标准OSI(Open Systems Interconnection,开放式通信系统互联参考模型。) ,对通信系统进行了标准化。OSI协议设计之初作为其指导方针的OSI参考模型却常被用于网络协议的制定当中。
值得注意的是TCP/IP并非ISO所制定的某种国际标准。而是由IETF(Internet Engineering Task Force) 所建议的、致力于推进其标准化作业的一种协议。在当时,大学等研究机构和计算机行业作为中心力量,推动了TCP/IP的标准化进程。TCP/IP作为互联网之上的一种标准,也作为业界标准(非国家或国际机构等公共机构所制定的标准,但属于业界公认的标准。) ,俨然已成为全世界所广泛应用的通信协议。那些支持互联网的设备及软件,也正着力遵循由IETF标准化的TCP/IP协议。
协议得以标准化也使所有遵循标准协议的设备不再因计算机硬件或操作系统的差异而无法通信。因此,协议的标准化也推动了计算机网络的普及。