从DNP3协议看 数据链路层

293 阅读3分钟

“我正在参加「掘金·启航计划」”

DNP (Distributed Network Protocol,分布式网络规约) 是一种应用于自动化组件之间的通讯协议,常见于电力、水处理等行业。SCADA 可以使用 DNP 协议与主站、RTU、及 IED 进行通讯。 涉及.数据链路层.传输层.应用层

起始字起始字长度链路层控制字目的地址源地址CRC校验码用户数据CRC校验码...用户数据CRC校验码
0x050x64长度链路层控制字两个字节两个字节CRC校验码
  1. 起始字(2字节)

2字节 0564

  1. 长度(1字节)

链路层控制字到用户数据 255>=长度>=5

  1. 功能码
    对于原发送方的帧

0 使远方链路复位 1 使远方进程复位 3 发送用户数据,须对方确认 4 发送用户数据,不许对方确认 9 询问链路状态

对于从方发送帧

0 肯定确认 1 否定确认 11 回答链路状态

  1. 目的地址(2字节)

低字节在前

  1. 源地址(2字节)

低字节在前

  1. CRC校验码(两个字节)

  2. 用户数据

跟在报头之后的数据块,每16个字节一块,最后一个块包含剩下的字节。每个数据块都有一个CRC循环冗余码挂在后面。


1 使用信道

1.1 点对点信道

使用一对一点对点通信方式。

1.2 广播信道

这种信道采用一对多的广播通信方式。

  1. 模型
        电话网           局域网           广域网           局域网    
主机H1 --------> 路由器 --------> 路由器 --------> 路由器 --------> 主机H2
H1                R1               R2               R3              H2
应用层                                                             应用层
运输层                                                             运输层
网络层           网络层           网络层           网络层           网络层           
链路层           链路层           链路层           链路层           链路层
物理层           物理层           物理层           物理层           物理层

不同的链路层可能采用不同的数据链路层协议

3 数据链路和帧

3.1 链路

一条无源的点到点的物理线路段 没有其他交换结点 一条链路只是一条通路的一个组成部分

3.2 帧

4 重点

4.1 封装成帧

SOH数据EOT
StartOfHeader数据EndOfTransmission
帧开始符数据帧结束符

特殊的字符作为帧定界符,dnp中0564

4.2 透明传输

如果数据中的代码正好和SOH或EOT一样,数据链路层就会找到错误地"帧的 边界"

解决方案:【字节填充法】假如转义字符。在数据送往网络层之前删除转义字符。

【字符填充法】

【?】转义字符dnp3中没有定义

4.3 差错控制

传输过程中可能发生比特差错

解决方案:各种差错检测措施 【CRC循环冗余校验】

ps:在一段时间内,传输错误的比特占所传输总数的比率称为误码率BER(Bit Error Rate)。