蓝牙数据传输技术知识.ppt
第四章 蓝牙数据传输技术,蓝牙数据传输技术,数据传输基本概念,物理链路与逻辑链路,物理链路就是一条无源的点到点的物理线路段,中间没有任何交换节点。逻辑链路是另一个概念,在需要在一条线路上传送数据的时候,除了必需的一条物理链路外,还需要有一些必要的通信规程来控制这些数据的传输。逻辑链路就像一条数字管道,可以在它上面进行数据通信。,服务访问点,当采用复用技术时,一条物理链路上可以有多条逻辑链路。数据传输实验的数据链路层通过服务访问点实现了信道的复用。在实际的数据通信中,一个主机中有多个上层应用需要和其它的主机上的应用进行通信,所以,数据链路层需要向上提供多个服务访问点(SAP)以向多个上层应用提供服务。,服务访问点,在数据传输时需要两种地址:物理地址(标识主机)和SAP地址(标识服务)。物理地址由数据链路层媒体访问控制MAC子层负责传输,SAP地址由数据链路层中的逻辑链路控制LLC子层负责传输。,服务访问点,在TCP/IP协议栈上,TCP层以上看到的是经映射的物理地址和逻辑地址,分别是IP和端口号。在数据传输实验中,物理地址是不经过转换的,可看成是网卡地址或IP地址,SAP可以看成服务的端口号。注意:一个应用可同时使用多个SAP,一个SAP在一个时间只能为一个应用服务。,面向连接与无连接,面向连接服务具有连接建立、数据传输、连接释放三个阶段。在传送数据时是按序传送的。这一点和电路交换相似,因此它在网络层又称为虚电路服务。无连接服务就是数据包服务。无连接服务不需要建立连接,不需要确认,实现简单,因而在局域网中得到广泛应用。,面向连接与无连接,面向连接的服务开销较大,特别适合传送很长的数据文件无连接服务优点在于灵活方便,比较迅速。可用于点对点通信、对所有用户发送信息的广播和只向部分用户发送信息的多播。但无连接不能防止报文的丢失、重复和无序。面向连接和面向无连接的服务不是针对某一层协议,而是针对各层网络协议而言的。,面向连接与无连接,数据链路层中,无连接服务实现简单,在局域网中得到广泛应用。在表示会话层中,也同样存在面向连接和面向无连接的两种服务。本实验中所使用的会话层协议精简自蓝牙协议中的OBEX(OBject Exchange)协议,蓝牙协议栈中的OBEX协议不支持面向无连接的服务。,蓝牙数据传输方式,数据传输方式,蓝牙技术具备同时发送语音与数据两种数据类型蓝牙技术支持电路交换与包交换两种数据传输方式在蓝牙技术标准中电路交换的传输称为SCO链路,包交换的传输称ACL链路,SCO链路,面向连接的同步传输(Synchronous Connection-Oriented,SCO)链路属于电路交换的同步传输类型,电路交换是当主设备与从设备间的连接一巳建立后,不管有无数据发送,系统都会预留固定间隔的时限给主设备与从设备,其他从设备就不能利用此连接上的时隙来发送数据,如图所示,SCO链路,SCO链路比较适合语音的传输,每一个SCO链路支持64Kb/s的语音通话,一旦SCO链路建立,主设备和从设备可直接发送SCO包,主设备无需事先询问从设备,SCO链路属于点对点的对称连接,即SCO链路建立在一个主设备与从设备间。当SCO链路在传输语音时,由于语音包不适合因干扰而重新发送,保护语音包的方法是采用严格语音编码,即使接收语音一方收到包错误率非常高,解码后的语音品质仍可以接受。,SCO包,SCO包不使用CRC校验,并且不需要重发,没有有效载荷头,一般用在传送同步(语音)信号HV1包使用1/3 FEC纠错,支持高质量语音HV2包使用2/3 FEC纠错,支持中等质量的语音传输HV3包不使用FEC纠错,支持高速语音传输,ACL链路,无连接的异步传输(Asynchronous Connection-Less,ACL)链路属于包交换的异步传输类型。包交换是将高层的数据切割成一段段的包。当物理通道上的时隙没有任何SCO链路时,ACL链路可占旧任意时隙来信输数据。一旦系统需要传输SCO链路时,ACL链路则自动空出时隙提供SCO链路使用。ACL链路只在SCO链路不使用的时隙上传输。,ACL链路,ACL链路,ACL链路这种包交换的估输类型,是在作输数据时才运用时隙,与现在因特网传输数据的方式相同,适合传输突发性的数据信息。主设备可同时与多个从设备建立ACL链路,属于点对多点的非对称连接。主设备负责分配主从网络中的每个从设备到主设备间的传输速率。在主设备送出ACL链路包之前,必须先询问各个从设备,选定某个从设备后才能发送数据信息。ACL链路也支持主设备到所有从设备的广播信息。,ACL链路,ACL链路支持对称和非对称两种传输速率在非对称速率时,虽然主从网络的最大带宽为1Mbs,但是包还需要负责发送控制信号,所以ACL链路的数据传输率在非对称连接时,主设备到从设备的传输速率为721Kbs,从设备到主设备的传输速率为57.6Kbs。对称连接时,主设备到从设备间的速率各为432.6Kbs。当ACL链路传输数据信息时,为了保证包的正确性,将每个包都加以保护。若接收一方收到的包差错率非常高时,必须命令发送端将该包更新发送。,ACL包,可以传递用户的数据,共定义了七种类型,其中六种有CRC码并可以重传,链路数目,主设备与从设备将物理通道内的时隙进行最充分的利用后,能够同时建立许多ACL链路与SCO链路。主设备与各个从设备间最多只有一条ACL链路,但是可以有多条SCO链路。主设备与从设备间最多可以支持3条SCO链路、或是主设备与3个从设备各建立起一条SCO链路等。在建立或是关闭SCO链路时,依赖于先建立起一条ACL链路来传递控制信号。建立ACL链路比建立SCO链路容易,通常若主设备与从设备无法互相连接时,大部分的情况都是因为无法建立起SCO链路。,如何建立连接,主设备与从设备间的时序同步,所有的蓝牙设备都有一个内部系统时序CLXN,用以决定包发送的时间,这个内部时不断地进行计算,不能被关闭或调整。蓝牙设备每次递增的时间,为312.5us。时钟速率为3.2kHz。CLKN是一个自由运转的时钟,而目是所有其它时钟特性的参考。在高度活跃状态下,本地时钟用精度为+/-20ppm晶体振荡器产生。,时序同步,不同工作状态的时钟分别有本地时钟(CLKN,ClocK Native)预计时钟(CLKE,CLocK Estimate)主设备时钟(CLK,CLocK)每个从设备在自己的CLKN上加上合适的偏移量来与CLK同步,来确定它们的发送和接收时间。,时序同步,CLKE和CLK通过增加一个补偿值取自CLKN基准。CLKE是一个处理接收器的本地时钟估算呼叫单位,即:在呼叫CLKN上加补偿近于接收的CLKN。通过使用接收的CLKN,呼叫加速了链接建立。,时序同步,CLK是匹克网主时钟,它用于网中所有定时和时序安排。所有的蓝牙设备都使用CLK来安排它们传输和接收时序。CLK通过在本地时钟CLKN的基础上增加一个补偿值获得。对主单元来说,补偿值是0;而对各个从单元来说,都对自身的CLKN加上一个适当的补偿值。虽然在蓝牙设备所有CLKN都以相同的标称速率运行,但相互之间的漂移引起了CLK的不准确性。因此在从单元的补偿必须定期的修改,以致CLK近似于主单元的CLKN。,蓝牙状态分析,2个主要工作状态:守候状态和连接状态7个中间临时状态:寻呼状态、寻呼扫描状态、查询状态、查询扫描状态、主设备状态、从设备响应状态和查询响应状态,蓝牙状态分析,守候状态是蓝牙设备的默认状态,设备处于低功耗状态,它可以每隔1.28s离开守候状态进入寻呼扫描或查询扫描状态,也可以进入寻呼或查询状态如果主设备知道一个设备的地址,就采用寻呼建立连接;如果地址未知,就采用查询建立连接,连接过程,一般而言,主设备与从设备经过中间状态建立连接的过程如下:步骤13:主设备进入查询状态,周围的从设备已经将查询扫描状态打开(EnabIe),从设备会随时接收来自主设备发出的查询信号。查询信号是含有查询访问码的ID包。步骤45:从设备收到主设备的查询信号后,进入查询回应状态,返回FHS包告知主设备有关自己的BD_ADDR地址、内部时序、设各种类、以及多长时间后进入呼叫扫描状态等数据。所以当查询状态结束后,主设备已经得到从设备响应的BD_ADDR地址、内部时序以及设备种类。,连接过程,一般而言,主设备与从设备经过中间状态建立连接的过程如下:步骤67:主设备从FSH包得到从设备的地址等数据后,接着进入呼叫状态与特定的从设备建立连接。但此时从设备的时序仍尚未与主设备时序同步,所以主设备以预计的时序CLXE与含有设备访问码的ID包来与特定的从设备建立连接。设备访问码是主设备以从设备的BD_ADDR计算而来。,连接过程,一般而言,主设备与从设备经过中间状态建立连接的过程如下:步骤810:这时从设备已经处于呼叫扫描状态,不断地在接收信号设备访问码,当从设备收到呼叫信号后进入呼叫回应状态,返回ID包作为响应。步骤1113:主设备收到此ID的响应后也进入主设备回应状态,再发送给从设备一个FHS包。此时FHS包上的信号有主设备的时序、主设备的BD_ADDR地址、连接成员地址等信息。当从设备收到FHS包上的信息,返回一个ID包作为响应,主设备与从设备彼此间的连接就建立,主设备与从设备都进入连接状态。,连接过程,当从设备成功接收一个寻呼消息后,它们都进入响应状态来交换建立连接所必须的信息。对于连接,最重要的是两个蓝牙设备使用相同的信道接入码,使用相同的信道跳频序列,时钟是同步的。信道接入码和信道跳频序列都起源于主设备BD_ADDR,时钟由主设备时钟决定。,寻呼扫描状态及其处理,设备在扫描窗口中监听包含自己的设备接入码的ID包。设备根据自己的寻呼跳频序列来选择扫描频率。这是一个32跳频序列,其中每个跳频频率是唯一的,由设备的地址和本地时钟决定,每1.28s选择一个不同的频率。,寻呼工作流程,寻呼状态及其处理,主设备在不同的跳频信道上发送包含从设备接入码的ID包来尝试找到从设备主设备寻呼某个从设备,必然要知道后者的设备地址及对后者的本地时钟进行估计,这两点被用来决定主设备的寻呼跳频序列,数据传输实验中设计的协议层,数据链路层,媒体是长期的,而连接是有生存期的。这种建立起来的数据收发关系就称为数据链路。数据链路层同时负责流量控制和差错控制。流量控制采取ARQ和滑动发送窗口的机制,发送窗口定为4。数据量大的时候,每四个信息帧返回一个响应帧,减小开销。差错控制采用CRC16。数据链路层分成了两个子层,一个是逻辑链路控制LLC,另一个是媒体访问控制MAC。,数据链路层,LLC的帧结构,MAC的帧结构,自环与广播,多数数据链路层都支持自环接口(Loopback Interface)以允许在同一台主机上的两个应用进行通信。在实际的TCP/IP协议中,这个IP地址分配给自环接口,命名为localhost。自环接口的IP数据报不能出现在任何的网络的物理链路之上。,自环与广播,在本实验中,对一个物理链路用一个16位的ACL_Handle无符号整数句柄进行标识。数据传输实验指定了两个特殊的句柄:Loopback(0 x0000)指向本机的自环链路。目的物理地址为0 x00 00 00 00 00 01BroadCast(0 x00FF)广播到网络的每台主机。目的物理地址为0 xFF FF FF FF FF FF,自环与广播,使用这个Loopback的ACL_Handle可以和本机的应用建立逻辑连接,获得的LLC_Handle不区分本地逻辑连接和远端逻辑连接,是一致的。自环的MAC数据包不会出现在实际的物理链路上,而是直接交给本机数据链路层的接收模块处理广播的MAC数据包给所有的与本机建立物理连接的主机发送一份,同时也向本机发送一份。,自环与广播,ARQ中的滑动窗口,没有收到对方的确认信息,发送端不能无限制地发送数据帧,否则重发会增大系统开销;另一方面,对所发送的大量数据帧进行序号的编排,也要占用较多的序号比特数。,ARQ中的滑动窗口,表示会话层,对象交换协议 OBEX(OBject Exchange)是一种紧凑、高效的二进制协议。它使用对象这种思想把各种上层应用所要交换的数据封装成统一的格式。它可以支持同步、文件传输及对象推入等类型的应用。,OBEX协议,OBEX协议本身分为两部分:数据对象模型和会话协议。对象模型包括了将要传输的数据对象的各种信息以及数据对象本身。OBEX所指的对象是一个抽象的概念,任何数据都可以称为对象,数据对象由一系列信息头组成。,OBEX协议,会话协议规定了设备间的数据传输过程,OBEX使用基于二进制包结构的客户机/服务器模式作为该过程的模型。服务端与客户端表明了建立连接双方的身份,所有的数据请求信息均由客户端完成,服务端仅做出对数据交换请求的同意或否定的响应。OBEX数据传输过程属于半双工操作,它通常由一系列的请求-响应对组成,客户机发出请求,服务器给予响应。,OBEX协议,本实验采用的简化OBEX协议,可以描述为这样一个有限状态机。拥有8个状态,15个事件,8个动作。虽然本状态机的状态、事件、动作较多,但是因为基于停止-等待机制,所以状态的转移并不复杂。,会话状态,INITIAL:初始化状态,状态机的初始状态;LLC_OK:逻辑链路准备就绪状态,表明下层已经做好传输数据的准备;READY:会话层准备就绪状态,表明已经建立会话层连接,可以进行数据的传送或接受。W4RESPONSE_CONNECT:客户端发出会话层建链请求后,等待对建链请求响应的状态;,会话状态,W4RESPONSE_DISCONNECT:客户端发出会话层断链请求后,等待对断链请求响应的状态;W4_PUT:服务端在连续收到Put请求时的等待状态;W4RESPONSE_PUT:客户端在连续Put数据时等待对Put响应的状态;,一、使用RS232串口1、把开关拨到RS232档2、插上RS232串口九针插头3、插上TTP专用电源4、插上耳机、话筒5、启动程序,二、使用USB接口1、把开关拨到USB档2、插上USB插头3、插上耳机、话筒4、启动程序,注意:1、使用RS232串口时需要接上电源,使用USB接口时不需要电源 2、RS232串口与USB接口只能同时接上一个,否则将损坏设备!3、在设备工作时请不要拨动开关,TTP系列硬件操作流程,数据传输实验,数据传输实验软件提供了以下基本操作:物理链路的建立;服务访问点的注册;逻辑链路的建立;面向连接的数据传输操作;面向无连接的数据传输操作;自环的数据传输操作;,数据传输实验,数据传输实验,主界面主要分成四部分:(1)ACL操作及信息 本地设备地址:显示初始化后本地主机的地址;对方设备地址:显示与本地主机建立物理链路(ACL)连接的对方设备的地址;查询到的设备:下拉菜单中显示查询到的周围设备的地址;查询设备:点击此按钮启动蓝牙设备查询周围的设备;建立ACL连接:选择一个设备后点击此按钮建立物理链路(ACL)连接;断开ACL连接:断开已经存在的物理链路(ACL)连接。,数据传输实验,主界面主要分成四部分:(2)信息窗口ACL信息:显示物理链路(ACL)的状态,初始化、建链、断链信息等;MAC信息:显示数据链路层媒体访问控制子层(MAC)的帧格式。,数据传输实验,主界面主要分成四部分:(3)应用信息 显示活动的文件应用(或聊天应用)数目,并从下拉菜单中选择两种应用的子界面。(4)统计信息 显示数据传输过程中物理层和数据链路层的统计信息。,数据传输实验,数据传输实验,聊天应用子界面主要分成五部分:(1)应用层聊天程序输入需要发送的信息,显示收到的信息。(2)会话层状态转移图显示数据传输过程中会话层的各种状态,若选择单步执行可观察到每一步上层应用程序的操作引发的OBEX状态的变化。,数据传输实验,聊天应用子界面主要分成五部分:(3)广播、组播窗口本窗口加入的组:选择该应用窗口加入分组类型;组播或广播的消息:输入传输消息内容;目的主机:消息发送到本地主机或是远端;,数据传输实验,聊天应用子界面主要分成五部分:(4)应用状态会话层MRU:修改所接收的对方会话层数据包中所封装的上层应用数据包的大小;会话层状态:是否连接;LLC Hadle:链路LLC句柄;SSAP:显示源服务访问点;DSAP:显示目的访问点。,数据传输实验,聊天应用子界面主要分成五部分:(5)协议栈各层次流程会话层流程:对状态转移图的具体解释,单击该表格可以观看会话层具体的帧格式,如下图所示;数据链路层子层LLC状态:显示LLC发出接受帧的状态。,数据传输实验,数据传输实验,数据传输实验,文件应用子界面主要分成四部分:(1)应用层文件传输选择传输的文件,显示文件传输状态。(2)会话层状态转移图显示数据传输过程中会话层的各种状态,若选择单步执行可观察到每一步上层应用程序的操作引发的OBEX状态的变化。,数据传输实验,文件应用子界面主要分成四部分:(3)广播、组播窗口及应用状态本窗口加入的组:选择该应用窗口加入分组类型;组播或广播的消息:输入传输消息内容;目的主机:消息发送到本地主机或是远端,数据传输实验,文件应用子界面主要分成四部分:(4)应用状态会话层MRU:修改所接收的对方会话层数据包中所封装的上层应用数据包的大小;会话层状态:是否连接;LLC Hadle:链路LLC句柄;SSAP:显示源服务访问点;DSAP:显示目的访问点。,数据传输实验,文件应用子界面主要分成四部分:(5)协议栈各层次流程 会话层流程:对状态转移图的具体解释,单击该表格可以观看会话层具体的帧格式;数据链路层子层LLC状态:显示LLC发出接受帧的状态。,数据传输实验,数据传输实验的内容1.面向连接的操作2.面向无连接的操作3.自环,数据传输实验,数据传输实验的内容1.面向连接的操作步骤 建立物理链路 注册服务访问点,注册组播组 建立数据链路层连接 建立表示会话层连接,进行数据传输(聊天,文件传输),断开表示会话层连接 断开数据链路层连接。注销组播组,服务访问点。,数据传输实验,数据传输实验的内容2.面向无连接的操作步骤 建立物理链路。注册服务访问点,注册组播组。向本地主机、对方主机或全网络广播,组播数据链路层的帧,如网络信息。在面向连接的操作中,只要注册的服务访问点存在,就可以进行面向无连接的操作。,数据传输实验,数据传输实验的内容3.自环的操作步骤与1.面向连接的操作类似建立物理链路 注册服务访问点,注册组播组 建立数据链路层连接 可以在一台机器上两个应用建链,进行数据传输。在自环方式下,可以看到MAC层的帧,但不会有MAC层帧的流量统计,因为数据不真正发到物理信道上。,数据传输实验,主界面观察项目1数据链路层MAC子层帧的结构;2物理层、LLC子层、MAC子层的数据流量和帧流量,比较流量在自环和非自环时的区别,广播组播等无连接包和面向连接数据包对流量的影响。3可以在LLC设定中改变滑动窗发送窗口和接收窗口的大小,窗口大小的改变将在子应用界面中体现。,数据传输实验,子应用观察项目1观察数据链路LLC子层的数据流程,观察LLC帧结构,思考命令帧、响应帧,无编号帧、信息帧、监督帧等定义的含义;2观察会话层的状态转移和数据传输流程,观察不同会话层包中包含的不同信息头的含义;3观察改变主界面滑动窗大小对子应用界面LLC子层的影响;,数据传输实验,子应用观察项目4改变会话层MRU的大小,思考MRU(Max Received Unit)的含义和用途,观察会话层MRU的改变对LLC子层的影响:减小MRU时,LLC子层的帧流量、数据流和传送时间的变化;增大MRU时,LLC子层的滑动窗即可看出效果,观察监督帧生成的变化。5改变会话层“自动”运行状态为“逐步”状态,单步执行程序观察会话协议的协商机制。,数据传输实验,数据传输实验报告要求1.在会话层连续发送大量数据和少量数据的时候,分别记录数据链路层LLC子层的连续ARQ协议在发送流程上的区别。2.记录不同滑动窗的窗口数对系统性能的影响。3.比较流量在自环和非自环时的区别,计算MAC层和LLC层的数据载荷并记录。4.根据对会话层状态图的观察,完成状态转移表,数据传输实验,常见问题1两台设备同时进行查询设备和ACL建链时会查找不到或建链失败。回答:根据协议,两台设备同时查询时无法相互找到,两台设备同时建链会导致建链失败,实验操作者在进行试验操作时避免同步的操作。2在运行程序时出现程序“假死”现象。回答:此时应当执行主界面上的“重置”按钮,重新进行实验。如果重置之后程序仍然不能够正常运行,重新启动程序即可解决上述问题。,数据传输实验,常见问题3一方程序重置程序,另一方程序协议无法继续运行。回答:由于协议的状态机可以逐步运行,因此没有设置超时等操作,一方程序重置对等方无法知道,建议在一方需要重置实验时,实验操作双方都应当重置实验。4正确选择设备仍然不能初始化成功。回答:请关闭程序,切断设备电源,一分钟后接通电源,重新启动程序。,