良许Linux教程网 干货合集 通信教程 | 概述通信协议

通信教程 | 概述通信协议

通信协议是指通信计算机双方必须共同遵守的一组约定。这些约定规定了如何建立连接、如何相互识别等,只有在遵守这个约定的情况下,计算机之间才能进行相互的通信和交流。

在通信领域,有许多常见的协议,例如串口协议、Modbus协议、CAN协议、TCP/IP协议等。

通信协议是一个很广义的概念,在OSI模型中(包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层),每一层都有对应的协议。我们所提到的串口、Modbus、CAN等协议则对应于不同的层次。

对于很多初学者来说,对于通信协议的概念可能不太理解,觉得它很高深、很复杂。但是,为了更好地理解通信协议,建议结合一些实际的例子来进行学习。

  1. UART通信协议

UART全称为通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常被称为串口通信,是通信中最常见的一种协议。

image-20231112200054038
image-20231112200054038

1.串口底层协议

如上图,假如设备A发送一个字符给设备B,需要规定启始位、数据位、校验位、停止位以及波特率等。这些约定就是串口通讯的协议。

另外,传输的线路是通过TTL、232还是485,也是需要通讯双方(设备A和设备B)约定的,严格来说也属于一种协议。

我们这里把这些约定统称为物理层协议,或者说底层的协议。

2.串口上层协议

串口通信不像http通信那么复杂,我这里说的简单点,就是底层协议和上层协议。

基于串口的应用层协议很多,自定义应用协议、通用协议等。

自定义应用协议

比如:你买一个温度传感器模块,自定义协议:固定长度3字节。

image-20231112200100679
image-20231112200100679

这是一个很简单的自定义协议,当然,实际应用中自定义协议一般比这个更复杂,比如多一些标志:命令、数据长度、校验信息等。

通用协议

比如:Modbus、MAVLink等这些都是基于串口的应用层协议。

如果只是做应用,我们不必深究通用协议的原理,掌握如何使用,能正确传输数据就行(当然,一些基本原理还是要懂)。

3CAN通信协议

之前写过一些《CANOpen系列教程》,很多人第一步就蒙了,什么是CAN 2.0协议,什么是CANOpen协议?

看了上面串口的解释,现在你是不是要清晰一点了呢?

CAN 2.0属于一种协议,CANOpen也是一种协议,这两种协议是各自独立的协议。

1.CAN底层协议

CAN 2.0协议属于物理层的协议,分为CAN 2.0 A版本和B版本协议。

前几年引入了新的CAN FD协议,这个协议可以理解为CAN协议的升级版,都属于物理层协议。

2.CAN上层协议

基于物理层CAN之上的协议,比如:CANopen、J1939、DeviceNet等。这些协议属于应用层协议。

应用层协议一般都是指的软件,里面的一些内容也是标准协会进行约定的(比如CANOpne里面的对象字典、PDO、SDO等),大家都按照这个约定进行通信。

4网络通信协议

网络通信是生活中常见的一种,我们要上网,就必须要有网络,我们需要的数据通过多层协议,最终才能完成传输。

image-20231112200104682
image-20231112200104682

网络通信是一个比较大的概念,包含的协议种类繁多,对于大部分开发人员来说,只需要掌握基本原理,学会调用相应接口开发自己应用程序即可。

做硬件开发的需要网线电平信号、接口含义等,做应用的需要了解TCP、UDP通信方式区别等。

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部