
1.3 网络协议模型
1.3.1 OSI网络协议模型
要保证在复杂网络环境下的可靠工作是很复杂的事情,将各种功能分层处理,各层职责任务明确,能够降低网络系统开发难度,增加其可靠性,基于这样的思想,出现网络的多层结构模型。
在网络中的三个经常提及的基本概念:服务(Service)、接口(Interface)、协议(Protocol),三者关系如图1-13所示,服务是下层提供给上层的功能,接口是上层使用下层功能的使用方式,以各种功能调用的方式使用;协议则是节点间的同层功能间的约定。

图1-13 服务、接口、协议的关系
OSI(Open System Interconnection)是国际化标准组织ISO(International Standard Organization)在网络通信方面所定义的开放系统互连模型,1978 年ISO定义了这样一个开放协议标准。有了这个开放的模型,各网络设备厂商就可以遵照共同的标准来开发网络产品,最终实现彼此兼容。OSI结构如下。
(1)物理层(Physical Layer)
这是整个OSI参考模型的最底层,是整个网络的基础,它的任务就是提供网络的物理连接。物理层建立在物理介质上(而不是逻辑上的协议和会话),它提供的是机械和电气接口。主要包括电缆、物理端口和附属设备,如双绞线、同轴电缆、RJ-45接口、串口和并口等在网络中都是工作在这个层次的。
物理层提供有关数据单元顺序化、数据同步和比特流在物理媒介上的传输手段。
(2)数据链路层(Datalink Layer)
数据链路层是建立在物理传输能力的基础上,以帧为单位传输数据,它的主要任务就是进行数据封装和数据链接的建立。封装的数据信息中,地址段含有发送节点和接收节点的地址,控制段用来表示数据连接帧的类型,数据段包含实际要传输的数据,差错控制段用来检测传输中帧出现的错误。
数据链路层的功能包括:数据链路连接的建立与释放、构成数据链路数据单元、数据链路连接的分裂、定界与同步、顺序和流量控制和差错的检测和恢复等方面。
(3)网络层(Network Layer)
网络层解决的是网络与网络之间,即网际的通信问题,而不是同一网段内部的事。网络层的主要功能是提供路由,即选择到达目标节点的最佳路径,并沿该路径传送数据包。除此之外,网络层还要能够消除网络拥挤,具有流量控制和拥挤控制的能力。网络边界中的路由器就工作在这个层次上,现在较高档的交换机也可直接工作在这个层次上,因此它们也提供了路由功能,俗称“第三层交换机”。
IP地址是网络层的核心,路由器工作是基于节点的IP地址,而不是MAC地址。网络层关注是否找到目标节点(建立连接路径),而报文是否到达目的节点,是否被对方正确接受,则是上一层——传输层所关注的。
网络层的功能包括:建立和拆除网络连接、路径选择和中继、网络连接多路复用、分段和组块、服务选择和流量控制。
(4)传输层(Transport Layer)
传输层解决的是数据在网络之间的传输质量问题,它属于较高层次。传输层用于提高网络层服务质量,提供可靠的端到端的数据传输,如常说的QoS就是这一层的主要服务。这一层主要涉及的是网络传输协议,它提供的是一套网络数据传输标准,如TCP协议。
传输层的功能包括:映像传输地址到网络地址、多路复用与分割、传输连接的建立与释放、分段与重新组装、组块与分块。
(5)会话层(Session Layer)
会话层利用传输层来提供会话服务,会话可能是一个用户通过网络登录到一个主站,或一个正在建立的用于传输文件的会话。
会话层的功能主要有:会话连接到传输连接的映射、数据传送、会话连接的恢复和释放、会话管理、令牌管理和活动管理。
(6)表示层(Presentation Layer)
表示层负责在不同的数据格式之间进行转换操作,以保证一个系统应用层发出的数据能被另一个系统的应用层读出,从而实现不同计算机系统间的信息交换。如果通信双方用不同的数据表示方法,它们就不能互相理解。表示层就是用于屏蔽这种不同之处。
表示层的功能主要有:数据语法转换、语法表示、表示连接管理、数据加密和数据压缩。
(7)应用层(Application Layer)
这是OSI参考模型的最高层,它解决的也是最高层次,即程序应用过程中的问题,它直接面对用户的具体应用。应用层包含用户应用程序执行通信任务所需要的协议和功能,如电子邮件和文件传输等,在这一层中TCP/IP协议中的FTP、SMTP、POP等协议得到了充分应用。
ISO/OSI模型是一个理论模型,在实际网络系统中都遵循分层思想,但与之不尽相同。最具影响力和应用最广泛的是TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/互联网协议)模型,TCP/IP 由四个层次组成:网络接口层、 网间网层、传输层、应用层,互联网层下面的网络接口层,TCP/IP并没有真正描述,只是指出主机必须使用某种协议与网络连接。TCP/IP与ISO/OSI模型的对应关系如图1-14所示。

图1-14 TCP/IP与ISO/OSI模型的对应关系
1.3.2 数据链路层与数据封装
数据链路层是OSI模型的第2层,该层协议处理两个由物理通道直接相连的相邻节点之间的通信,保证其点到点(或点到多点)的正确传输。
数据链路层协议提高数据传输的效率,为其上层提供透明的无差错的通道服务,让高层协议免于考虑物理介质的可靠性问题,而把通道看做无差错的理想通道。
数据链路层的主要功能有:数据链路的建立、维护和拆除;数据成帧(信息格式、数量、顺序编号);收发同步、收发确认、收发流量调节;传输差错控制,包括防止信息丢失,重复和失序的方法。检测差错一般采用循环冗余(CRC)等校验,纠正差错采用计时器恢复和自动请求重发等技术。
一个报文是由若干个字符组成的完整的信息。直接对冗长的报文进行检错和纠错,不但原理和设备十分复杂,而且效率很低,往往无法实际采用。通常把报文按照一定要求分块,每个块加上一定的头信息,指明该块的源地址和目的地址、属于哪个报文、是该报文的第几个块,是否属于报文的第一个或最后的子块。这样的块称为包或分组(packet)。
在相邻两点间(或主机与节点间)传输这些包时,为了差错控制,还要加上一层 “封皮”,就构成了帧(frame)。这层封皮分头尾两部分,把数据包夹在中间。当帧从一个节点传到另一个节点后,帧的头尾被用过后取消,数据包的内容原封不动。若收到帧的节点还要把该包传至下一节点,另加上新的头尾信息。因此,帧是数据链路层的传输单位。数据链路层协议又称为帧传送协议。
数据链路是在两个网络节点之间保证数据正常交换的通路,相邻节点间传输一个帧可能出现的差错有位出错、帧丢失、帧重复、帧顺序错等。
链路层协议要针对这些情况加以解决,保证所传送信息在内容上、顺序上都正确。位出错的分布规律及出错位的数量很难限制在预定的简单模式之中,一般采用漏检率极其微小的CRC检错码再加反馈重传的方法解决。帧丢失是通信线路受较长时间的连续干扰,通信设施的瞬间失效或通信双方失去同步造成的,而帧重复和帧顺序错则是反馈重传方法带来的副作用。为了发现帧丢失、帧重复及帧顺序错等错误,通常采用给帧进行编号来解决。
发送方数据链路层的具体工作是接收来自高层的数据,并将它加工成帧,然后经过物理通道将帧发送给接收方。帧包含头、尾,控制信息、数据、校验信息等部分,校验信息、头、尾部分一般由发送设备的硬件实现,数据链路层不必考虑其实现方法。当帧到达接收站时,首先检查校验信息。若校验信息错,则向接收计算机发出校验信息错的中断信息;若校验信息正确,确认无传输错误,则向接收计算机发送帧正确到达信息;接收方的数据链路层应检查帧中的控制信息,确认无误后,才将数据部分送往高层。
数据的正确性检查工作主要在第二层——数据链路层完成,针对校验没能够发现的错误,在网络的上层也会发现其含义的错误。
另外,物理连接与数据链路连接是有区别的。数据链路连接是建立在物理连接之上的。一个物理连接生存期间允许多个数据链路生存期。数据链路连接释放时,物理连接不一定要释放。
IEEE 802委员会将OSI参考模型中数据链路层细分为介质访问控制(MAC)层、逻辑链路控制(LLC)层两个子层。
MAC子层主要负责对总线的“交通”管理,总线占用情况监控、奇偶校验等,CSMA/CD就是MAC功能。
与媒体接入无关工作的功能都放在LLC子层。如上层数据的成帧,收发帧的差错控制(校验位、自动重复、缓存),帧的接受,上层服务请求。
在LLC 子层的上面看不到具体的局域网,即局域网对LLC子层是透明的。只有在MAC子层才能看见所连接的是采用什么标准的局域网。
LLC层协议定义了对等LLC层实体之间进行数据通信的服务规范,提供了两种服务:不确认无连接服务和面向连接的服务,并且还定义了网络层与LLC层接口和LLC层与MAC层接口。
LLC子层帧结构主要包含 DSAP、SSAP、Control、Information字段,其中DSAP(Destination Service Access Point目的访问服务点,8位比特)字节和SSAP(Source Service Access Point源访问服务点,8位比特)字节,用以标示上层协议。有了SAP,节点就能在LLC层只用一个接口同时服务于几个高层协议。Control为8或16位比特的控制字段,Information为传输的真正内容。
图1-15给出数据在网络传输时的封装过程,发送方应用层数据向下层层封装,并可能形成分组报文,各个分包加上该层的报文头和报文尾。在接收端的处理是相反的过程,应用程序就会得到对方正确的数据。可以看出,LLC头不是被再次封装在里面,而是根据局域网的具体形式(CSMA/CD、令牌总线等)被翻译为MAC头,最后以二进制码发送。

图1-15 数据的封装过程
1.3.3 各种控制网络与OSI对照
对于工业控制网络而言,单个节点的监控信息量不大,而实时性要求较高,所以很少有完全采用OSI七层协议的应用,都是在OSI的模型基础上进行了简化。而且由于控制网络的结构相对简单,不是真正意义上的不规则网络,多采用总线结构或在总线结构基础稍做变形,所以OSI中的3~6层一般在控制网络中都被省去。图1-16是各种最为常见的控制网络与OSI的对应关系,其中Modbus只是应用层的协定,CAN只提供物理层和数据链路层的功能。

图1-16 各种现场总线与OSI的对应关系