IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 蓝牙核心规范(V5.2)7.0-深入详解之L2CAP(1)(五星推荐☆☆☆☆☆) -> 正文阅读

[Java知识库]蓝牙核心规范(V5.2)7.0-深入详解之L2CAP(1)(五星推荐☆☆☆☆☆)

??蓝牙篇之蓝牙核心规范(V5.2)深入详解汇总


目录

?1.?L2CAP作用??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

?2.?L2CAP架构? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ? ? ? ? ? ??

3..CID(通道标识符)?????????????????????????????????????????????????????????????????? ?????

4.?数据包格式?????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

4.1.?基本L2CAP模式下的面向连接的通道???????????????????????????????????????????????

4.2.?基本L2CAP模式下的面向无连接的通道??????????????????????????????????????? ? ?

4.3.?在重传/流体控制/流媒体模式中的面向连接的信道????? ? ? ? ? ? ? ? ? ? ? ??

?4.3.1?L2CAP头字段? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

??4.3.2?控制字段? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ??

?4.3.3?L2CAP SDU长度字段? ?

?4.3.4?信息有效载荷字段????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ?

??4.3.5?FCS字段???????????????????????????????????????????????????????????????????????????????????????????????????????????????

4.4.?基于信用的流量控制模式的连接通道和增强基于信用的流量控制模式?????????????????????????????????????????????????????????????????????????????????????????????????????????????

?4.4.1?L2CAP Header字段????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

?4.4.2?L2CAP SDU Length字段?????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????

?4.4.3 ?information Payload field字段???????????????????????????????????????????????????????????????????????? ???

5.?信号包格式????????????????????????????????????????????????????????????????????????????????

?5.1?L2CAP_COMMAND_REJECT_RSP(代码为0x01)??????????????????????????

?6.?配置参数选项???????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ??? ?

?6.1?? 最大传输单元(MTU)???????????????????????????????????????????????????????????????????

?6.2?? 刷新超时选项??????????????????????????????????????????????????????????????????????????????????

?6.3?? 服务质量(qos)选项?????????????????????????????????????????????????????????????????????????

?6.4?? 重传输和流量控制选项?????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ???

?6.5?? 帧检查顺序(fcs)选项????????????????????????????????????????????????????????????????????

?6.6?? 扩展流量规范选项????????????????????????????????????????????????????????????????????????

?6.7?? 扩展窗口大小选项?????????????????????????????????????????????????????????????????????????


?本小结主要阐述主机的A部分,逻辑链路控制和适配协议规范(L2CAP)。支持更高级别的协议多路复用、分组分割和重组,以及服务质量信息的传输。协议状态机描述了本规范的包格式和组成。

?1.?L2CAP作用??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

  1. ?为上层协议提供面向连接和无连接的数据服务,具有协议复用能力和分割和重组操作。

通过由资源管理器提供的帧中继服务,传输帧的长度由运行在L2CAP上的单个应用程序控制。如果L2CAP能够控制PDU的长度,则可以更好地提供许多多路复用的应用程序。

?分割和重组的优点:

a)分割将允许应用数据单元,以满足延迟要求。当L2CAP控制数据包大小时,

b)内存和缓冲区管理更容易。

c)通过重传而进行的纠错可以更有效。

d)当L2CAPPDU损坏或丢失时,被销毁的数据量可以小于应用程序的数据单元。

e)该应用程序与将应用程序数据包映射到底层数据包所需的分割相分离。

????????2.?L2CAP层提供逻辑通道,称为L2CAP通道的逻辑通道,在一个或多个逻辑链路上多路复用。

L2CAP支持通过单个控制器和跨多个控制器进行多路复用。一个L2CAP通道应一次在一个控制器上运行。在信道设置期间,使用协议多路复用能力将连接路由到正确的上层协议。对于数据传输,需要使用逻辑信道多路复用来区分多个上层实体。可能有多个上层实体使用同一协议。

? 2.?L2CAP架构? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ? ? ? ? ? ??

?

????????提供控制层功能,并负责所有内部信令、L2CAP点对点信号和上下层的信令。

  • ?负责向通道管理器、重传输和流控制块以及那些不需要重传输和流控制服务的应用程序数据流提供帧中继服务。
  • 它负责通过底层接口提供的设施,协调与多个L2CAP通道相关的数据包的传输和接收。

?

?控制器为空气传输的数据提供错误和流量控制,对于通过HCI传输的数据存在HCI流量控制。当多个数据流使用单独的L2CAP通道在同一控制器上运行时,每个通道都需要单独的流控制。提出了一种基于窗口的流量控制方案。

?

当L2CAP通道从一个控制器移动到另一个数据时,数据可能会丢失。此外,一些应用程序需要的残误率比一些控制器可以提供的要小得多。L2CAP提供了L2CAP PDU的错误检查和重传输。L2CAP中的错误检查可以防止由于控制器错误地接受包含错误但通过基于控制器的完整性检查而导致的错误。L2CAP错误检查和重传输还可以防止由于控制器冲洗而导致的数据包丢失。误差控制与流量控制一起工作,即流量控制机构将节流再传输和第一传输。

?

?流媒体应用程序,如音频,以商定的数据速率设置一个L2CAP通道,并且不希望流控制机制,包括控制器中的流控制机制,来改变数据流。刷新超时用于保持传输端的数据流动。流媒体模式用于停止基于HCI和控制器的流式控制应用于接收侧。

?

?一些控制器可能具有有限的传输能力,并且可能需要不同于L2CAP分割创建的大小。因此,L2CAP以下的层可以进一步分割并重新组合L2CAP pdu,以创建适合每一层能力的片段。在L2CAP PDU的传输过程中,在两个对等设备中可能会发生许多不同水平的分割和重组。

HCI驱动程序或控制器可以对L2CAPPDU进行分割,以遵循主机控制器接口传输方案的包大小限制。这导致HCI数据包有效负载携带L2CAPPDU的开始和延续分割。类似地,控制器可以分割L2CAP Pdu,将它们映射到控制器包。这可能导致控制器包有效负载携带L2CAP PDU的开始和继续分割。

协议堆栈的每一层可以传递不同大小的L2CAPpdu片段,并且在每个对等设备中由一层创建的片段的大小可能不同。然而PDU在栈内分割,接收L2CAP实体仍然重组片段以获得原始的L2CAPPDU。

3..CID(通道标识符)?????????????????????????????????????????????????????????????????? ?????

图2.1:动态分配的CID分配

????????通道标识符(CID)是表示设备上的逻辑通道端点的本地名称。cid的范围与逻辑链接相关,如图2.1所示。空标识符(0x0000)不得用作目标端点。从0x0001到0x003F的标识符为特定的L2CAP函数保留。这些通道被称为固定通道。至少应支持L2CAP信道(固定通道0x0001)或L2CAP LE信道(固定通道0x0005)。如果支持固定通道0x0005,则应支持固定通道0x0004和0x0006(见表2.2)。可以支持其他固定通道。L2CAP_INFORMATION_REQ/L2CAP_INFORMATION_RSP机制(应用于确定远程设备在ACL-U逻辑链路上支持哪些固定通道。?

????????? ?

表2.1:ACL-U、ASB-U和AMP-U逻辑链路上的CID名称空间

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

表2.2:LE-U逻辑链接上的CID名称空间

4.?数据包格式?????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

?除信息有效载荷字段外,所有L2CAP层包字段都应使用小端模式

4.1.?基本L2CAP模式下的面向连接的通道???????????????????????????????????????????????

?注释:

CID:目标通道端点。

Informaiton payload:其中包含从上层协议(传出数据包)接收到或发送到上层协议(传入数据包)的有效负载。具有动态分配cid的通道的MTU在通道期间确定配置。(长度在0-65535之间)

4.2.?基本L2CAP模式下的面向无连接的通道??????????????????????????????????????? ? ?

?注释:

协议/服务多路复用器(PSM):2个八进制(最小值)

Informaiton payload:此参数包含要分配给piconet中的所有从设备的有效负载信息,或将通过L2CAP无连接通道发送的数据分配到特定的远程设备。实现方案应支持无连接通道上的48个八位制的无连接MTU(MTUcnl)。设备也可以显式地改变为更大或更小的无连MTU(MTUcnl)。

4.3.?在重传/流体控制/流媒体模式中的面向连接的信道????? ? ? ? ? ? ? ? ? ? ? ??

?4.3.1?L2CAP头字段? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? Length:2个字节(不包含Length 和CHannel ID),因此,对于I帧和S帧,长度字段包括控制、L2CAP SDU长度(存在时)、信息和帧检查序列(FCS)(存在时)字段的长度。

????????Channel ID :此字段包含通道标识(CID)。

??4.3.2?控制字段? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ?

?S帧和I帧都包含控制域,控制域有三种:?

  • 标准控制字段:重传模式和流模式
  • 增强控制字段:增强的重传模式和流媒体模式。
  • 扩展控制字段:在第一次成功使用扩展窗口大小选项和之后的扩展控制字段之前。

控制字段有两种帧类型:信息帧类型和监控帧类型 。

  • 信息帧格式(I帧):

????????I帧应用场景:L2CAP实体间信息传输。

????????TxSeq:发送序列号

? ? ? ? ReqSeq:接收序列号

????????R:重传位

????????SAR:用于分割和重组控制。

?????????F:轮询/最终位功能

?

  • 监控帧格式(S帧)

? ? ? ? S帧应用场景:?用于确认i帧并请求i帧的重新传输。

?

?????????Type:I帧的类型位应为0,S帧的类型位应为1

?????????ReqSeq:接收序列号

  • ????????接收序列号被接收端用于确认I帧,并在REJ和SREJ帧中请求具有特定发送序列号的I帧的重传输。

?????????S:监听功能

  • ??????????RR(接收器准备就绪)、REJ(拒绝)、RNR(接收器未准备就绪)和SREJ(选择性拒绝)。

?????????R:重传位:

  • ????????R=0:正常运行。发送方使用重传输定时器来控制I帧的重传输。发送人不使用监视器或计时器。
  • ????????R=1:接收方侧请求发送方推迟i帧的重传输。发件人使用监控器或计时器监视信号。发送人不使用重传计时器。

? ? ? ? ?P:轮询位:

  • ??????????P位被设置为1,以从接收器请求响应。接收器应立即以F位设置为1的帧进行响应。????????

? ? ? ? ?F:终结位:

  • ?????????对于P位设置为1的S帧,F位设置为1。

?4.3.3?L2CAP SDU长度字段? ? ? ????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???? ? ?

????????当SDU跨越多个i帧时,应通过SAR=0b01=“L2CAPSDU的开始”识别序列中的第一个SDU帧。????????

????????L2CAP SDU长度字段应指定SDU中八位数的总数。L2CAP SDU Length字段应出现在带有SAR=0b01(L2CAPSDU的开始)的I帧中,并且不得用于任何其他I帧中。当SDU未分段(SAR=0b00)时,不需要L2CAPSDU长度字段,也不应存在。?

??4.3.4?信息有效载荷字段????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ?

? ? ? ? ?注意其长度。

???4.3.5?FCS字段???????????????????????????????????????????????????????????????????????????????????????????????????????????????

? ? ? ? ?帧检查序列(FCS)一共2个字节。

????????FCS由生成器多项式g(D)=D^16+D^15+D^2+1构建.

????????16位LFSR最初加载的值为0x0000,如图3.11所示。开关S设置在位置1,数据移入,LSB first在最后一位进入LFSR后,开关设置在位置2,寄存器内容从右到左传输(从位置15开始,然后是位置14等)。

图3.10:产生FCS的LFSR回路

图3.11:FCS生成电路的初始状态

?????????FCS生成的例子:

????????1.I帧

? ? ? ? Length=14

? ? ? ? Control=0x0002(2 (SAR=0b00, ReqSeq=0b000000, R=0, TxSeq=0b000001)?

????????Information Payload = 00 01 02 03 04 05 06 07 08 09 (10 octets, hexadeci-
mal notation)

?????????===>FCS = 0x6138

????????===>Dato to Send?= 0E 00 40 00 02 00 00 01 02 03 04 05 06 07 08 09 38 61 ?

(hexadecimal notation)

????????2.RR帧
????????Length = 4
????????Control = 0x0101 (ReqSeq=0b000001, R=0, S=0b00)
????????==> FCS = 0x14D4
????????==> Data to Send = 04 00 40 00 01 01 D4 14 (hexadecimal notation)

4.4.?基于信用的流量控制模式的连接通道和增强基于信用的流量控制模式?????????????????????????????????????????????????????????????????????????????????????????????????????????????

图3.12:基于LE信用的流量控制和基于信用的流量控制增强模式下的L2CAPPDU格式

?4.4.1?L2CAP Header字段????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

?????????Length:2+L2CAP SDU Length)

????????CID:标识数据包的目标通道端点。

?4.4.2?L2CAP SDU Length字段?????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????

?????????SDU的第一个K帧应包含L2CAPSDU Length字段,该字段应指定SDU中八进制的总数。所有属于同一SDU的后续k帧不应包含L2CAP SDU? Length字段。

?4.4.3 ?information Payload field字段???????????????????????????????????????????????????????????????????????? ???

?注意长度。

5.?信号包格式????????????????????????????????????????????????????????????????????????????????

?????????下面主要介绍在对等设备上的两个L2CAP实体之间传递的信号命令。

????????通过ACL-U逻辑链路管理信道的信道应使用CID0x0001,通过LE-U逻辑链路管理信道的信道应使用CID0x0005。

????????一旦设置了底层逻辑传输并启用了L2CAP流量,信令通道就可用。

????????通过固定通道CID0x0001,可以在单个c帧中发送多个命令,而通过固定通道CID0x0005,每个c帧只需要发送一个命令。命令采用请求、响应和指示的形式执行。所有L2CAP实现都应支持接收有效载荷长度不超过信令MTU的c帧。C帧(MTUsig)的最小支持有效载荷长度见表4.1。L2CAP实现不应该使用超过对等设备MTUsig的C帧。如果设备接收到一个超过其MTUsig的C帧,则它应发送一个包含所支持的MTUsig的L2CAP_COMMAND_REJECT_RSP。实现程序应能够处理通过固定通道CID0x0001发送的L2CAP数据包中的多个命令的接收。

注意:信号数据包的名称有一个后缀,表示其类型:用于请求的_REQ,用于响应的_RSP,_IND用于表示指示。

表4.1:最小信号MTU

图4.1:信令通道上的L2CAP PDU格式

图4.2:命令格式

?????????Code:标识命令的类型.当在接收的信令通道上使用未知或不允许的代码字段接收包时,将响应发送L2CAP_COMMAND_REJECT_RSP包。

表4.2:信令命令代码

?Identifier

????????请求设备设置此字段,并且响应设备在其响应中使用相同的值。在每个信道内,每个连续命令应使用不同的标识符。在在命令中原始传输一个标识符之后,如果随后使用了所有其他标识符,则可以回收该标识符。

?????????RTX和ERTX计时器用于确定远程终端何时不响应信令请求。在RTX或ERTX计时器到期时,如果重新发送了重复的请求,则应使用相同的标识符。

????????在特定信令信道上接收重复请求的设备应在同一信令信道上进行重复响应的响应。带有无效标识符的命令响应将被静默地丢弃。信号标识符0x00是一个非法标识符,不得在任何命令中使用。

?Length

????????仅表示命令的数据字段的大小,即它不包括代码、标识符和长度字段。

Data

?????????数据字段的长度是可变的。代码字段确定数据字段的格式。长度字段决定了数据字段的长度。

?5.1?L2CAP_COMMAND_REJECT_RSP(代码为0x01)??????????????????????????

?????????当具有未知命令码的响应不合适时,应发送L2CAP_COMMAND_REJECT_RSP包。该标识符应与被拒绝的命令数据包的标识符相匹配。实现程序应始终发送这些数据包,以响应未知的信号数据包。L2CAP_COMMAND_REJECT_RSP数据包不应该响应于已标识的响应数据包。

????????当L2CAP包中包含多个命令,并且包超过接收机的信令MTU(MTUsig)时,应响应发送单个L2CAP_COMMAND_REJECT_RSP包。该标识符应与L2CAP数据包中的第一个请求命令相匹配。如果只识别响应,则应悄悄丢弃数据包。?

L2CAP_COMMAND_REJECT_RSP包

?数据字段包括:

????????Reason?

?6.?? 配置参数选项???????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ??? ?

图6.1:配置选项格式
  • ?Type:? ? ? ? 0:接收方应拒绝整个配置请求。? ? ? ? 1:收件人应忽略该选项,并继续处理下一个选项(如果有)。
  • ?Length????????长度字段定义选项数据中的一个八位数。因此,没有选项数据的选项类型的长度为0。
  • option data??此字段的内容取决于选项类型

?6.1?? 最大传输单元(MTU)???????????????????????????????????????????????????????????????????

?

?MTU向远程设备指示本地设备可以在此通道中接收到大于最小要求的MTU。所有L2CAP实现应支持ACL-U逻辑链接和23个八进制上的LE-U逻辑链接至少48八位的MTU.然而,一些协议和概要文件明确地需要支持更大的MTU。一个信道的最小MTU是L2CAP最小48位MTU中较大的一个,以及使用该信道的协议和配置文件明确要求的任何MTU。

注:MTU仅受到直接使用该通道的配置文件的影响。例如,如果服务发现事务是由非服务发现配置文件启动的,则该配置文件不会影响用于服务发现的L2CAP通道的MTU。

?6.2?? 刷新超时选项??????????????????????????????????????????????????????????????????????????????????

?

?此选项用于通知接收者发送者将使用的刷新超时。如果使用了扩展流规范,则不得使用此选项。类型为0x02,有效载荷大小为2个字节。刷新超时选项是配置的。

如果远程设备对此选项返回负响应,而本地设备不能尊重建议值,则应通过发送原始值的新请求继续配置过程,或者断开通道连接。刷新超时适用于同一ACL逻辑传输上的所有通道,但通过HCIACL数据包中的Packet_Boundary_Flag标记单个L2CAP数据包为不可自动切换的,可以在数据包上覆盖。

Flush Timeout:

  • 此值是以毫秒为单位的刷新超时时间。这是一个不对称的值,如果请求与默认值0xFFFF不同,则请求的发送者应指定其刷新超时值。
  • 0x0001-不应在基带级别进行重新传输,因为最小轮询间隔为1.25ms。
  • 0x0002到0xFFFE-基带使用的刷新超时。
  • 0xFFFF-无限数量的重传输。这也被称为“可靠的通道”。在这种情况下,基带应继续重传输,直到链路管理器超时宣布物理链路丢失。

?6.3?? 服务质量(qos)选项?????????????????????????????????????????????????????????????????????????

?????????如果没有协商出QoS配置参数,则链路应假设为默认参数。QoS选项为0x03的类型。如果使用了“扩展流规范”选项,则不应使用此选项。QoS选项是可以协商的。图6.4指定了此选项的格式。????????

????????在L2CAP_CONFIGURATION_REQ中,此选项描述了来自发送请求的设备的传出流量。在正L2CAP_CONFIGURATION_RSP中,此选项描述了对发送响应的设备的传入流量流协议。在负L2CAP_CONFIGURATION_RSP中,此选项描述到发送响应的设备的首选传入流量。?

?????????L2CAP实现只需要支持“最优结果”服务,对任何其他服务类型的支持都是可选的。最好的努力不需要任何保证。如果请求中没有放置QoS选项,则应假设为最佳努力。如果需要任何QoS保证,则应发送一个QoS配置请求。

????????远程设备的L2CAP_CONFIGURATION_RSP包含取决于结果字段值的信息。如果请求是为了保证服务,则响应应包括请求中包含的任何通配符参数的具体值。如果结果是“故障-不可接受的参数”,响应应包括一份输出流量规格参数列表和使远程设备可以从本地设备接受新L2CAP_CONNECTION_REQ的参数值。在L2CAP_CONFIGURATION_REQ中显式引用或隐含的配置参数都可以包含在L2CAP_CONFIGURATION_RSP中。回想一下,L2CAP_CONFIGURATION_REQ中缺失的配置参数都具有它们最近接受的值。

????????如果L2CAP_CONFIGURATION_REQ包含任何设置为“不关心”的QoS选项参数,那么L2CAP_CONFIGURATION_RSP应将相同的参数设置为“不关心”。此规则同时适用于最佳结果和有保证的服务。

图6.4:包含流程规范的服务质量(QoS)选项格式

?Flags:预留

Service Type:

?????????此字段表示所需的服务级别。表5.1定义了可用的不同服务。默认值为“Best effort”。

????????如果选择了“最佳努力”,则远程设备应将其余参数视为可选参数。远程设备可以选择忽略这些字段,尝试满足这些参数,但不提供任何响应(在响应消息中省略了QoS选项),或使用它将尝试满足的设置进行响应。

????????如果选择了“无流量”,则应忽略其余的字段,因为没有跨通道向输出方向发送的数据。

表6.1:服务类型定义

Token Rate(4字节)?

?????????该字段的值表示应用程序传输数据的平均数据速率。应用程序可以以这个速率连续地发送数据。在短时间范围内,应用程序可能发送的数据会超过平均数据速率,这取决于指定的令牌桶大小和峰值带宽(见下文)。令牌桶的大小和峰值带宽允许应用程序以一种“突发”的方式传输数据。

?????????在两个L2CAP对等点之间发出的令牌速率是由应用程序传输的数据,应排除L2CAP协议的开销。通过L2CAP和链路管理器之间的接口发出的令牌速率应包括L2CAP协议开销。此外,通过该接口发出信号的令牌速率值还可以包括将多个L2CAP通道聚合到同一ACL逻辑传输上。

?????????令牌速率是提供流量信用的比率。积分可以累积到令牌桶的大小。当应用程序传输数据时,就会消耗流量积分。当流量传输,可用信用不足时,流量不合格。服务质量保证只提供给合格的流量。对于不符合条件的流量,可能缺少带宽和缓冲空间等资源。此外,不符合的流量可能违反其他流量的QoS保证。

????????令牌速率值0x00000000表示没有指定令牌速率。这是默认值,表示“不在乎”。当选择了被担保的服务时,不应使用默认值。值0xFFFFFFFF是与可用的最大令牌速率相匹配的通配符。此值的含义取决于服务类型。为了尽最大努力,这个值是提示应用程序想要尽可能多的带宽。对于有保证的服务,该值表示在请求时可用的最大带宽。

?Token Bucket Size

???????????令牌桶大小指定了应用程序可以用来传输数据的“突发性”的限制。该应用程序可以立即提供等于令牌桶大小的数据突发,但受峰值带宽的限制。令牌桶的大小以八进制的形式指定。

????????在两个L2CAP对等点之间发出的令牌桶大小是由应用程序传输的数据,应排除L2CAP协议的开销。在L2CAP和链路管理器之间的接口上显示的令牌桶大小应包括L2CAP协议开销。此外,此接口上的令牌桶大小值可能包括将多个L2CAP通道聚合到同一ACL逻辑传输上。

????????值0x000000000表示不需要令牌桶;这是默认值。当选择了被担保的服务时,不应使用默认值。值0xFFFFFFFF是与最大令牌桶匹配的通配符。此值的含义取决于服务类型。为了尽最大努力,该值表示应用程序需要一个尽可能大的桶。对于有保证的服务,该值表示最大的L2CAPSDU大小。?

????????令牌桶大小是通过L2CAP通道所携带的流量的一个属性。最大传输单元(MTU)是L2CAP实现的一个属性。对于有保证的服务,令牌桶的尺寸应小于或等于MTU。

Peak Bandwidth
????????限制了连续发送来自应用程序的数据包的速度。一些系统可以利用这些信息,从而实现更有效的资源分配。
????????在两个L2CAP对等点之间发出的峰值带宽信号指定了由应用程序传输的数据,并应排除L2CAP协议的开销。通过L2CAP和链路管理器之间的接口发出的峰值带宽应包括L2CAP协议开销。此外,该接口上的峰值带宽值可能包括将多个L2CAP通道聚合到同一个ACL逻辑传输上。
????????在两个L2CAP对等点之间发出的峰值带宽信号指定了由应用程序传输的数据,并应排除L2CAP协议的开销。通过L2CAP和链路管理器之间的接口发出的峰值带宽应包括L2CAP协议开销。此外,该接口上的峰值带宽值可能包括将多个L2CAP通道聚合到同一个ACL逻辑传输上。

?????????0x000000000的值表示“不在乎”。这说明设备对传入的最大带宽没有偏好,并且是默认值。当选择了被担保的服务时,不应使用默认值。

Access Latency

?????????该字段的值是L2CAP数据包到空中接口的最大可接受延迟。对这个数字的精确解释取决于这个流参数在哪个接口上发出信号。当在两个L2CAP对等点之间发出信号时,访问延迟是从上层接收到L2CAPSDU和L2CAPSDU通过空中传输开始之间的最大可接受的延迟。当通过L2CAP和链路管理器之间的接口发出信号时,是L2CAPPDU的第一个片段存储在控制器缓冲区中与L2CAP包的初始传输之间的最大延迟。

????????因此,当在L2CAP和链路管理器之间发出信号以解释在L2CAP传输侧的任何排队延迟时,访问延迟值可能会有所不同。此外,访问延迟值可能包括将多个L2CAP通道聚合到同一个ACL逻辑传输上。

????????访问延迟以微秒为单位表示。值0xFFFFFFFF表示“不关心”,为默认值。当选择了被担保的服务时,不应使用默认值。

Delay Variation

?????????该字段的值是两个L2CAP对等点之间的L2CAPSDU的最大可能延迟和最小可能延迟之间的差值,以微秒为单位。延迟变化是一个纯粹的信息参数。值0xFFFFFFFF表示“不关心”,为默认值。

?6.4?? 重传输和流量控制选项?????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ???

图6.5:重传和流量控制选项格式

?6.5?? 帧检查顺序(fcs)选项????????????????????????????????????????????????????????????????????

图6.6:FCS选项格式

??6.6?? 扩展流量规范选项????????????????????????????????????????????????????????????????????????

???????

图6.7:扩展流程规范的选项格式

?6.7?? 扩展窗口大小选项?????????????????????????????????????????????????????????????????????????

?????????

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-09-11 18:40:35  更:2021-09-11 18:40:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/31 10:34:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码