1.3 网络参考模型基础
1.3.1 网络参考模型的意义
在网络刚刚问世时,只有同一个厂商生产的设备之间才能够通信。例如,设备使用者要么采用DECnet解决方案,要么采用IBM解决方案,两个厂商的设备之间无法互相通信。20世纪70年代末,为了打破这种界限,ISO(International Organization for Standardization,国际标准化组织)开发了OSI参考模型(Open System Interconnection Reference Model,开放系统互联参考模型)。
OSI参考模型的宗旨是帮助厂商生产可互相通信的网络设备和软件,让采用不同厂商生产设备的网络能够协同工作。OSI参考模型是主要的网络架构和通信模型,描述了数据和网络信息如何通过网络介质从一台计算机的应用程序传输到另一台计算机的应用程序,OSI参考模型对网络通信工作进行了分层。
为什么需要一个网络模型呢?
举个例子,假如需要完成一个项目,首先需要做的事情之一就是坐下来考虑下述问题:需要完成哪些任务、由谁来完成、按什么样的顺序完成,以及这些任务之间的相互关系。最终,任务会分派给各个部门,每个部门都分别完成自己的任务,虽然部门间是独立的,但同时也是相互合作的。
在这个案例中,部门就相当于通信系统中的层,为确保业务的正常运行,每个部门都必须信任其他部门,这样才能完成工作。在规划过程中,可能会将整个流程记录下来,以方便讨论操作标准,而操作标准将成为业务蓝图(参考模型)。
1.3.2 OSI参考模型
OSI参考模型是层次化的,具有分层模型的所有优点。OSI参考模型的主要目的是让不同厂商的设备能够互相通信。
1.使用OSI参考模型的主要优点
① 降低复杂度:由难到简。
② 标准化端口:网络组成部分标准化,多厂商开发和支持。
③ 便于模块化设计:允许不同类型的网络硬件和软件相互通信。
④ 技术的互操作性:分层次的设计防止某层的变化影响其他的层次。
⑤ 简化网络教学。
OSI参考模型将网络分为7层,表1-2描述了OSI参考模型各层功能。
表1-2 OSI参考模型各层功能
2.OSI参考模型每层功能详细说明
(1)物理层
物理层有两项功能:发送和接收比特流。比特的取值只能为0和1,使用数字值的莫尔斯电码。物理层实现了逻辑上的数据与可以感知和测量的光/电信号之间的转换。
(2)数据链路层
数据链路层提供数据的物理传输并进行错误通知、链路管理和流程控制。数据链路层使用硬件地址确保报文被传输到局域网中的正确设备,将来自网络层的报文转换为比特流通过物理层传输。在数据链路层会将报文封装成数据帧,并根据数据链路层封装协议添加帧信息,封装为对应的帧格式。通过数据帧中携带的信息可以标识物理设备的来源和目的地,同时工作在数据链路层的设备,可以通过这些信息实现数据帧的转发和过滤。
(3)网络层
网络层负责管理设备编址、跟踪设备在网络中的位置并确定最佳的数据传输路径。网络层只在位于不同网络中的设备之间传输数据流。工作在网络层的协议有很多,如IP、IPX、CLNP和Appletalk等。目前的网络层通信协议就是我们熟悉的IP。IP有两个版本,分别是IPv4和IPv6。
(4)传输层
传输层将数据进行分段并重组为数据流,位于传输层的服务将来自上层应用的数据进行分段和重组并将它们合并到同一个数据流中,传输层提供了端到端的数据传输服务。TCP和UDP工作在传输层,TCP是一种可靠协议,在传输数据前需要先建立连接,同时通过序列号、确认机制及重传机制保证数据的可靠性。而UDP 是一种不可靠协议,传输数据前不需要建立连接,只负责数据发送,不能确保数据正确地被接收。TCP虽然是可靠的,但是需要为可靠性机制付出更大的带宽开销;UDP虽然是不可靠的,但是可以节省带宽(因为它的报头更小)。
(5)会话层
会话层负责在表示层之间建立、管理和终止会话,还对设备或节点之间的对话进行控制。比如操作系统就是会话层。
(6)表示层
表示层向应用层提供数据,并负责数据转换、编码和解码工作。从本质上来说,表示层是一个转换器,提供编码和转换功能。一种成功的数据传输方法会先将数据编码再进行传输,接收者收到数据后将数据解码以便读取。例如,上网时浏览网页、看视频、听音乐,这些数据都是在网络上一起传输的,那系统如何区分这些不同的数据呢?这就需要编码,不同的数据格式用不同的编码格式来封装,接收者收到数据后再通过解码来还原数据,交给对应的应用程序来处理,这样就实现了对数据的区分。
(7)应用层
应用层为应用程序提供了网络端口,如HTTP、Telnet、SMTP、POP3、DNS等应用程序。
发送者在发送数据时就好比给礼物打包装一样,数据发送者将数据从高层向底层进行数据封装,每经过一层就增加一层头部,在到达数据链路层后不仅要增加一层头部,还需要再追加一个FCS尾部,目的是校验数据帧头的完整性。OSI参考模型发送方数据封装流程如图1-18所示。
接收者收到数据后,首先对数据帧头进行校验,校验数据帧在传递过程中是否被破坏过,如果校验结果不一致则丢弃数据帧;如果结果一致,则接收者对数据进行解封装操作,解封装的顺序是从底层向高层解封装。OSI参考模型接收方数据解封装流程如图1-19所示。
图1-18 OSI参考模型发送方数据封装流程
图1-19 OSI参考模型接收方数据解封装流程
1.3.3 TCP/IP参考模型
TCP/IP(Transmission Control Protocol/Internet Protocol)参考模型诞生于20世纪的70年代,它是当下实际的业界标准。TCP/IP被IETF不断地充实和完善,TCP/IP模型、TCP/IP功能模型、TCP/IP协议模型、TCP/IP协议簇、TCP/IP协议栈等说法经常被混用。TCP/IP这个名字来自该协议簇中两个非常重要的协议,一个是IP(Internet Protocol),另一个是TCP(Transmission Control Protocol)。
图1-20所示为TCP/IP参考模型与OSI参考模型对比,TCP/IP参考模型将网络分为四层,其中“网络访问层”对应的是OSI参考模型的数据链路层和物理层,并将OSI参考模型的会话层、表示层和应用层合并为“应用层”。TCP/IP模型可以说是四层也可以说是五层,五层的TCP/IP参考模型使用最为广泛。
图1-20 TCP/IP参考模型与OSI参考模型对比
在OSI参考模型中,习惯把每层的数据单元都称为“协议数据单元(Protocol Data Unit,PDU)”,PDU是每一层的单位。例如,第六层的数据单元称为L6 PDU,第三层的数据单元称为L3 PDU,其中L代表“层”。
在TCP/IP参考模型中,习惯将物理层的数据单元称为“比特(bit)”,把数据链路层的数据单元称为“帧(Frame)”,把网络层的数据单元称为“分组或包(Packet)”。对于传输层,习惯将通过TCP封装的数据单元称为“段(Segment)”,即“TCP段(TCP Segment)”。对于应用层,通过HTTP封装的数据单元被称为“HTTP报文(HTTP Datagram)”,通过FTP封装的数据单元被称为“FTP报文(FTP Datagram)”,以此类推。
TCP/IP参考模型封装数据的流程与OSI参考模型封装数据的流程一致,发送方从高层向底层封装数据,接收方收到封装数据后,从底层向高层解封装数据,将解封装后的数据交给应用层处理。