蓝牙协议分析(3)_BLE协议栈介绍】的更多相关文章

1. 前言 通过“蓝牙协议分析(2)_协议架构”的介绍,大家对蓝牙协议栈应该有了简单的了解,但是,肯定还有“似懂非懂.欲说还休”的感觉.有这种感觉太正常了,毕竟蓝牙协议是一个历史悠久又比较庞大的协议,没那么容易理解. 因此,本文将换个视角,从协议栈设计者的角度,思考如下问题: 为什么会有蓝牙协议栈(Why)? 怎样实现蓝牙协议栈(How)? 蓝牙协议栈的最终样子是什么(What)? 另外,我们知道,当前的蓝牙协议包含BR/EDR.AMP.LE三种技术,为了降低复杂度,本文将focus在现在比较热…
转自:http://www.wowotech.net/bluetooth/ble_connection.html#comments 1. 前言 了解蓝牙的人都知道,在经典蓝牙中,保持连接(Connection)是一个相当消耗资源(power和带宽)的过程.特别是当没有数据传输的时候,所消耗的资源完全被浪费了.因而,对很多蓝牙设备来说(特别是功耗敏感的设备),希望在无数可传的时候,能够断开连接.但是,由于跳频(hopping)以及物理通道(Physical Channel)划分的缘故,经典蓝牙连接…
1. 前言 前面文章介绍了两种BLE的安全机制:白名单[4]和LL privacy[3].说实话,在这危机四伏的年代,这两种“捂着脸讲话(其它人不知道是谁在讲话,因而不能插话.不能假传圣旨,但讲话的内容却听得一清二楚)”的方法,实在是小儿科.对于物联网的应用场景来说,要做到安全,就必须对传输的数据进行加密,这就是LE Encryption要完成的事情(当然,只针对面向连接的数据),具体请参考本文的介绍. 2. 基本概念 从字面理解,Encryption是一个名词,意思是“加密术”,因此LE En…
1. 前言 注1:此SM是Security Manager的缩写,非彼SM,大家不要理解歪了! 书接上文,我们在“蓝牙协议分析(10)_BLE安全机制之LE Encryption”中介绍了BLE安全机制中的终极武器----数据加密.不过使用这把武器有个前提,那就是双方要共同拥有一个加密key(LTK,Long Term Key).这个key至关重要,怎么生成.怎么由通信的双方共享,关系到加密的成败.因此蓝牙协议定义了一系列的复杂机制,用于处理和加密key有关的操作,这就是SM(Security…
1. 前言 在上一篇文章[1]中,我们介绍了BLE的白名单机制,这是一种通过地址进行简单的访问控制的安全机制.同时我们也提到了,这种安全机制只防君子,不防小人,试想这样一种场景: A设备表示只信任B.C.D设备,因此就把它们的地址加入到了自己的白名单中,表示只愿意和它们沟通.与此同时,E设备对它们的沟通非常感兴趣,但A对自己不信任啊,肿么办? E眼珠子一转,想出一个坏主意:把自己的地址伪装成成B.C.D中任意一个(这个还是很容易办到的,随便扫描一下就得它们的地址了)就行了,嘿嘿嘿! 那么问题来了…
1. 前言 在万物联网的时代,安全问题将会受到非常严峻的挑战(相应地,也会获得最大的关注度),因为我们身边的每一个IOT设备,都是一个处于封印状态的天眼,随时都有被开启的危险.想想下面的场景吧: 凌晨2点,x米手环的闹钟意外启动,将你从睡梦中惊醒,然后床头的灯光忽明忽暗…… 你的心率.血压.睡眠质量等信息,默默地被竞争对手收集着,并通过大数据分析你的情绪.健康等,随时准备给你致命一击…… 我知道你家里有几盏灯.几台电器.几个人,知道你几点睡觉几时醒来,知道你一周做过几顿饭,甚至知道你有一个xx棒…
1. 前言 大家都知道,相比传统蓝牙,蓝牙低功耗(BLE)最大的突破就是加大了对广播通信(Advertising)的支持和利用.关于广播通信,通过“玩转BLE(1)_Eddystone beacon”和“玩转BLE(2)_使用bluepy扫描BLE的广播数据”两篇文章的介绍,我们已经有了一个整体的认识.本文将依此为基础,从技术的角度,分析和理解BLE协议中有关广播通信的定义和实现. 注1:之前的蓝牙协议分析文章(如“蓝牙协议分析(3)_蓝牙低功耗(BLE)协议栈介绍”),偏向于从横向.从大而全的…
1. 前言 也许关注BLE的同学都注意到了,BLE设备有多种类型的设备地址,如Public Device Address.Random Device Address.Static Device Address.Private Device Address等等.如果不了解内情,大家肯定会被它们绕晕.不过存在即合理,这样看似奇怪的设计,实际上反映了BLE的设计思路以及所针对的应用场景.让我们通过本文一窥究竟. 2. BLE设备的地址类型 一个BLE设备,可以使用两种类型的地址(一个BLE设备可同时具…
1. 前言 蓝牙是个奇葩的家伙:它总是以后来者的身份出现,很喜欢打仗,而且还不落下风(有点像某讯的风格).90年代末期和Wi-Fi的无线标准之争如此,当前和802.15.4系(ZigBee.RF4CE.Thread等)的IoT之争,也如此. 90年代末期,蓝牙刚出道的时候,就曾叫嚣着把Wi-Fi(802.11)从地球上抹去.反过来,1999年Wi-Fi 802.11b标准发布后,也宣称会把蓝牙干掉.最终,二者划江而治,瓜分了天下,Wi-Fi占据了家庭和办公室中的电脑网络,而蓝牙成为了广受欢迎的电…
在蓝牙协议栈的物理层,有这样两个比较有用的参数:LQI和RSSI.它们都是通过接收端,判断当前无线环境的质量(链路质量),以指导后续的动作.但这两个数值的计算原理和使用场景又有很大的差别. LQI (Link Quality Indication),是当前接收到的信号的质量的一种度量.所谓的接收到信号的质量,是接收器通过接收到的信号和理想信号之间的错误累积值估算的.例如,如果使用FSK或者GFSK调制方式,接收器可以将每个bit的频率和期望的频率比较,累积一定数量的symbols(例如64个),…
蓝牙接收苹果手机通知 ANCS协议分析 转载,请注明出处:http://www.cnblogs.com/alexcai/p/4321514.html 综述 现在有许多蓝牙手表.手环都能接收苹果iphone手机的系统通知,那这是怎么实现的呢? 其实,这都有赖于苹果IOS 7开始提供的ANCS协议,ANCS(苹果通知中心, Apple Notification Center Service)的目的是提供给蓝牙外设一种简单.方便的获取ios设备通知信息的方式.使得蓝牙手环.手表可以收到苹果手机的来电.…
本篇博客根据韦东山的视频,整理所得. 本篇博客讲解BTStack的框架,首先来看一下硬件的结构: 蓝牙模块接在电脑上,或是接在开发板上.不论接在哪,我们都需要编写程序来控制这个蓝牙模块. . 我们需要发送数据给蓝牙模块 需要发送命令给蓝牙模块,比如让它发出无线信号去扫描.识别.连接.读写附近的蓝牙设备 2. 需要从蓝牙模块获得数据 3. 需要处理获得的数据 上述3步骤可以简化为一个循环: 1.读取数据:可以读取用户输入的指示,也可以读取蓝牙模块的数据 2.处理数据:根据用户的指示发送数据给蓝牙模…
RTP协议分析 第1章.     RTP概述 1.1.  RTP是什么 RTP全名是Real-time Transport Protocol(实时传输协议).它是IETF提出的一个标准,对应的RFC文档为RFC3550(RFC1889为其过期版本).RFC3550不仅定义了RTP,而且定义了配套的相关协议RTCP(Real-time Transport Control Protocol,即实时传输控制协议).RTP用来为IP网上的语音.图像.传真等多种需要实时传输的多媒体数据提供端到端的实时传输…
  目录(?)[-] 第1章     RTP概述 RTP是什么 RTP的应用环境 相关概念 流媒体 第2章     RTP详解 RTP的协议层次 传输层的子层 应用层的一部分 RTP的封装 RTCP的封装 RTP的会话过程 第3章     相关的协议 实时流协议RTSP 资源预定协议RSVP 第4章     常见的疑问 怎样重组乱序的数据包 怎样获得数据包的时序 声音和图像怎么同步 接收缓冲和播放缓冲的作用 第5章     实现方案 第6章     参考资料   RTP协议分析 第1章.    …
在<物联网核心协议—消息推送技术演进>一文中已向读者介绍了多种消息推送技术的情况,包括HTTP单向通信.Ajax轮询.Websocket.MQTT.CoAP等,其中MQTT协议为IBM制定并力推,其具有开放.简单.轻量级以及易于实现的特点使得其即便在资源受限的环境中也能得到很好的使用,比如运行在资源紧缺型的嵌入式系统中或网络带宽非常昂贵的环境中,除此之外,它也被广泛用于遥感勘测.智能家居.能源监测和医疗应用程序等各个领域,是物联网的重要组成部分,将来可能会成为物联网的事实标准. 本篇文章将帮助…
Protocol buffer是Google出品的一种轻便高效的结构化数据存储格式,可对结构化数据进行序列化,并具有语言无关.平台无关等特点,在通信协议和数据存储等领域已经得到广泛的应用.目前其已经提供 C/C++.Java.Python 等语言的 API. 一.Protocol buffer和XML 在数据通信传输时,一般需要将结构化的数据序列化成流进行传送,接收方再反序列化为原始格式数据进行处理.在Web通信领域,XML应用算是最通用的了.在时间性能上,虽然XML的序列化开销还可以,但是反序…
[创建时间:2015-08-27 22:15:17] NetAnalyzer下载地址 上篇我们回顾完了NetAnalyzer一些可有可无的历史,在本篇,我决定先不对NetAnalyzer做介绍,而是先要了解一些关于构建NetAnalyzer的基础知识,如系统中可以分析的一些网络协议,了解它们的分布方式,字段含义等.在了解了协议的基础上,以后学习配置Winpcap的开发环境,做一些简单的数据采集程序就会更加方便.接下来则要介绍一下在开发NetAnalzyer过程中涉及到的一些数据结构与编程思想.…
一.前言 目前,网络的速度发展非常快,学习网络的人也越来越多,稍有网络常识的人都知道TCP/IP协议是网络的基础,是Internet的语言,可以说没有TCP/IP协议就没有互联网的今天.目前号称搞网的人非常多,许多人就是从一把夹线钳,一个测线器联网开始接触网络的,如果只是联网玩玩,知道几个Ping之类的命令就行了,如果想在网络上有更多的发展不管是黑道还是红道,必须要把TCP/IP协议搞的非常明白. 学习过TCP/IP协议的人多有一种感觉,这东西太抽象了,没有什么数据实例,看完不久就忘了.本文将介…
一;前言 学习过TCP/IP协议的人多有一种感觉,这东西太抽象了,没有什么数据实例,看完不久就忘了.本文将介绍一种直观的学习方法,利用协议分析工具学习TCP/IP,在学习的过程中能直观的看到数据的具体传输过程. 为了初学者更容易理解,本文将搭建一个最简单的网络环境,不包含子网. 二.试验环境 1.网络环境  如图1所示 图1 为了表述方便,下文中208号机即指地址为192.168.113.208的计算机,1号机指地址为192.168.113.1的计算机. 2.操作系统 两台机器都为Windows…
一;前言 学习过TCP/IP协议的人多有一种感觉,这东西太抽象了,没有什么数据实例,看完不久就忘了.本文将介绍一种直观的学习方法,利用协议分析工具学习TCP/IP,在学习的过程中能直观的看到数据的具体传输过程. 为了初学者更容易理解,本文将搭建一个最简单的网络环境,不包含子网. 二.试验环境 1.网络环境  如图1所示 图1 为了表述方便,下文中208号机即指地址为192.168.113.208的计算机,1号机指地址为192.168.113.1的计算机. 2.操作系统 两台机器都为Windows…
1.概述:   蓝牙协议规范遵循开放系统互连参考模型(OSI/RM),从低到高地定义了蓝牙协议堆栈的各个层次. SIG(Session Initiation Protocol)所定义的蓝牙技术规范的目的是使符合该规范的各种应用之间能够实现互操作. 互操作的远端设备需要使用相同的协议栈,不同的应用需要不同的协议栈. 但是,所有的应用都要使用蓝牙技术规范中的数据链路层和物理层. 2.完整的蓝牙协议栈 完整的蓝牙协议栈如图1所示,不是任何应用都必须使用全部协议,而是可以只使用其中的一列或多列. 图1显…
蓝牙驱动分析 这个驱动分析的是OK6410开发板自带的内核版本是linux3.0.1,所支持的wifi和蓝牙一体芯片是marvell的8688和8787.根据开发板的设计,芯片与主机之间是通过sdio协议接口通信的,所以驱动也是通过sdio的方式写的. 个人分析驱动的过程是从插入设备驱动的动作开始的. 首先每次插入设备和拔出设备驱动都会通过终端打印相应的信息,判断在sd卡槽中肯定是触发中断的,通过看硬件原理图和数据手册中的SDMMC控制器可知用于mmc的中断号分别为56和57,回到代码中.在内核…
一.RTP协议分析 第1章.     RTP概述 1.1.  RTP是什么 RTP全名是Real-time Transport Protocol(实时传输协议).它是IETF提出的一个标准,对应的RFC文档为RFC3550(RFC1889为其过期版本).RFC3550不仅定义了RTP,而且定义了配套的相关协议RTCP(Real-time Transport Control Protocol,即实时传输控制协议).RTP用来为IP网上的语音.图像.传真等多种需要实时传输的多媒体数据提供端到端的实时…
一.从信息的传输说起  上图是一个典型的蓝牙耳机应用场景.手机上的音频信息经过编码以后通过蓝牙协议被蓝牙耳机接收,经过解码以后,蓝牙耳机成功获取手机上的音频信息,然后再转化为振动被人耳识别.这是一个典型的数字通信系统,下面是数字通信系统的一般模型.  信源即需要传输的信息. 信源编码即对信源的编码,目的是为了减少冗余,起到数据压缩的作用,常见的信源编码有Huffman编码.H.264编码等. 信道编码的目的是对抗信道中的噪音和衰减,原理是加入冗余,常见的方法包括CRC校验.卷积码等. 信道即…
protobuf和thrift类似,也是一个序列化的协议实现,简称PB(下文出现的PB代表protobuf). Github:https://github.com/google/protobuf 上图,说明一下protobuf协议. PB以“1-5个字节”的编号和类型开头,格式:编号左移3位和类型取或得到. 编号是什么? 编号就是 定义的proto文件中各个字段的编号. 如: 类型是什么? 类型就是 定义的proto文件中各个字段类型,使用3位表示类型,可以表示0到7,共8种类型,PB类型只用了…
最近闲来有事, 分析了一个非常低端(非常低端的意思是说你不应该对她是否能取代你现有的QQ客户端作任何可能的奢望,她只是一个实验性的东西)的手机QQ的协议, 是手机QQ3.0,      所用到的TCP/HTTP通信协议版本是1.4, 也不知道是哪一年release的了, 至少有七八年的历久了吧, 反正就是: 功能非常弱! 主要的分析原因是想学学网络方面的编程经验(这是我第2次弄socket编程 :-) ), 以及学学怎么抓包分析. 主要用到的工具软件 手机QQ3.0: http://www.ru…
协议分析 - DHCP协议解码详解 [DHCP协议简介]         DHCP,全称是 Dynamic Host Configuration Protocol﹐中文名为动态主机配置协议,它的前身是 BOOTP,它工作在OSI的应用层,是一种帮助计算机从指定的DHCP服务器获取它们的配置信息的自举协议.         DHCP使用客户端/服务器模式,请求配置信息的计算机叫做DHCP客户端,而提供信息的叫做DHCP的服务器.DHCP为客户端分配地址的方法有三种:手工配置.自动配置.动态配置.…
Python黑帽编程1.5  使用Wireshark练习网络协议分析 1.5.0.1  本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Attack and Defense with Python>一书,为了解决很多同学对英文书的恐惧,解决看书之后实战过程中遇到的问题而作.由于原书很多地方过于简略,笔者根据实际测试情况和最新的技术发展对内容做了大量的变更,当然最重要的是个人偏好.教程同时提供图文和视频教程两种方式,供不同喜好的同学选择. 1…
Memcache的使用和协议分析详解 作者:heiyeluren博客:http://blog.csdn.NET/heiyeshuwu时间:2006-11-12关键字:PHP Memcache Linux 缓存 Memcache是danga.com的一个项目,最早是为 LiveJournal 服务的,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力.(关于Memcache的更多信息请Google)Memcache官方网站:http://www.danga.com/memc…
https://blog.helong.info/blog/2015/09/06/tls-protocol-analysis-and-crypto-protocol-design/?from=timeline&isappinstalled=0 最近发现密码学很有意思,刚好还和工作有点关系,就研究了一下,本文是其中一部分笔记和一些思考. 密码学理论艰深,概念繁多,本人知识水平有限,错误难免,如果您发现错误,请务必指出,非常感谢! 本文禁止转载 本文目标: 学习鉴赏TLS协议的设计,透彻理解原理和重…