物理层为通信双方定义了字节书写模式,铺就和建立了传输信息的介质通道。数据链路层就用字节构建出各种通信语句,通信语句又被称为信息帧,简称为“帧”。
数据链路层是OSI参考模型的第二层,它介于物理层和网络层之间,是OSI模型中非常重要的一层。设立数据链路层的主要目的是将一条原始的、有差错的物理线路变为对网络层无差错的数据链路。为了实现这个目的,数据链路层必须执行链路管理、帧传输、流量控制、差错控制等功能。
数据链路层所关心的主要是物理地址、网络拓扑结构、线路选择和规划等。
物理连接和数据链路连接是有区别的:数据链路连接是建立在物理连接之上,一个物理连接生存期间允许有多个数据链路生存期,并且数据链路释放后物理连接不一定要释放。
数据链路层依靠物理层的服务来传输帧,实现数据链路的建立、数据传输、数据链路释放以及信息帧的发送过程流量控制和差错控制等功能,为网络层提供可靠的结点与结点间帧传输服务。
数据链路层通信协议和帧如图7-11所示。
图7-11 数据链路层通信协议和帧
在图7-11中,我们可以看到物理层已经为通信双方建立了通信通道,于是主站和从站之间的信息发送就靠数据链路层的通信协议——帧来完成的。
帧由帧头、控制命令、数据、校验和及帧尾构成。当主站向从站下达命令时需要发送命令信息帧,而从站向主站交换信息时也以信息帧的形式发送数据。
MODBUS通信协议是一种工作在数据链路层上的一种通信规约。
MODBUS通信协议需要解决的问题是:
(1)链路管理
由于通信链路只有一条,因此通信双方必须解决通信链路的占用问题。链路管理为通信双方建立链路联结、维持和终止数据传输给出具体操作协议和执行标准。
(2)装帧和同步
数据链路层的数据传输以帧为单位,帧被称为数据链路协议的数据单元。数据链路层负责帧在计算机之间无差错地传递。
数据链路层需要解决帧的破坏、丢失和重复的等问题,要防止高速的信息发送方的大量数据把低速接收方“淹没”,也即流量控制调节问题。
数据链路层还需要解决发送方的命令帧与接收方的响应帧竞争线路的问题。
信息帧还可以对帧本身进行打包。为了确保相邻两结点之间无差错传送,数据链路层有时还对数据包实施分组后另加一层封装构成信息帧。
数据包每经过网络中的一个结点都要完成帧的拆卸和重新组装:在验证上一条链路无差错传送之后,拆去包装取出数据包,再加上新的帧头和帧尾构成新帧后往下一个结点传送数据。(www.xing528.com)
帧的打包方式有4种:
1)字符计数法。在帧的开头约定一个固定长度的字段来标明该帧的字符个数。接收方可以根据该字段的值来确定帧尾和帧头。
2)首尾界符法。在帧的起始和结束位置分别用开始和结束字符标记。
3)首尾标志法。在帧开始和结束处,分别用一位特殊组合信息来标志帧的开始和结束。
4)物理层编码违例法。在帧的开始和结束处分别用非法编码系列作为标志。
(3)寻址
通信链路上存在多套从站,因此通信协议必须解决多从站的访问问题。
(4)纠错
速度匹配问题和差错控制,包括传输中的差错检测和纠正。
常用的检错码有两类:奇偶校验码和循环冗余码。奇偶校验码是最常见的一种检错码,虽然很简单,但检错能力较差,只能用于一般通信要求低的场合。MODB-US使用的是CRC检错码属于循环冗余码。CRC验错方法说明见图7-12。
CRC(Cyclie redundancy code,循环冗余校验码)检错方法是将要发送的数据比特序列当作一个多项式f(x)的系数,在发送方用约定的生成多项式G(x)去除,求得一个余数多项式R(x),将余数多项式加在数据多项式的后边一同发送给接收端;接收端用同样的生成多项式G(x)去除接收端数据多项式f′(x),得到余数多项式R′(x);若R′(x)=R(x)表示传输无差错,反之表示有差错并要求发送端重发数据,直至正确为止。
图7-12 CRC验错方法的说明
在MODBUS通信协议中使用CRC16=X16+X15+X2+1作为生成多项式。
CRC码检错能力强,实现容易,是目前应用最广泛的检错码编码方法之一。
数据链路层的相关设备是:网络接口卡及其驱动程序、网桥、二层交换机等。
通信只能由主站主动发起并传送给从站。若主站发出的是广播命令,则从站不给予任何回应;若主站发出的是行动命令,则从站必须给予回应。从站的回应中包括描述命令执行域信息、数据表以及错误检验域信息;若从站不能执行该命令,则从站将建立错误消息并作为回应发送回去。
自主站发至从站的信息报文称为命令或下行通信帧,而自从站发至主站的信息报文则称为响应或上行通信帧。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。