2.1 协议如同人与人聊天
通常,我们上网的时候根本感觉不到协议的存在,人们通常也不会在意协议之类的事情。只要程序能正常运行,就足以满足日常需求,何况现在的大部分网络都是可以自动连接的。协议对于非专业人员变得更加陌生。通常也不会有人因为不懂协议导致不能上网的情况发生。然而在通过网络实现通信的过程背后,协议却起到了至关重要的作用。
假设有三个人A、B、C。A只会说汉语、B只会说英语、而C既会说汉语又会说英语。现在A与B要聊天,它们之间应该入后沟通呢?若A和C要聊天,又会如何?这时,如果我们:
- 将汉语和英语当作“协议”
- 将聊天当作“通信”
- 将说话的内容当作“数据”
那么A与B之间由于各持一种语言,恐怕说多久也无法交流。因为它们之间谈话所用的协议(语言)不同,双方都无法将数据(所说的话)传递给对方。接下来,我们分析A与C之间聊天的情况。两人都用汉语这个“协议”就能理解对方所要表达的具体含义了。也就是说A与C为了顺利沟通,采用同一种协议,使得他们之间能够传递所期望的数据(想要说给对方的话)。
如此看来,协议如同人们平常说话说采用的语言。虽然语言是人类才具有的特性,但是计算机与计算机之间通过网络进行通信时,也可以 认为是依据类似于人类“语言”实现了相互通信。
当然,即便是人与人之间沟通也不能胡说,要遵循一定的要求或者规律。协议也是同样,协议受到协议三要素约束。
- [x] 语法
- [x] 语义
- [x] 顺序
回到网络的世界,计算机网络是由多个互连的结点组成,结点之间可以不断交换数据和控制信息。要做到井然有序地交换数据,每个结点都必须遵守一些事先约定的好的规则。这些规则明确地规定了所交换数据的格式和时序。这些为网络数据交换而制定的规则、约定形成了标准,称为网络协议。
任何一种网络通信协议都必须包括了三个组成部分:语法、语义和时序,其实就是我们所说的协议三要素。
- 语法:语法是用来规定通信双方“如何讲”,主要任务是确定用户数据和控制信息的结构和格式,即确定用何种编码及信号电平等。
- 语义:语义规定通信双方准备“讲什么”,涉及用于协调与差错处理的控制信息。规定了通信双方如何进行数据交换。包括需要发出何种控制信息、完成何种动作以及做出何种响应,对发出请求、执行动作,以及返回应答等进行规定,同时也规定了用于协调和差错处理的控制信息。
- 时序:又称为同步,规定双方“何时进行通信”,即对事件的实现顺序以及速度匹配等。
我们已知的厂商有很多,IBM、微软、思科、华为都属于巨头了,有这么多的厂商在,那么网络协议究竟用谁家的?他们之间是否兼容呢?这些都是问题,如果没有统一的协议,就会出现“一人一把号,各吹各的调”的问题。那么究竟有没有协议的标准,或者说制定这个标准的组织呢?肯定是有的。这样的组织有很多,咱们简单说几个。
第,,一个组织就是ISO,国际标准化组织(International Organization for Standardization),简称ISO,是一个全球性的非政府组织,是国际标准化领域中一个十分重要的组织。中国是ISO的正式成员,代表中国参加ISO的国家机构是中国国家技术监督局。
第二个IEEE,电气和电子工程师协会(Institute of Electrical and Electronics Engineers),简称IEEE。是一个国际性的电子技术与信息科学工程师的协会,是目前全球最,大的非营利性专业技术学会,其会员人数超过40万人,遍布160多个国家。IEEE致力于电气、电子、计算机工程和与科学有关的领域的开发和研究,在太空、计算机、电信、生物医学、电力及消费性电子产品等领域已制定了900多个行业标准,现已发展成为具有较大影响力的国际学术组织。
还有国际互联网协会(Internet Society),简称ISOC。是一个全球性的互联网组织,在推动互联网全球化,加快网络互连技术、发展应用软件、提高互联网普及率等方面发挥重要的作用。ISOC是一个非政府、非赢利的行业性国际组织,在世界各地有上百个组织成员和数万名个人成员。ISOC同时还负责互联网工程任务组(IETF)、互联网结构委员会(IAB)等组织的组织与协调工作。这里有一个比较重要的“团伙”,国际互联网工程任务组(The Internet Engineering Task Force,简称 IETF)是一个公开性质的大型民间国际团体,汇集了与互联网架构和互联网顺利运作相关的网络设计者、运营者、投资人和研究人员,并欢迎所有对此行业感兴趣的人士参与。
其实还有很多公司、组织、学校在协议方面做了很重要的贡献,我们在这里只说这三个,后边如果有遇到的,我们再细说。为什么这三个有代表性呢?我们可以简单看看这三家都干了什么。
先说ISO,它在网络协议方面做的最重要的一件事情,就是定义了OSI(Open System Interconnection,意为开放式系统互联)。一般我习惯称其为OSI参考模型,该模型定义了不同计算机互联的标准,是设计和描述计算机网络通信的基本框架。这里值得注意的是,OSI模型给协议做了一个基本框架,就是画了各圈,从此以后的各种协议的定制,尽量参照该模型。虽然OSI本身也作为协议存在过,不过早已被TCP/IP协议族淘汰了。
然后紧接着我们就说TCP/IP协议族,TCP/IP并非ISO指定,是由IETF建议、致力推进标准化的一种协议,其中,大学等研究机构和计算机行业是推动标准化的核心力量,现已成为业界标准协议。TCP/IP并非一种协议,而是一族协议,简单理解就是包含了很多协议。它们都属于TCP/IP协议族,在不同的层面发挥不同的作用。
IEEE呢?它定义的通常不是协议,而是一些技术标准。大家应该都见过,只是没注意,比如说802.11系列标准,这个是干什么的?细心的人都会发现,这个就是Wi-Fi用的标准。一般我们都能看到Wi-Fi路由器上写着支持802.11a、b、g,这个就是IEEE定义的工业标准。
到这里呢,我们还要说一个RFC,全称是Request For Comments,是一系列以编号排定的文件。文件收集了有关互联网相关信息,以及UNIX和互联网社区的软件文件。目前RFC文件是由ISOC赞助发行。基本的互联网通信协议都有在RFC文件内详细说明。RFC文件还额外加入许多的论题在标准内,例如对于互联网新开发的协议及发展中所有的记录。因此几乎所有的互联网标准都有收录在RFC文件之中。如果你想成为网络方面的专家,那么RFC无疑是最重要也是最经常需要用到的资料之一,所以RFC享有网络知识圣经之美誉。通常,当某家机构或团体开发出了一套标准或提出对某种标准的设想,想要征询外界的意见时,就会在Internet上发放一份RFC,对这一问题感兴趣的人可以阅读该RFC并提出自己的意见;绝大部分网络标准的指定都是以RFC的形式开始,经过大量的论证和修改过程,由主要的标准化组织所指定的,但在RFC中所收录的文件并不都是正在使用或为大家所公认的,也有很大一部分只在某个局部领域被使用或并没有被采用,一份RFC具体处于什么状态都在文件中作了明确的标识。
,