计算机网络体系结构的形成
1974年,美国的IBM公司宣布了系统网络体系结构SNA。
国际标准化组织ISO于1977年提出了开放系统互联基本参考模型OSI/RM。
OSI是法律上的国际标准,TCP/IP是事实上的国际标准。
协议与划分层次
为计算机网络中的数据交换而建立的规则、标准或约定称为网络协议,也可简称为协议。
网络协议主要由以下三个要素组成:
语法:数据与控制信息的结构或格式
语义:需要发出何种控制信息,完成何种动作以及做出何种响应
同步:事件实现顺序的详细说明,(含有时序的意思)
网络协议是计算机网络不可缺少的组成部分。
对于非常复杂的计算机网络协议,其结构应该是层次式。
现在假定我们在主机1和主机2之间通过一个通信网络传送文件。
我们可以把要做的工作划分为三类:
文件传送模块、通信服务模块、网络接入模块
这样分层的好处是:
各层之间是独立的;灵活性好;结构上可分割开;易于实现和维护;能促进标准化工作。
也有一些缺点如:
降低效率;有些功能在不同的层次中重复出现,产生了额外开销。
通常各层次要完成的功能主要有:
差错控制;流量控制;分段和重装;复用和分用;连接建立和释放
计算机网络的各层及其协议的集合就是网络的体系系统。
换句话说,计算机网络的体系结构就是这个计算机网络及其构件所应完成的功能的精确定义。
体系结构是抽象的,而实现则是具体的,是真正在运行的计算机硬件和软件。
具有五层协议的体系结构
OSI是一个七层协议体系结构,TCP/IP是一个四层的体系结构。
在学习计算机网络的原理时,往往采取折中的办法,即综合OSI和TCP/IP的优点,采用一种五层协议的体系结构。
书本上从上往下进行了介绍,但是其实采取从下往上的方式更易理解。
5、物理层:
物理层上所传数据的单位时比特,可以理解为点到点的比特流传输。物理层传输不能保证可靠性,比如接收方有没有准备好接受,传输的信息有没有差错等。
4、数据链路层:(简称为链路层)
传送相对物理层而言更可靠,在两个相邻结点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成帧,每一帧包括数据和必要的控制信息。控制信息能够使接收端知道一个帧从哪个比特开始到哪个比特结束,这样链路层在收到一个帧后,可以从中提取数据部分,上交给网络层。同时,控制信息还能使接收端检测到所收到的帧中有无差错,并且丢弃出了差错的帧。
3、网络层:
负责为分组交换网上的不同主机提供通信服务。在发送数据时,网络层把运输层产生的报文段或用户数据封装成分组或包进行传送。(无论在哪一层传送的数据单元,都可笼统地用“分组”表示)。
网络层的另一个任务时选择合适的路由,使运输层传下来的分组,能够通过路由器找到目的主机。
2、运输层:
负责为两台主机中进程之间的通信提供通用的数据传输服务。
由于一台主机可同时运行多个进程,因此运输层有复用和分用的功能。
运输层主要使用以下两种协议:
传输控制协议TCP:提供面向连接的,可靠的数据传输服务,传输单位是报文段。
用户数据报协议UDP:提供无连接的,尽最大努力的数据传输服务(不保证可靠性),传输单位是用户数据报。
1、应用层:
最高层,任务是通过应用进程间的交互来完成特定网络应用。交互的数据单元为报文。
具体举例,假定两台主机通过一台路由器连接起来。
假定主机1的应用进程AP1向主机2的应用进程AP2传输数据。
AP1先将数据交给第5层应用层,第5层加上必要的控制信息H5就变成了下一层的数据单元,以此类推。
直到第2层链路层后,控制信息被分成两部分,分别加到本层的首部H2和尾部T2。
而第1层物理层由于是比特流的传送,所以不再加上控制信息。(传递比特流时应从首部开始传送)
当这一串比特流离开主机1,经网络的物理媒体传送到路由器时,就从路由器的第一层上升到第三层。
每一层都根据控制信息进行必要的操作,然后将控制信息剥去。将该层剩下的数据单元上交给更高的一层。
当分组上升到了第三层时,就根据首部中的目的地址,查找路由器中的转发表,找出转发分组的接口,然后往下传送到第2层,加上新的首部和尾部,再到最下面的第1层,然后在物理媒体上把每一个比特发送出去。
当这一串的比特流离开路由器,到达目的站主机2时,就从主机2的第1层按照上面讲过的方式,依次上升到第5层。
最后,把应用进程AP1发送的数据交给目的站的应用进程AP2。
整个过程可以用一个简单例子来比喻。
有一封信从高层往下传,每经过一层就包上一个新的信封,写上必要的地址信息。包有多个信封的信件传送到目的站后,从第一层开始,每层拆开一个信封后就把信封中的信交给上一层。传到最高层后,取出发信人所发的信交给收信人。
虽然应用进程数据要经过如上图所示的复杂过程才能送到终点的应用进程,但这些复杂过程对用户来说,却都被屏蔽掉了,以致应用进程AP1觉得好像时直接把数据交给了应用进程AP2。同理,任何两个同样的层次,如图中的水平虚线所示的那样,把数据通过水平虚线直接传递给对方,这就是所谓的“对等层”之间的通信。在文献中也还可以见到术语“协议栈”,这是因为几个层次画在一起很向一个栈的结构。
OSI参考模型把对等层次之间传送的数据单位称为该层的协议数据单元PDU。
实体、协议、服务和服务访问点
当研究开放系统中的信息交换时,往往使用实体这一较为抽象的名词表示任何可以发送或接受信息的硬件或软件进程。
协议是控制两个对等实体(或多个实体)进行通信的规则的集合。
在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。
要实现本层协议,还需要使用下面一层所提供的服务。
协议是“水平的”;服务是“垂直的”,由下层向上层通过层间接口提供。
另外,并非在一个层内完成的全部功能都称为服务,只有那些能够被高一层实体“看得见”的功能才能称之为服务。
上层使用下层所提供的服务必须通过与下层交换一些命令,这些命令在OSI中称为服务原语。
在同一系统中相邻两层的实体进行交互(即交换信息)的地方,通常称为服务访问点SAP。
OSI把层与层之间交换的数据的单位称为服务数据单元SDU。
计算机网络的协议还有一个很重要的特点,就是协议必须把所有不利的条件事先都估计到,而不能假定一切都是正常的和非常理想的。因此,看一台计算机网络协议是否正确,不能只看在正常情况下是否正确,而且必须非常仔细地检查这个协议能否应对各种异常情况。
TCP/IP的体系结构
注意,路由器在转发分组时最高只用到网络层,而没有使用运输层和应用层。
应当指出,技术的发展并不是遵循严格的OSI分层概念。
实际上现在的互联网使用的TCP/IP体系结构有时已经演变为下图:
还有一种方法,就是分层次画出具体的协议来表示TCP/IP协议族:
这种很像沙漏计时器形状的协议族表明:
TCP/IP协议可以为各式各样的应用提供服务;(everything over IP)
TCP/IP协议允许IP协议在各式各样的网络构成的互联网上运行。(IP over everything)