1.2 TCP/IP协议栈
1.2.1 OSI概述
1.2.1.1 为什么需要网络标准
许多读者可能会简单认为,在计算机之间建立通信,就是怎样确保数据由一台计算机流向另一台计算机的问题,其实不然。各种计算机总是不尽相同,因而它们之间的数据传输要比想象中复杂得多。
计算机公司设计制造各种型号的计算机,以适应不同的需求。这些计算机总体上都遵循一般的原理,但实现细节上必然受到人们主观思想和观念的影响。不同的计算机有各自不同的体系结构、使用不同的语言、采用不同的数据存储格式、以不同的速率进行通信。彼此间如果不兼容,那么通信就会非常困难。那么计算机是怎样实现通信的呢?
先来看看不同国家的商业代表是如何沟通的。他们每个人都讲不同的语言,所以需要翻译。而且,他们必须共同遵守一个协议,这个协议规定了他们以怎样的方式、规则进行讨论。否则,讨论将是毫无秩序的。只有每个成员都遵守这一协议,才能保证讨论有条不紊的进行。
同样,计算机间互相通信,也需要协议以决定按哪种方式来“说话”。一个问题随之而来:协议多种多样,如果各大厂商遵循不同的协议,那也就无协议可言了。如果大家能够认同一个公共协议的话,那么这个协议就成为一个所有人都必须遵循的标准协议。
然而,这就像让所有人都认同一种计算机体系结构一样,是不切实际的。不同的设计者理念、思维方式、目标都不一样,因此,出现了许多不同的标准。有幸的是,一些机构致力于在飞速发展的通信领域中确立行业规范,并已经取得了巨大的成就。
1.2.1.2 常见的标准化组织
常见的标准化组织有以下几个。
(1)国际标准化组织(ISO)。ISO是一个世界性组织,包括许多国家的标准团体。它最有意义的工作在于它对开发系统的研究,定义了众所周知的OSI七层模型。
(2)电气和电子工程师协会(IEEE)。IEEE是世界上最大的专业技术团队,主要开发数据通信标准。它在通信领域最著名的研究成果要数IEEE 802局域网系列标准。
(3)互联网工程任务组(IETF)。IETF是全球互联网最具权威的技术标准化组织,分为许多工作组。IETF的主要任务是负责互联网相关技术规范的研发和制定,如路由协议、AAA、TCP/IP和IPv6核心协议、网络安全等。
(4)国际电信联盟(ITU)。ITU是联合国的一个专门机构,主管信息通信技术事务。下辖的ITU-T负责控制远程通信的相关标准,广为使用的G系列、H系列、V系列标准都出自ITU-T。
(5)美国国家标准学会(ANSI)。ANSI是一个非营利性质的民间标准化团队,同时也是ISO的一个成员。它所涉及的标准化领域非常广泛,也包括通信领域。大家熟知的ASCⅡ码就是由ANSI制定的。
(6)电子工业协会(EIA)。美国电子行业标准制定者之一,同时也是ANSI的成员。其研究的首要课题是设备间的电气连接和数据的物理传输,最广为人知的EIA标准是RS-232。
1.2.1.3 OSI模型
OSI(Open System Interconnect,开放式系统互联)模型由国际标准化组织ISO制定,目的是实现各种网络的协议国际标准化,以解决各种体系结构的网络互联问题。
如图1-8和表1-2所示,OSI模型将网络的工作分为7个层次,每层完成一定的网络功能,这些功能由网络设备和协议来实现,7个层次协同完成网络通信。在一个网络中,由于分工不同,各种网络设备所对应的网络层次也是不同的。
图1-8 OSI模型
表1-2 OSI模型各层功能
续表
1.2.1.4 OSI层次关系
OSI 定义了开放系统的层次结构、层次之间的相互关系以及各层的功能,它作为一个框架来协调和组织各层所提供的服务。网络分层将网络设备所要完成的数据转发、打包或拆包、控制信息的加载或拆出等工作,分别由不同的软硬件模块来完成,这样可以将往来通信和网络互连这一复杂的问题变得较为简单。
分层有以下优点:
(1)降低复杂度,使程序容易修改,加快了产品开发速度;
(2)层与层之间可以使用标准接口,方便工程模块化;
(3)每层使用直接下层的服务,便于记住每层功能;
(4)使网络互联变得更加灵活,创建了一个良好的互联环境。
每个层次都利用下一层提供的服务,与对等层进行通信。在通信的时候,数据的发送端自上而下通过七个层次完成数据发送,而接收端自下而上完成数据接收,就像图1-9展示的那样。但是,并不是通信的全过程都需要经过OSI的全部七层,有的只需要用到下三层。比如,终端计算机间QQ聊天,两端计算机发送和接收数据必须使用到全部七个层次,而中间的路由器只关心数据如何传送,不关心数据格式等内容,故只需要用到下三层而已。总之,双方的通信只能在对等层次上进行,而不能在不对称层次上进行。
图1-9 OSI模型的通信流程