1.3计算机网络体系结构及OSI七层参考模型与TCP/IP参考模型
目录
1、计算机网络体系结构
为什么需要有计算机网络体系结构?我们都知道计算机网络非常复杂,涉及非常多的组成部分:如主机(hosts)、路由器(routers)、链路(links)、应用(applications)、协议(protocols)等等。那么有没有这样一种系统结构能够很好的描述网络呢?如果有的话是什么样的结构呢?至少这个系统结构可以用来讨论网络。答案是可以使用分层结构来描述复杂系统。为什么采用分层结构呢?(分层结构优点)因为分层结构清晰,有利于我们认识复杂系统的部件及其关系;模块化的分层易于系统更新、维护,任何一层服务实现的改变对于系统其它层都是透明的;有利于标准化。
计算机网络体系结构简称网络体系结构(network architecture)是分层结构,计算机网络体系结构是计算机网络的各层及其协议的集合,每层遵循某个/些网络协议完成本层功能。协议是控制两个对等实体进行通信的规则的集合,协议 是 “ 水平的 ” 。服务:任一层实体需要使用下层服务,遵循本层协议,实现本层功能,向上层提供 服务 ,服务是“ 垂直的 ”,下层协议的实现对上层的 服务用户是 透明 的。同系统的相邻层 实体间通过接口进行交互。
2、OSI与Internet参考模型
2.1OSI参考模型
最早的时候网络刚刚出现的时候,很多大型的公司都拥有了网络技术,公司内部计算机可以相互连接。可是却不能与其它公司连接。因为没有一个统一的规范。计算机之间相互传输的信息对方不能理解。所以不能互联。从而形成了一个个的网络孤岛,限制了计算机和网络的发展。因而国际标准化组织(ISO)推出了OSI参考模型。
OSI(Open System Interconnect)即开放式系统互连,一般叫OSI参考模型,OSI参考模型是由国际标准化组织 (ISO) 于1984年提出的分层网络体系结构模型, 目的是支持异构网络系统的互联互通。但由于OSI参考模型的标准实在是太严格了,目前还没有完全按照OSI标准设计的网络,理论成功,市场失败。OSI参考模型采用分层设计的方式,将一个复杂的网络问题划分成了多个小的问题。使网络的维护更利于实现、使网络技术更利于更新。OSI给设计网络和网络排错提供了一个非常好的模型和思路——一个完整的应该具备哪些功能?该功能在哪个层次?通过这样的思考方式很容易定位网络的故障。也很容易的来衡量出一个现实的网络是否完善。OSI参考模型将网络按照功能分为7层,每层完成特定的网络功能。如表1-1所示。
层号 | 层名 | 数据的名字 | 功能描述 |
7 | 应用层(Application) | 数据(data) | 提供用户通过用户代理(如浏览器)或网络接口使用网络(服务)如、文件传输(FTP)、电子邮件(SMTP)、Web(HTTP)等。 |
6 | 表示层(Presentation) | 数据(data) | 处理两个系统间交换信息的 语法与语义(syntax and semantics ) 问题,比如对用户数据进行相应的编码、加密/解密、压缩/解压缩等 |
5 | 会话层(Session) | 数据(data) | 对话控制(dialog controlling):建立维护对话、同步(synchronization)数据:在数据流中插入“同步点”。 |
4 | 传输层(Transport) | 数据段(sagment) | 为数据提供一种安全可靠的传输方式,主要做的工作:分段与重组、SAP寻址(确保将完整报文提交给正确进程,如端口号)、连接控制、流量控制、差错控制 |
3 | 网络层(Network) | 分组(packet) | 负责源主机到目的主机数据分组(packet)交付。完成数据在网络中的实际传输,确定地址和最佳路径。逻辑寻址(Logical addressing):封装全局唯一逻辑地址,确保数据分组被送达目的主机,如IP地址;路由(Routing):路由器(或网关)互连网络,确定分组从源主机到目的主机最佳传输路径;分组转发:将分组从路由器的输入端口交换到正确的输出端口。 |
2 | 数据链路层(Data link) | 帧(frame) |
负责 结点- 结点(node-to-node ) 之间的数据传输,使用硬件地址来定位远程主机(物理寻址):在帧头中增加发送端和/或接收端的物理地址标识数据帧的发送端和/或接收端(组帧)。并进行必要的控制: 流量控制(Flow control)——避免淹没接收端 |
1 | 物理层(Physical) | 比特流 | 传输比特流。将链路层的数据用高低不同的电平值表示发送到物理线路上。物理层规定了设备的接口形状、针脚个数、针脚不同电平值的含义。 |
2.2TCP/IP(Internet)参考模型
TCP/IP协议栈是美国国防部高级研究计划局计算机网(Advanced Research Projects Agency Network,ARPANET)及其后继Internet使用的参考模型。从低层到高层依次为:网络接口层(对应OSI参考模型中的物理层和数据链路层)、网际层、传输层和应用层(对应OSI参考模型中的会话层、表示层和应用层)。TCP/IP由于得到广泛应用而成为事实上的国际标准。TCP/IP的层次结构及各层的主要协议如图1.1所示。
2.3五层参考模型
综合OSI和TCP/IP参考模型的优点,我们将七层参考模型中的会话层和表示层的功能由应用层来做,采用五层参考模型来学习计算机网络。五层分别为:物理层、数据链路层、网络层、传输层和应用层。
3、OSI下数据封装与通信过程
在OSI参考模型中主机要完成所有的七层功能,中间系统只需要完成下三层的功能,也就是物理层、数据链路层、网络层。之前也提到了,按照层次结构来看,所有对等层次之间都遵循相关的协议,进行数据交换,也就是说,对应层次之间协议规定了这个层次如何去构造数据,如何去交换数据,但要注意协议画的是虚线,在对等层之间交换的数据并不是物理上直接到达的,只是逻辑上到达对应的对等层。那么物理上真正通信是如何通信的呢?物理上通信怎么说也得通过链路,通过光信号、电信号、或者电磁波,所以物理层最下边是物理介质,物理介质完成物理信号传输。
那么按照OSI参考模型来看,数据是怎么进行通信的呢?比如A主机要发送一个数据给B,主机A的应用层最先处理数据,应用层处理完交给表示层,表示层交给会话层......,一层一层留下来通过物理介质发送到中间系统,中间系统从物理层把数据接收过来,接收以后要把数据进行还原,还原的时候遵循对等层之间的协议,比如中间系统的物理层还原数据时要遵循和主机A的物理层的协议。逐层还原到网络层。网络层明确数据应该在哪一段连路上传输,然后逐层处理交到物理层,传输到主机B,主机B再逐层还原。
注意:图1.2中实线所描述的过程是数据真正流动的方向,OSI参考模型把这个也叫做实通讯(或物理通讯)。那么虚线看到的是对等层之间的通信。协议规定的是对等层之间如何交换数据,比如应用层,在这一层看来,似乎数据是从主机A的应用层直接送到主机B的应用层。举个例子,我给女朋友(-vv-)写信,我写完信邮寄给女朋友,女朋友收到之后回信,看似好像是我直接和女票通信。事实上是我把信加上信封,按照规定(协议)写上邮政编码等信息,然后交给我们那的邮递员,邮递员逐层往下交,然后通过汽车、火车或者飞机等邮寄,邮寄的时候也是每一环节读取信封上的信息确定该往哪发,最后我女票收到信后,打开看信。所以协议是“水平的”,在传输过程中,相邻层之间交换信息是通过接口把数据交给下一层,或者通过接口向上一层提供服务。
我们从图1.2发现OSI上面四个层是和下面三层不太一样,中间系统实现的功能只到第三层,网络层再往上中间系统理论上就不用实现了。也就意味着上面四层直接从源主机对应到目的主机对应层次,这四层协议规定处理的数据直接到目的主机去处理。我们把这四层叫做端到端层(end-end)。
我们假设撇开中间系统,看源主机A到目的主机B的通信,从顶层来看我们是希望源主机A的用户数据送到目的主机B接收,比如一个文件,或一句话。按照OSI参考模型来看,主机A和主机B都需要实现7层功能。
在OSI参考模型看来,数据通信时,是一层一层处理,逐层封装好,在物理上进行实在的传输:从源主机(SOURCE)的应用层发出来的数据是有一定格式的协议数据单元,称为PDU(protocol data unit)。应用层发给下一层表示层后,在PDU前面加上了本层控制信息,也就是图1.3中的AH,加在头部。图1.3中加了头部PH的A-PDU,更新为本层的PDU,也就是要发给第五层会话层的内容。即A-PDU+PH=P-PDU。上一层向下一层发送PDU,逐层加上本层的头部后成为下一层的PDU。直至发到数据链路层,数据链路层还加一个尾部,也就是DT,起到校验作用,如果数据正确,继续传输,数据错误直接丢掉不继续传输。数据链路层发给物理层后,物理层将PDU转换为二进制编码(比特流),通过硬件转换为信号发送出去。这样源主机七层任务完成。
图1.3右侧是目的主机的数据接收过程:接收到硬件的二进制信号后,物理层转换为PDU发个数据链路层。数据链路层拆掉头部和尾部后,将赤裸的PDU送给网络层。网络层再拆掉头部,送入下一层,逐层拆掉头部,到了送给应用层时,前面不同层添加的头部完全被拆干净,留下原本发送的最原始PDU,也就是用户数据。
那么这里就有一个问题,为什么要进行数据封装?回答这个问题之前,先来了解一下加了那么多的头和尾,加的都是些什么内容。我们在构造协议数据单元(PDU)时会在头部增加控制信息,这些控制信息主要包括1)地址(Address):用来标识发送端和接收端,源主机得知道数据往哪发,目的主机得知道数据是谁给发的。2)差错检测编码(Error-detecting code): 用于差错检测或纠正。3)协议控制(Protocol control): 实现协议功能的附加信息,如: 优先级(priority)、服务质量(QoS)、 和安全控制等。