[BT_Books]《无线蓝牙技术深入探讨》笔记

简述

本书为台湾作者所作,其文字也是繁体,以下对阅读该书所作笔记录入如下。不过本书所著时间比较早了,当时BLE并没有提出还,因此本书是讲BR/EDR的。关于BLE的请参看文章《低功耗蓝牙开发权威指南》这篇。

关于传统蓝牙支持的通信设备个数

最多可同时连接另外7个BT设备(激活状态),周围最多可有255个等待的BT设备(待机状态)。

传统BT协议Radio层

发射频率

ISM频段,2.4000GHz ~ 2.4835GHz。

调制方式

调制基础:高频信号—载波信号, 低频信号—基频(Baseband)信号。
调制方式:模拟调制, 数字调制(更好,ASK, FSK, PSK)。
蓝牙调制方式:GFSK(高斯频移键控调制)。

发射功率:

决定信号的强度,单位有W和dBm。
dBm = 10 log(P2/P1) P2—一般的电波强度,P1—固定的参考功率强度(1mW or 1W)。
分级(100mW/20dBm, 2.5mW/4dBm, 1mW/0dBm),BT设备可自适应调整发射功率。

传统BT协议基频(Baseband)层

设备地址

BD_ADDR(48 bits):NAP(16 bits) + UAP(8 bits) + LAP(24 bits)。
AM_ADDR(3 bits):Slave设备在Piconet网中为Active状态时的地址。
PM_ADDR(8 bits):进入Park状态后的地址。
AR_ADDR:所有Park状态的BT设备,都分配一个AR_ADDR地址。

实体信道

Master与Slave间以TDD(Time Division Duplex)方式进行信息传递。
Master传送封包长度最多可扩展到3个或5个时槽。

跳频

最多79个频道供调频。
跳频序列决定于Master设备内48位的BD_ADDR地址。
同一Piconet内所有BT设备有相同的跳频序列。
BT传输时跳频速率为1600次/S(625us/次)。
BT Paging和Inquire时跳频速率为3200次/S(312.5us/次)。

Master & Slave时序同步

CLKN:BT设备的内部系统时序。
CLKE:估计时序。

Piconet

Master最多可同时与7个Slave(Active状态)互传数据。
一个Piconet内传输速率为1Mbit/s,所有Slave共享该1Mbit/s,Slave越多速率越低。

Scatternet

几个Piconet所覆盖的范围内,构成了BT的Scatternet网络。
Slave在Active状态时,只能选择加入其中一个Piconet。

资料传输型态

SCO:电路交换传输,同步传输,基于连接的传输。建立在一个Master与一个Slave间。
每个SCO连线支持64k bit/s的语音通话。
ACL:分组交换,非同步传输,单点对多点非对称连接。
ACL非对称连接传输速率:Master-to-Slave—721Kbit/s,Slave-to-Master—57.6Kbit/s。
ACL对称连接传输速率:Master与Slave之间均为432.6Kbit/s。
Master与各Slave间最多只有一条ACL连线,可以有多条(3条)SCO连线。

语音编码

PCM—Pulse Code Modulation。
CVSD—Continuous Variable Slope Delta Modulation。
BT可选以上两种语音编码方式,取用何种取决于上层应用程序。

错误控制

1/3 FEC(Forward Error Correction):将每个资料位元在封包内重复三次,一般SCO。
2/3 FEC:将10个资料位元经多项式运算后产生15个位元,一般ACL。
ARQ(Automatic Repeat Request):针对包内Payload进行保护的控制方法。

BT封包(分组)结构

BT封包:Access Code + Header + Payload,具体可表现以下三种方式:
Access code(68bits):ID Packet
Access code(72bits) + Header(54bits)
Access code(72bits) + Header(54bits) + Payload(0-2745bits)
Access code:Preamble(4bits) + Sync Word(64bits) + Trailer(4bits)。
CAC:Channel Access Code,一个Piconet唯一的Access code。
CAC:Piconet内Active的BT设备均使用该CAC。
DAC:Device Access code,Master对Slave发出Paging,或Slave回应Master的Paging。
DAC:由Master对Slave内BD_ADDR的LAP计算所得。
IAC:Inquiry Access code,Master查询周围Slave时使用该Access code。
IAC:分为GIAC(针对一般BT设备)和DIAC(针对如打印机等特定BT设备)。
DAC和IAC可以不需要Header和Payload而单独成为一个分组。
Header:重要的控制数据,将原始18位元经1/3 FEC编码后成为54位元。
Header:AM_ADDR(3bits) + TYPE(4bits) + FLOW(1bit) + SEQN(1bit) + ARQN(1bit)+ HEC(8bits)。
AM_ADDR:从Active状态进入Park状态丢掉该地址,连接Piconet时从Master获得。
TYPE:封包类型,何种连接?几个时槽?等。
FLOW:ACL连接流控制。
ARQN:ARQ错误控制时的指示。
SEQN:判断是否为重复封包。
HEC:校验Header发送内容是否发生错误。
Payload:ACL—Data field,SCO—Voice field,DV封包—同时有语音与数据。
Voice field:SCO包—240位元,DV包语音—80位元,其余—150位元。
Data field:Payload Header + Payload Body + CRC,详见其它详细资料。

BT封包具体分析

BT标准将所有封包分为4个区段:

[BT_Books]《无线蓝牙技术深入探讨》笔记_第1张图片

各区段包含的封包

[BT_Books]《无线蓝牙技术深入探讨》笔记_第2张图片

公共封包:

ID封包:IAC与DAC包。
NULL封包:没有Payload,只有CAC和Header。用于连接信息的交换。
POLL封包:与NULL相似,但需要回应包。
DMI:SCO与ACL均有。
FHS:传输非常重要的控制信号。
SCO封包:HV1,HV2,HV3,DV,所有封包只占用一个时槽。
ACL封包:DM1,AUX1,DH1,DM3,DH3,DM5,DH5。

设备的工作状态

主要有连接状态(Conection State)和待机状态(Standby State)。

设备的连接状态

Slave连接状态:Active,Sniff,Hold,Park。

设备的中间状态

Inquiry,Paging。

逻辑通道

BT定义了5种逻辑通道。
控制通道:LC(Link Control),LM(Link Manager),用于连线控制与连线管理。
用户通道:UA(User Asynchronous,非同步用户信息),UI(User Isosynchronous,等时用户信息),US(User Synchronous,同步用户信息)。

高层通信协议

传统BT通信协议框架

[BT_Books]《无线蓝牙技术深入探讨》笔记_第3张图片

LMP协议

LMP(Link Manager Protocol):Link Manager以LMP协议与其它设备的Link Manager通信。
LMP封包传输在由Baseband建立起的ACL连线上,一直存在于Master与多个Slave间。
LMP连接的建立过程,其中有涉及Master Slave交换的请求信息。
LMP功能三种:Piconet Management,Link configuration,Security functions。
Piconet Management:如连接与中断Slave,SCO/ACL连接建立与管理,角色互换等。
Link configuration:如服务品质,功率控制参数等。
Security functions:传输验证与编码的信号,以及管理连接钥匙。

HCI组合框架

HCI功能:Transport Firmware(BT模组内),Host Driver(Host内),Transport Bus(实体接口)。

L2CAP

传输L2CAP封包前,两设备须以ACL连线为基础建立并开启逻辑通道,最多65535个。
每个逻辑通道只能传输一种上层协议。
逻辑通道的每个CID(通道识别码)对应到一个应用程序。
对于同一台BT设备,不能分配两个相同的CID。CID由L2CAP分配。
L2CAP封包传输结束后又必须关闭逻辑通道。
三种逻辑通道:Connection-Oriented,Connectionless,Signaling。
L2CAP函数:l2cap->openL2CAPConnection,l2cap->send,l2cap->recv。
L2CAP功能:高层与底层间适应层,两BT设备传数据时分组、协定多工、通道参数。
协商通道参数:MTU(最大区段长度),Flush TimeOut,QoS(服务品质)。
分包与重组:分包后的类型(L_CH标志),重组分包时顺序的控制。
协定多工:Baseband无法区分不同上层应用,L2CAP封包的PSM位元指定何种应用。
L2CAP发射端信号处理过程。
L2CAP接收端信号处理过程。

RFCOMM

为两个BT设备间点对点通信协议。类似RS-232,进行串行数据传输。
RFCOMM封包传输前须建立RFCOMM Session,这个是基于L2CAP上的。
在每个L2CAP逻辑通道内建立许多Data Link来建立RFCOMM Session。
每个Data Link分配一个特定的DLCI(Data Link Connection Identifier)。
一条RFCOMM Session最多可同时建立60个Data Link。

SDP

SDP(Service Discovery Protocol):服务发现协议,应用程序来发现侦测网络中的可用服务。
由Client发起查询,Server负责回应,被查询的服务记录于Server设备的Flash内。
记录于Server设备的Flash内的服务又称为SDP资料库。

TCS Binary

TCP(Telephone Control Protocol):电话控制协议。
TCP包括TCS Binary和AT-Commands(电话控制)。

AT-command

电话控制AT指令,用于控制电话与数据通信。

OBEX

OBEX(Object Exchange):物件交换协议,类似于红外线协议(IrDA)。
OBEX类似于HTTP协议,执行过程为Client与Server间以Request-Response方式传送。
BT的OBEX中只有面向连接的(Connection Oriented)的连接方式。

TCP/IP协议

BT设备以TCP/IP传输资料时,TCP/IP下层连接如同拨号上网时用的PPP协议。

Audio

与Baseband直接相连,遵循ITU-T与GSM的建议标准。

传统BT的Profile

Profile

BT应用场合众多,指定Profile目的为确保BT设备间在不同应用场合下的互通性。

Profile实现互通性的方法

通信协议层:各个Profile指定由哪些通信协议组成。
应用层:制定Profile以使BT扩展到更多应用领域。

BT标准中的各种Profile

[BT_Books]《无线蓝牙技术深入探讨》笔记_第4张图片

Generic Access Profile

Generic Access Profile主要描述各BT协议架构底层Baseband与LMP层的运作方式。
Protocol Stack:Baseband, LMP, L2CAP, SDP, RFCOMM, TCS, OBEX。
User Interface Aspects:定义了某些参数。
Bluetooth Device Address(BD_ADDR):BT在UI内的称呼,定义稍有改变。
Bluetooth Device Name(User Friendly Name):BT设备的别名类似。
Bluetooth passkey(PIN Number):进行验证时需要的PIN码。
Bluetooth Class of Device(Device Type):设备种类与服务类型。

Modes

BT设备非任何时刻都能被发现,Modes为BT设备被发现与连接的操作模式。
Discoverability Mode:是否能为其他设备所发现的状态。
Connectability Modes:是否能为其他设备所连接的状态。

Security Aspects

三种安全等级,Security Mode 1,Security Mode 2,Security Mode 3。

Service Discovery Application Profile

TCS-Based

Cordless Telephony Profile

Intercom Profile

距离较近的手机的语音通话,即BT的无线电对讲机应用。
Intercom Profile中两个手机通话时,彼此功能相同(对等)。
Intercom Profile内没有定义TL(Terminal)如何发现另一个TL
没有定义的发现与验证过程在Generic Access Profile中定义。

Serial Port Profile

模拟串口应用,让使用RS232的应用能操作在BT设备上。
以此为基础的:Headset Profile, Dial-up Networking Profile, FAX Profile, LAN Access Profile。
Serial Port Profile定义两个设备间传送的封包占用一个时槽,传输速率至少128Kbit/s。
Serial Port Profile没有固定设备是否为Master or Slave。

Headset Profile

应用场景即为无线蓝牙耳机。
耳机为HeadSet(HS),与耳机连接的设备为Audio Gateway(AG)。
HS和AG都能主动发出连接信号的要求。
AG主动发出信号—AG Initiated,HS主动发出信号—HS Initiated。
先在AG与HS之间建立ACL连线传送控制信号,在由AG建立一SCO连线传送语音。

Dial-up Networking Profile

即使用蓝牙将PC于手机连接,PC通过手机GSM网络拨号上网。
手机作为Gateway(GW),个人电脑为Data Terminal(DT)。
只支持点对点(Point-to-Point)方式。

Fax Profile

与Dial-up Networking Profile类似,应用场合为无线传真。
手机作为与外网连接的Gateway(GW),PC作为Data Terminal(DT)。
DT使用到GW的拨接服务。
与Dial-up Networking Profile的区别在于,GW与DT窦支持了传真的应用服务。

LAN Access Profile

即在局域网内代替双绞线。
角色有Data Terminal(DT)与LAN Access Point(LAP)。
Single-User Mode模式:只有一台DT连接上LAP,此时两者之一均可成为Master。
Multi-User Mode模式:只有LAP能成为Piconet中的Master。

Generic Object Exchange Profile

具体有Object Push Profile,File Transfer Profile,Synchronization Profile等。
Push Data Object:Application ClientApplication Server。
Pull Data Object:Application Client Application Server。
Application Client与Server传输前,须建立Bonding程序(建立连接与配对,PIN码验证)。
Application Client与Server没有固定的Master与Slave。

Object Push Profile

功能:Push物件到另一设备,从另一设备Pull物件,与另一设备Exchange物件。
角色:Push Client(Push与Pull物件的设备),Push Server(物件交换的伺服器)。

File Transfer Profile

功能:File/Folder的传输,浏览与控制另一设备的档案管理系统。
三种档案管理方式:File Browsing,Object Transfer,Object Manipulate。

Synchronization Profile

用于手机、个人电脑等的个人信息同步管理功能。
角色:IrMC Server(物件交换伺服器,如手机/平板),IrMC Client(传送与接收,电脑)。
手机与电脑靠近时,两者均可以发出同步要求。

应用模式(Usage Model)与Profile关系

Profile:规范,明确定义某种特定应用场合下BT设备应遵循的技术要求。
Usage Model:以使用者的观点,广泛叙述BT设备的应用场景。

BT的Security保护机制

BT设备在安全机制中扮演的角色

Claimant:发出验证要求的设备。
Verifier:负责验证的设备。

安全机制模式

Generic Access Profile将安全保护机制分为三种模式:
Security Mode 1:Non-secure
Security Mode 2:Service level enforced security(Servce level是L2CAP以上的各层协议)
Security Mode 3:Link level enforced security(Link level是L2CAP以下的LMP与Baseband)。

在Service Level建立的安全机制

BT设备内的应用程序加入一些安全保护的设计。
采用L2CAP以上的许多通信协议的认证功能设计安全保护。

Link Level的安全保护机制包括验证(Authentication)和编码(Ciphering)。
两BT设备第一次连接程序称为配对,一般用4位元PIN码(用PIN码生成Private Link Key)。
安全验证的参数有四种,作为计算依据用于比较判断:
48位元的BT设备地址BD_ADDR;
128位元作为验证用途的Private Link Key;
8-128位元作为编码用途的Private Encryption Key(制造商预先设定);
128位元的随机数Random Number。

不同阶段会产生出许多的Private Link Key:
Unit Key—-Ka:刚买回BT设备,开机一些参数设定后产生的Key,存储于内部记忆体内。
Initialization Key—-Kint:第一次连接输入PIN码产生的Key,暂时性的。
Combination Key—-Kab:由设备双方(两个设备)Ka计算的Key。
Master Key—-Kmaster:Master发送广播时,将通知各Slave以Kmaster接收加密的广播。
如下为第一次连接时输入PIN码产生Link Key与Encryption Key:
[BT_Books]《无线蓝牙技术深入探讨》笔记_第5张图片
产生初始化密钥Kint:E22算法,输入有BD_ADDR(Claimant),PIN,PIN长度,RAND(Verifier)。
认证:E1算法,输入有AU_RANDA(Verifier),BD_ADDR(Claimant),Kint。
认证算法输出SRES,由Verifier负责两边生成的SRES的比较。
认证成功后算出一个辅助参数ACO(Authenticated Ciphering Offset),编码加密阶段用。
产生设备密钥Ka:E21算法,输入为RAND,BD_ADDR。Ka将作为验证连接时的Link Key。
Ka一旦产生后,几乎一生就不再改变。
产生连接密钥Link Key:与Kint功能相同,但Link Key产生后,Kint就会丢弃。
设备存储容量小Link Key产生:Claimant Ka经Kint编码传到Verifier,成为Link Key。
设备存储容量足Link Key产生:结合Verifier与Claimant的Ka产生Kab作为Link Key。

编码密钥Kc(Encryption Key),128位元。
Kc的产生:E3算法,输入有Link Key,96位元的COF(Ciphering Offset),EN_RAND。
数据实际传输时并非直接用Kc将数据编码,而是基于此产生一个Kcipher。
Kcipher密钥产生:E0算法,输入有Kc,BD_ADDR(设备A),Clock(时序)。
设备A与设备B每次传送封包时,都将产生一个新的Kcipher将封包加密。
使用Kcipher是因为其长度更短,在编码时耗时较少。
对于曾经连接过的两个设备,已经存储了Link Key,进行验证与编码时不需要重新计算。

BT芯片与模组的发展

BT硬件构造

主要元件为基频控制器(Baseband Controller),RF发射元件(Bluetooth Radio)。
应当包含:Flash,CPU,Baseband,RF元件。

附录–GPRS网络标准制定与特色

2G:第二代移动通信系统。
欧洲ETSI协会制定出GSM通信系统获得广泛使用。
美国CDMAone慢了GSM足足7年。但CDMA技术较为优秀。
3G:第三代移动通信系统。
[BT_Books]《无线蓝牙技术深入探讨》笔记_第6张图片
移动TD-SCDMA,为中国自主研发。
联通WCDMA,世界使用最为广泛,3G网络最快。
电信CDMA2000,网络覆盖面大。

你可能感兴趣的:(Net-Bluetooth)