协议之浅谈

1.什么是通信协议?

2.串行Serial,并行 parallel通信区别?

3.同步synchronous,异步asynchronous的区别?

4.单工(Simplex),半双工(Half Duplex),全双工(Full Duplex)的区别?

5.波特率,比特率区别?

1. 什么是通信协议?

协议是通信双方为实现通信而设计的约定或通话规则。

我们常用的协议一般都得到了行业和专业组织或者标准化组织的认可,那么就成为了一个“行业标准” 。

简单说,就是通信的双方要约定 1、 0序列代表什么含义,就像可以用“ 三长两短” 代表危险一样。 如果我们是自己使用两片单片机进行通信,那么我们爱怎么规定数据流的含义就怎么规定,谁也管不着。但是,自定义的通讯协议有两个缺点。

1. 自编通讯协议的效率不高,会有 bug。成熟的通讯协议都是人类智慧的结晶。

2. 不是通用协议的话,不能与“ 别人” 进行通信。协议这个东西,和霸王条款差不多。

3. 成熟的通信协议有相应的硬件支持,可以在通信时减轻 CPU的负担,增强性能

2. 串行Serial,并行 parallel通信区别?

最基本的原理来讲: 串并信号转换的核心单元就是数字电子技术中的移位寄存器。串行数据, 移位寄存后,统一送出,就完成串入转并出。并行数据经移位寄存器依次送出,也就完成了并入串出的原理

2.1.1 串行特点:

  1. 串行数据传输时,数据是一位一位地在通信线上传输的。串行接口,简称串口。也称com接口。
  2. 传输速率较并口低,不过现在有办法把串行通信的速度提升到非常高的水平。
  3. 通信成本较低:只需一个信道。
  4. 支持长距离传输:比如计算机网络。

2.1.2 串行通信需要几根数据线?

行是不是只需要 1根线就行呢?当然有这种情况,比如,海上用信号灯的亮灭来传递信号(通信距离 3-4海里)。 1根线通信最大的问题就是慢,非常慢,虽然串行通信是为了省信号线,但也不意味着光省钱不用过日子了。所以,适当增加信号线,可以在性能和价钱上找到一定的平衡点,即性价比。

  1. 1线通信(如:One-Wire BUS)。只有 1根信号线进行通信的情况称为 1线通信, 这种通信显然是异步通信, 最多是半双工。 很多自然界信号的变化是非常缓慢的,所以一些传感器可以使用 1线通信。 例如测温, 称重, 不需要 太高的通信速率。对比前面提到的并行通信,可以想象1线通信会有多慢。在真正传输 “ 有用信号前” , 需要先确定信号的流向(读还是写)。由于没有同步时钟,每1位数据的间隔必须足够大以容忍时钟 的频差和相差。 1线通信器件多机连结图如下:

  2. 2线通信(uart , iic)。当增加一根信号线时,我们就有了 2种选择。

    选择一:可以加一根同步时钟线,这样一来,虽然也得麻烦地判断信号流向,但是每位数据的间隔可以很小(波特率高)。如下图中:2线同步通信的多机连接, 1根线为公共时钟线,由主机控制。另一根线为双向数据线,由数据发送方控制。哪台设备当主机,谁发送数据则由一整套通信协议规范来实现.

    选择二: 增加数据线, 一根负责收, 一根负责发, 构成全双工通信, 这样也能成倍提高效率, 如下图所示,收发端的数据方向恒定不变,两设备交叉连线。

  3. 3线通信(spi)。有了 3根线,就可以有 1根时钟线, 1根数据发送线, 1根数据接收线了。这样的速度又可以加快了。如下所示,需规定主机从机,同步时钟由主机控制。

总结:全双工时,往往不宜多机对等通信, 最多是 1主多从( 除非给每个主机增加使能控制线)。 而半双工时, 则很容易“ 并联”成多机通信,通过总线仲裁和地址广播等办法来实现任意设备之间的通信。

2.1.3 串行通信协议的分类:

我们常见的串行通信协议有 UART、 SPI、 I2C,为什么会有UART、 SPI、 I2C这 3种典型的串行通信呢?

  1. 先看同步还是异步。同步通信多一根时钟线,通信速度高、误码率低。而异步用的线少。
  2. 全双工还是半双工。 全双工的速度快, 但是不方便多主机通信。 大家可以试试收发两根数据线, 怎么去多主机完全对称的连接。而就一根数据线的半双工通信,所有设备不分主从的都并联连上就行。

UART、 SPI、 I2C实际就是上面两个因素取部分优点的结果。

  1. 两线:异步+全双工=UART=慢+不能多主机
  2. 三线:同步+全双工=SPI=快+不能多主机(再加数据线才行)
  3. 两线:同步+半双工=I2C=慢+可以多主机

2.2.1 并口特点:

1. 并行通信传输中有多个数据位,同时在两个设备之间传输。发送设备将这些数据位通过对应的数据线传送给接收设备,还可附加一位数据校位。并行接口,也叫并口,也称LPT接口。

2. 传输速率快:标准并口传输速率为1Mbps

3. 通信成本较高:每一个位就需要一个信道,传输一个字符需要8个信道。

4. 适合短距离传输,不适合长距离传输:如计算机内部总线。

2.2.2 并行通信需要几根数据线

一种并行通信的硬件接口如上图,它由以下几部分组成:

  1. 时钟 CLK。为什么要有时钟呢?因为有时钟才能知道数据什么时候已经被更新,可以读取下一批数据。任何通信都需要有时钟, 区别在于是公共的同步时钟还是各自的异步时钟。并行通信是高速通信,一般都有同步时钟。
  2. 数据 D0-D7。并行通信与串行通信最大的区别就在于每个时钟 CLK传输的数据是1位(串行)还是多位(并行)。图中的数据线是8位,说明每个时钟可以传输 1字节( 8位)数据。可不可以有更多的数据位呢?当然可以,16位、 32位数据线在高速缓存接口中使用。 对于传输彩屏显示数据, 24位数据线使用最多,红绿蓝三色各占用8位,最终构成24位真彩色( 16.7M色)。
  3. 读写控制位 R/W。在并行通信中,一般不会同时要求高速双向通信,那样的话就必须读写各安排 N条数据线。所以,在读写共用数据线的情况下,需要有一个控制位来决定数据流的方向。
  4. 数据地址控制位 D/A。 并行通信往往是直接往存储单元中读写数据, 因此在传输数据时, 必须知道读写数据的地址。那么增加一个读写控制位可以确定本次数据是地址还是数据。在传输彩屏显示数据中, 读写的地址往往是连续的( 俗称刷屏),也就是写一次地址然后连续的刷N个数据。 所以没有必要占 用24位高速数据线来传输地址。在这种情况下,地址的读写往往用串行数据接口独自完成(一般为 SPI)

2.2.3 并口行通信协议的分类:

6800又叫moto总线,8080总线又叫Intel总线。

具体见 我的博文 《协议之常见接口概述》

2.3 . 总结:

- 通俗地讲,并行传输的通路犹如一条多车道的宽阔大道,而串行传输则是仅能允许一辆汽车通过的乡间公路。

- 从原理来看,并行传输方式其实优于串行传输方式。

- 从技术发展的情况来看,串行传输方式大有彻底取代并行传输方式的势头,USB取代IEEE 1284,SATA取代PATA,PCI Express取代PCI……主要由于其通信成本低,支持长距离传输。

3. 同步synchronous,异步asynchronous的区别?

异步通信, 是指通信双方按照事前约定好的时钟速率(波特率)来进行通信,因为没有公共的时钟线,所以通信双方的数据必须“ 整齐划一”。 所以, 异步通信数据流应该是( a)。 而同步通信的双方拥有公共时钟, 按时钟信号来更新数据,所以数据流不一定要“ 整齐划一”

3.1 异步通信

  • “异步通信”是一种很常用的通信方式。异步通信是指通信中两个字符之间的时间间隔是不固定的,而在一个字符内各位的时间间隔是固定的。
  • 异步通行中有两个比较重要的指标:字符帧格式和波特率。数据通常以字符或者字节为单位组成字符帧传送。
  • 字符帧由发送端逐帧发送,通过传输线被接收设备逐帧接收。发送端和接收端可以由各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立,互不同步。

传输方式

串行异步通信方式是以字符为单位进行传输的,异步通信所采用的数据格式是以一组可变“位数” 的数组成的。第一位称起始位,它的宽度为1bit,低电平;接着传送一个数据5~8bit,以高电平为“1”,低电平 为“0”;在传输时,按低位在前,高位在后的顺序传送。也可有一位奇偶校验位;后是停止位,宽度可以是1bit、1.5bit或2bit,在两个数据位之间可有空闲位。

3.2 同步通信

  • “同步通信”是一种连续串行传送数据的通信方式,通信双方有公共的时钟线。
  • 同步通信把许多字符组成一个信息组,或称为信息帧,每帧的开始用同步字符来指示。由于发送和接收的双方采用同一时钟,所以在传送数据的同时还要传送时钟信号,以便接收方可以用时钟信号来确定每个信息位。
  • 同步通信传送信息的位数几乎不受限制,通常一次通信传的数据有几十到几千个字节,通信效率较高。但它要求在通信中保持精确的同步时钟,所以其发送器和接收器比较复杂,成本也较高,一般用于传送速率要求较高的场合。

    传输方式

    同步通信方式在每个数据前后不加起始位和停止位,而是将数据顺序连接起来,以一个数据块为传输单位,每个数据块附加一个或二个同步字符,最后 以校验字符结束。同步通信速率很高,因此适用于传送信息量大,要求传送速率很高的系统中。

总结:

  • 从以上叙述可以看出,在异步通信中,每接收一个字符,接收方都要重新与发送主同步一次,所以接收端的同步时钟信号并不需要严格地与发送方同步,只要它们在一个字符的传输时间范围内能保持同步即可,这意味着随时钟信号漂移的要求要比同步信号低得多,硬件成本也要低的多,但是异步传送一个字符,要增加大约20%的附加信息位,所以传送效率比较低。
  • 异步通信方式简单可靠,也容易实现,故广泛地应用于各种微型机系统中

4. 单工(Simplex),半双工(Half Duplex),全双工(Full Duplex)的区别?

  1. 能同时收发就是全双工,比如打电话,双方可以“ 对吼”。

    结构:

    数据的发送和接收分别由两根传输线传送,通信双方都能在同一时刻进行发送和接收操作。通信双方的每一端都设置了发送器和接收器,能够同时控制数据在两个方向的传送。全双工方式无须进行方向的切换,避免了时间延迟。这种方式要求通信双方均有发送器和接收器,并需要两根数据线传送数据信号。

  2. 数据能收能发,但要分时进行就是半双工,比如对讲机。一方按下按键,只能说话(发送数据),另一方只能收听。 当一个人说完必须加一句“over”, 然后就得松开按键( 接收数据), 对方听到“ over” 知道对方讲完了,这时才能按下按键说话(发送数据)。

    结构:

    使用同一根传输线对数据进行接收和发送,数据可以在两个方向上传送,但通信双方不可以同时发送数据,这样的传输方式就是半双工制。采用半双工方式时,通信系统每一端的发送器和接收器通过收/发开关转接到通信线上,进行方向的切换,这样会产生时间延迟。

  3. 只能单向通信就是单工了,比如广播,播音员播音时(发送数据),听众永远只能是听众。

    结构:

    单工通信使用一根导线,信号的发送方和接收方有明确的方向性,即方向只在一个方向上进行。

总结:

  • 在计算机网络中主要采用双工方式
  • 其中:局域网采用半双工方式,城域网和广域网采用全双工方式。

5.波特率,比特率区别?

5.1 比特率

- 在数字信道中,比特率(Bit Rate)是数字信号的数据传输速率,它用单位时间内传输的二进制代码的有效位(bit)数来表示,又称码率、数据带宽。其单位为每秒比特数bit/s(bps)、每秒千比特数(Kbps)或每秒兆比特数(Mbps)来表示(此处K和M分别为1000和1000000,而不是涉及计算机存储器容量时的1024和1048576)。

5.2 波特率

  • 波特率(Baud Rate) 指数据信号对载波的调制速率,它用单位时间内载波调制状态(调制参数)改变次数来表示,通常以“波特每秒”(Bps)为单位 。
  • 当要将数据进行远距离传送时,往往是将数据通过调制解调技术进行传送的,即将数据信号先调制在载波上传送,如QPSK、各种QAM调制等,在接收端再通过解调得到数据信号。数据信号在对载波调制过程中会使载波的各种参数产生变化(幅度变化、相位变化、频率变化、载波的有或无等,视调制方式而定)。
  • 调制解调:调制是将各种数字基带信号转换成适于信道传输的数字调制信号(已调信号或频带信号);解调是在接收端将收到的数字频带信号还原成数字基带信号,解调则是相反的过程。

    根据所控制的信号参量的不同,调制可分为: 调频、调幅、调相。

5.3 相互关系

  • 在数据调制中,数据是由符号组成的,随着采用的调制技术的不同,调制符号所映射的比特数也不同。
  • 符号又称单位码元,它是数字信道中传送数字信号的一个波形符号。(一个单元传送周期内的数据信息。)
  • 如果一个单位码元对应二个比特数(一个二进制数有两种状态0和1,所以为二个比特)的数据信息,那么符号率等于比特率;如果一个单位码元对应多个比特数的数据信息(m个),则称单位码元为多进制码元。
  • 此时比特率与符号率的关系是:

    比特率=符号率*log2 m

  • 所以,两相调制(单个调制状态对应1个二进制位)的比特率等于波特率;四相调制(单个调制状态对应2个二进制位)的比特率为波特率的两倍;八相调制(单个调制状态对应3个二进制位)的比特率为波特率的三倍;依次类推。

总结:

数据传输速率=比特率=码率=数据带宽

调制速率=波特率=符号率

当传输的数据信息为两相调制时,即不进行压缩,采用二进制码元。

波特率=比特率

时间: 2024-11-05 19:02:47

协议之浅谈的相关文章

浅谈协议安全

写下最近在研究的macsec方面的东西.思路不是很清晰现在,我就从wep开始谈吧.我将从几个方面来谈这些事,比如密码算法,认证过程等.各位看官且看. Wep设计的思想是通过使用RC4流密码算法加密来保护数据的机密性,通过问答机制实现对用户身份认证和接入控制(其实就是两元对等的模型.)然后过过CRC32循环冗余校验码来保护数据完整性.其实这里就是一个封包格式的填充 为了让验证段处理固定的报文格式. WEP帧的封装过程 我上个图: 看上图.我解释一下.Wep在传输过程中协议保护了完整性.防止数据被篡

HTTP协议浅谈

一.介绍: http 即 超文本传送协议  (Hypertext transfer protocol) 是通过因特网传送万维网文档的数据传送协议.今天普遍使用的一个版本--HTTP 1.1. HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS.如下图所示: 默认HTTP的端口号为80,HTTPS的端口号为443. 二.HTTP事务: HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型.HTTP是一个无状态的协议.

Http协议中Get和Post的浅谈

起名困难户,每次写文章最愁的就是不知道该如何起个稍具内涵的名字,如果这篇文章我只是写写Get和Post的区别,我可以起个名字“Get和Post的那点事”,如果打算阐述一下Http协议原理性内容,那该叫“Http中你不知道的那些事”,两者都不是我想要的,前者太过浅薄,后者太过深奥,已超出本人的能力范围,于是我只能写点Http,Get,Post和个稀泥大家就将就着看一下,开头很多废话的毛病我发现我是越来越难改了,进入正题吧~ Http HTTP(Hypertext transfer protocol

【转】 浅谈Radius协议

浅谈Radius协议 2013-12-03 16:06 5791人阅读 评论(0) 收藏 举报  分类: Radius协议分析(6)  从事Radius协议开发有段时间了,小弟不怕才疏学浅,卖弄一下,从RADIUS协议谈谈对身份认证的认识,也总结一下自己. 一.RADIUS协议原理 RADIUS(Remote Authentication Dial In User Service) 用户远程拨入认证服务,它主要针对的远程登录类型有:SLIP.PPP.telnet和rlogin等.RADIUS协议

浅谈HTTPS以及Fiddler抓取HTTPS协议

最近想尝试基于Fiddler的录制功能做一些接口的获取和处理工作,碰到的一个问题就是简单连接Fiddler只能抓取HTTP协议,关键的登录请求等HTTPS协议都没有捕捉到,所以想让Fiddler能够同时抓取到HTTPS和HTTP协议,设置只是很小的一步,关键是了解HTTPS协议的原理.Fiddler抓取HTTPS协议的原理,然后才能更好的理解如何进行设置.本文主要由三部分组成,第一部分用比较通俗形象的方式简述了HTTPS的原理,第二部分则是在第一部分的基础上介绍Fiddler抓取HTTPS协议的

浅谈HTTPS以及Fiddler抓取HTTPS协议(摘抄)

一.浅谈HTTPS 我们都知道HTTP并非是安全传输,在HTTPS基础上使用SSL协议进行加密构成的HTTPS协议是相对安全的.目前越来越多的企业选择使用HTTPS协议与用户进行通信,如百度.谷歌等.HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息.网上有诸多资料,有些写得过于晦涩难懂,尤其是需要密码学的一些知识.我做了一下简单的整理,刨除复杂的底层实现,单从理解SSL协议的角度宏观上认识一下HTTPS.一言以弊之,HTT

浅谈Linux协议和组成

根据自己学习Linux方面的知识,浅谈下linux的协议和组成,那首先了解下计算机的组成和功能: 计算机系统由硬件(hardware)系统和软件(software)系统两大部分组成: 1.硬件系统由主机和外部设备组成: 主机由中央处理器CPU(运算器ALU和控制器CU)和内存储器(ROM和RAM) 外部设置由输入设备和输出设备等其他设备组成 2.软件系统由系统软件和应用软件组成 接下来了解Linux的内核功能和作用:我们学习Linux的最重要就是内核(kernel),内核是什么.我用自己理解的方

浅谈传输层协议TCP和UDP

在当今因特网的层次结构中,传输层的协议主要有两种,其一为Transmission Control Protocol,即TCP:其二为User Datagram Protocol,即UDP. 1.TCP service model TCP是使用最广泛的传输层通讯协议,它在两个端系统之间建立连接,并通过两端的状态机来维护连接,为应用层提供可靠的字节流传输服务. (1)TCP是面向连接的 在传输实际数据的字节流之前,两个端系统的TCP会通过三次握手来确定建立连接,即所谓的3-way handshake

.net中对象序列化技术浅谈

.net中对象序列化技术浅谈 2009-03-11 阅读2756评论2 序列化是将对象状态转换为可保持或传输的格式的过程.与序列化相对的是反序列化,它将流转换为对象.这两个过程结合起来,可以轻松地存储和传输数 据.例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象.反之,反序列化根据流重新构造对象.此外还可以将对象序列化后保存到本地,再次运行的时候可以从本地文件 中“恢复”对象到序列化之前的状态.在.net中有提供了几种序列化的方式:二进制序列化