蓝牙协议栈初识(ceva蓝牙协议栈)

在学习的过程中一直有疑问,为什么蓝牙技术突然就产生了呢?蓝牙技术的目的是什么呢?蓝牙技术相对于它所替代的技术存在什么样的优势和劣势呢?蓝牙技术都做了些什么呢?随着我们周围电子产品的增多电子产品之间的信息交互也越来越频繁,但是信息交互方式在无线连接出现之前只能使用有线连接,比如计算机接入键盘,鼠标,主机,扫描仪,打印机,摄像头等等,如果都是用有线连接那就会让你的工作台充满电缆,而且既然是有线的那么…

大家好,又见面了,我是你们的朋友全栈君。

在学习的过程中一直有疑问,为什么蓝牙技术突然就产生了呢?蓝牙技术的目的是什么呢?蓝牙技术相对于它所替代的技术存在什么样的优势和劣势呢?蓝牙技术都做了些什么呢?

随着我们周围电子产品的增多电子产品之间的信息交互也越来越频繁,但是信息交互方式在无线连接出现之前只能使用有线连接,比如计算机接入键盘,鼠标,主机,扫描仪,打印机,摄像头等等,如果都是用有线连接那就会让你的工作台充满电缆,而且既然是有线的那么对这些外设的位置肯定是有要求,并且如果想要去将打印机之类外设给另一台使用还需要重新去布置…现在想想是不是满脑子黑线??

满地的电线,一不小心再绊倒了或者是漏电了或者是移动外设时累到你了肿么办?这是绝对不允许的,所以有这么一帮为全人类的安全和幸福着想的技术人员提出了无线连接,向伟大的技术先驱工作者致敬~~

就在这时无线连接应运而生—-蓝牙,不用电缆,只要在一定范围内,就可以直接使用蓝牙连接。而且蓝牙支持自由的接入和退出,这也就意味着既减轻了计算机周围的电缆数量又方便在一定范围内的多个设备共用外设。

当然啦,人无完人,相对于有线,蓝牙技术本身存在着一定的短板。蓝牙无线通信完全是靠着无线电波传输信息,这也就意味着在传输过程中势必会存在衰减,相对于有线直接连接接收方和发送方,蓝牙就隐晦多了,接收方没有明确指明所以必须要靠协议来确定接收方,这样一看电缆还是有一定优势的,既可以安全传输信息又可以明确接收方和发送方。

有线靠电缆传输,所以传输过程中只受电缆的影响,但蓝牙太开放了,在郎朗乾坤下空气中进行传播,所以势必会有一定程度的衰减,暂不提空气中本身对电波造成的衰减,就说万一遇到障碍物干扰怎么办?没办法,只能是给把传输过程中的能量给障碍物一些,以换取通关门票。

就像古代押镖的,如果能力够强且路途干扰少的话虽然很累,但货物还是能基本上安全送达,但如果遇到几个强大的劫匪的话送过来时东西被抢的也所剩无几了,或者更狠直接在半路上gameover了,你说能怎么办?这就是蓝牙传输过程中无法保证的事情。此之谓蓝牙传输过程的衰减。

当然还有一种情况就是既然蓝牙是无线电波的传输,那么随随便便一个可以接收蓝牙对应频段的无线电波的设备就可以获取到该信息。

也就相当于比如领导今天想通知只给A员工放一天假,但是没有直接给A说,而是通知了所有人,那么所有接收到这个信息的人都会屁颠儿屁颠儿的回家了。所以蓝牙传输一定要明确接收方,要不然得不偿失啊。此之谓明确蓝牙传输的目标方。

既然你是在空气中传播无线电波,那么我总可以给你加点儿佐料吧。比如一个古代一个丫鬟给主人送茶的途中遇到一个坏蛋,向茶里放了些有毒物质,然后主人over了,丫鬟此时必遭一劫有口说不清啊。你看,死了主子害了丫鬟。(哎,别问我为什么举这个例子,电视剧不都是这个套路吗哈哈哈哈)

再比如现在这些谍战剧里不就是靠着发报来传递信息的,由此所产生的解密部门不就是破解传输的么。

可见,保持传输过程中的安全是多么的重要。目前确实有人在攻击蓝牙信息的传输过程并植入病毒以此来获取并操控手机等电子设备。此之谓蓝牙传输中的信息安全的重要性。

还有一项也是蓝牙一直在提升的地方,那就是蓝牙的功耗和传输速率。当今什么都追求更快更高更强,蓝牙当然不能落后,甚至蓝牙为此提出了低功耗蓝牙规格,努力降低无线电波发射功率,并借助跳频技术来尽量降低干扰。

跳频技术是什么意思呢?就是在蓝牙通信时每隔一定时间就换一个通信频段,这次走这条下次走那条,总有一条受干扰少。想想也是很厉害的呢。

蓝牙技术的实现依赖于硬件和软件的协作。蓝牙芯片是一种1立方厘米大小的嵌入式芯片,以此来保证蓝牙的体积小便于携带,我猜这也是蓝牙受欢迎的原因。

既然芯片已经嵌入到产品中了那么就需要软件来与其他蓝牙产品联系起来也即是信息交换。

还有一点,不同与有线连接的一对一结构,蓝牙可以形成1对多的结构。但是一个蓝牙最多能同时和7个设备通信,比如蓝牙微微网结构中的一个主节点和最多的七个从节点。

蓝牙信息在物理信道上是分组传播的,每组包含3部分,其中有一部分称之为分组头,在分组头中有3bit标识了激活地址,所以激活地址选择有8种000,001,…111,但是000是预留地址,主节点没有激活地址,所以有7个激活地址供从节点使用,这也是为什么最多同时能和7个设备通信。

由此,正好引出了蓝牙的网络拓扑结构有两种,一种是微微网Piconet,一种是散射网Scaternet。微微网中只有一个主节点,有1到7个从节点.散射网是由多个微微网组成的,所以某个微微网中的主节点有可能是另一个微微网中的从节点。

在这里插入图片描述

也就是说蓝牙的承载能力最大为7个设备,是不是相比于有线简直是极大的优势。

当然一项技术如果想要广泛的流传下去并保证所有蓝牙设备间的兼容性,那必须要求各个实现蓝牙的设备遵循一个规则,参考网络协议结构,蓝牙也构建了自己的协议体系。但这总需要有一个团体来制定一个标准来制定所有规则。

于是在1998年2月,一个蓝牙兴趣小组SIG(Special Interest Group)诞生了,发起者为当时的IT行业的巨头:爱立信,Intel,IBM,东芝,诺基亚。SIG的目的就是保证蓝牙的统一规范以达到蓝牙设备间的互通性。所以为实现这一目的,蓝牙sig小组有几个任务:

制定蓝牙技术规范,协调各国蓝牙使用的频段(有的国家蓝牙开放频段不一致)

蓝牙SIG制定了从底层到应用层的各种协议的具体要求,也制定了profile来规范如何使用应用层的协议来实现功能。这句话刚开始理解起来有些费劲,尤其是对于没接触过源码的。其实意思就相当于类似网络协议模型有很多层各个层都有很多协议,蓝牙sig就是模仿网络协议制定了蓝牙各种协议。

蓝牙协议共分为四类:

1,蓝牙核心协议:基带管理BB(baseBand),链路管理LMP(linkManagerProtocol),链路控制和适配L2CAP(LogicalLinkControlAndAdaptionProtocol),服务发现SDP(ServiceDiscoveryProtocol)协议。

2,蓝牙电缆替代协议:RFCOMM协议

3,蓝牙电话控制协议:电话通信协议TCS协议,AT命令集

4,蓝牙选用协议:PPP,obex,Vcard(卡片传输),Vcal(日历传输)等等。

Ps: 以上内容引用自《蓝牙技术基础》

同时蓝牙SIG也会提供profile,来规范如何使用这些协议,比如OPP (ObjectProfile)等等。相当于蓝牙sig给你做出来一系列的工具,并告诉你如果想要实现某些功能你要用到哪些工具、如何使用这些工具以及使用这些工具的先后顺序。有了这些,就可以搭建出某个profile的结构。

如下图是文件传输应用协议的协议结构图

在这里插入图片描述

看到文件传输应用协议体系,是不是依旧有些懵的赶脚?没办法,慢慢看吧,看的多了就能联系起来了,如果有网络协议的基础估计学起来会快一些。

那么整个蓝牙协议体系是怎样的呢?如下图所示:

在这里插入图片描述

蓝牙协议体系由三部分组成:底层、中间层和应用层。至于各层都包括什么,详见上图。接下来看看各个模块的作用。

1,RF射频模块:用于过滤和传输数据,发送数据时进行载波调制,接收数据时进行电波的高频信号解调。说白了射频的目的就是能够保证通过蓝牙发输出的电波工作在2.4Ghz频段,以及保证过滤到的是2.4GHz的信号。起到一个滤波器和信号发送器和接收器的作用。

2,BB基带层模块:实现电路交换和分组交换(具体待分析)

3,LMP链路管理:管理蓝牙设备间的链路的建立和解除链接,以及传输链路的切换和传输过程中的安全加密。蓝牙包括两种链路ACL (AsychronousConnectionless面向无连接的异步链路,适用于发送数据)和SCO(Synchronous Connection Oriented面向连接的同步链路,适用于发送语音)

4,L2CAP逻辑链路控制和适配协议:蓝牙在信道传输是分组传输,该协议用于对数据进行分组、提取、重新组装。

5,SDP服务发现协议:用于发现对方蓝牙设备支持什么样的应用层profile,比如通过扫描到的BluetoothDevice获取到所支持的uuid,每个应用层profile都有其对应的profile。通常我们在设置–蓝牙配对详情界面所看到的可用配置项就是sdp作用的结果。

6,TCS(TelephoneCommunicationProtocal)电话通信协议:用于实现通过蓝牙设备来呼叫拨打电话。

蓝牙协议体系暂时就这么多,简单理解就是有一个叫做sig的组织,规定了一些蓝牙的基本协议,然后为了实现某个功能比如文件传输,你需要从这些协议中挑出需要用哪些协议,以及这些协议如何进行协作,于是文件传输的应用profile体系就出来。

当然你在搭建这个profile时sig给了你一个大的框架那就是最底层是射频和基带来保证无线电波的过滤和产生,紧接着就是一个带有传输层协议的中间层来处理传输过程中的数据包,最后就是一些应用层的协议了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/127624.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • android 的hook技术,Android Native Hook技术(一)

    android 的hook技术,Android Native Hook技术(一)原理分析ADBI是一个著名的安卓平台hook框架,基于动态库注入与inlinehook技术实现。该框架主要由2个模块构成:1)hijack负责将so注入到目标进程空间,2)libbase是注入的so本身,提供了inlinehook能力。源码目录中的example则是一个使用ADBI进行hookepoll_wait的示例。hijackhijack实现动态库注入功能,通过在目标进程插入d…

    2022年5月25日
  • Vue.js学习的第一天

    Vue.js学习的第一天官网文档地址:传送门一、Vue介绍:1.Vue.js是什么?作者:2014年2月,尤雨溪曾就职于GoogleCreativeLabs和MeteorDevelopmentGroup。Vue(读音/vjuː/,类似于view)是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue被设计为可以自底向上逐层应用。Vue的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vu..

    2022年4月9日
  • html5里的空心圆柱体,容积及空心圆柱体积.doc[通俗易懂]

    html5里的空心圆柱体,容积及空心圆柱体积.doc[通俗易懂]容积及空心圆柱体积高碑店中心小学段玉红教学目标:1、在巩固圆柱体积的计算公式的基础上,通过对实物的观察认识空心圆柱体(套管),知道各部分名称及之间的关系,掌握套管体积的计算公式。能正确计算套管的体积。2、在研究套管体积计算方法过程中,发现形体之间的关系,引导学生用原有知识解决新问题。培养学生知识迁移的能力。3、通过对计算体积方法的对比,体会有效提高计算正确率的最佳方法,进一步提高学生计算能力…

    2022年9月2日
  • java并发编程实战_java解决并发问题

    java并发编程实战_java解决并发问题Executors  在Java5之后,并发编程引入了一堆新的启动、调度和管理线程的API。Executor框架便是Java5中引入的,其内部使用了线程池机制,它在java.util.cocurrent包下,通过该框架来控制线程的启动、执行和关闭,可以简化并发编程的操作。因此,在Java5之后,通过Executor来启动线程比使用Thread的start方法更好,除了更易管理,效率更好…

    2022年9月11日
  • sublime3激活码[最新免费获取]

    (sublime3激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlS32PGH0SQB-eyJsaWN…

    2022年3月26日
  • 笔记总结-相机标定(Camera calibration)原理、步骤

    笔记总结-相机标定(Camera calibration)原理、步骤      这已经是我第三次找资料看关于相机标定的原理和步骤,以及如何用几何模型,我想十分有必要留下这些资料备以后使用。这属于笔记总结。1.为什么要相机标定?      在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。2.什么叫相机标定?       在大多数条件下这些参数必须通…

    2022年5月28日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号