1.概述
前面一篇博文已经介绍到远端设备对本地的Connection request进行了response,目前L2CAP的连接处于pending状态。这篇将继续抓取下面的一些packets,来看L2CAP Connection的建立过程。
2.一些Frame
Frame50:HCI收到ACL Data,传到L2CAP层,是远端的information request
00001001 00100000 00001010 00000000 00000110 00000000 00000001 00000000 00001010 00000011 00000010 00000000 00000011 00000000
Connection Handle: 9
Broadcast Flag: No broadcast, point-to-point
Packet Boundary Flag: First automatically-flushable L2CAP packet
Total Length: 10
PDU Length: 6
Channel ID: 0x0001
Code: 00001010 = 0xa Information request
Identifier: 3
Command Length: 2
InfoType: 00000011 00000000 = 0x0003 Fixed Channels supported
注:这里远端设备显然查询本地设备支持的fixed Channel类型
Frame51:返回information response,HCI收到L2CAP层的ACL Data
00001001 00100000 00010100 00000000 00010000 00000000 00000001 00000000 00001011 00000011 00001100 00000000 00000011 00000000 00000000 00000000 00001010 00000000 00000000 00000000 00000000 00000000 00000000 00000000
这里只看重点部分:
Channel ID: 0x0001
Code: 00001011 = 0x0b Information response
InfoType: 00000011 00000000 = 0x03 Fixed Channels Supported
Result: Success
Data:8个字节表示支持的fixed channel,p1427和p1430
这里表示支持L2CAP Signaling channel和AMP Manager Protocol Channel这两个fixed Channel
注:这里本地设备返回response,表明自己支持两个fixed channel,分别是L2CAP Signaling channel和AMP Manager Protocol Channel这两个fixed Channel。
Frame54:远端设备再次返回information response
这次返回的是上面中介绍的Frame42:本地发送的ID为32的information request
00001001 00100000 00010100 00000000 00010000 00000000 00000001 00000000 00001100 00000000 00000011 00000000 00000000 00000000 00000010 00000000 00000000 00000000 00000000 00000000 00000000 00000000
Code: 0x0b Information response
Identifier: 0x20 = 32 //对应上次的information request
InfoType: 0x03 Fixed Channels Supported //也是询问的支持的fixed channel
Result: Success
Data:8个字节表示支持的fixed channel,p1427和p1430
这里表示支持只支持L2CAP Signaling channel
注:远端返回的information response表明其只支持L2CAP Signaling channel
Frame55-Frame61:HCI进行了一些command,Read_Clock_offset,Get_Link_Quality等。
Frame62:L2CAP收到远端的Connection response
在Frame48中本地已经收到远端的connection response,只是状态为pending,这里再次接受到connection response,也许表示成功了。如下:
00001001 00100000 00010000 00000000 00001100 00000000 00000001 00000000 00000011 00000100 00001000 00000000 01000100 00000000 01000000 00000000 00000000 00000000 00000000 00000000
Code: 0x03 Connection response
Destination Channel ID: 0x0044
Source Channel ID: 0x0040 //本地的CID,这个CID在本地发送connection request中确定
Result: Connection successful
Status: Connection successful
注:到这里,本地发送的connection request已经被远端response,并且状态为成功。
//从这里开始,进入Configure 的过程
Frame63:本地发送Configure request
00001001 00000000 00010000 00000000 00001100 00000000 00001000 00000000
01000100 00000000 00000000 00000000 00000001 00000010 00000000 00000100
Channel ID: 0x0001
Code: 0x04 Configure request
Identifier: 0x05 = 5
Destination Channel ID: 0x0044 //发送的目标设备的CID
C Flag: Last Configuration Request
我们看看configure 部分的结构:
Type:0x01 MAXIMUM TRANSMISSION UNIT
length:0x02 = 2
config data:0x0400 = 1024
注:本地发送的configure request是关于设置MTU的,这里配置的是1024。
Frame66:收到slave发送的configure request
00001001 00100000 00010000 00000000 00001100 00000000 00000001 00000000 00000100 0000010000001000 00000000 01000000 00000000 00000000 00000000 00000001 00000010 00000000 00000001
Code: 0x03 Configure request
ID:0x04 =4
configure Type:0x01 关于MTU
length:0x02
Data:0x0100 = 256
注:也就是slave建议的MTU为256个字节。
Frame67:本地发送configure response
00001001 00000000 00001110 00000000 00001010 00000000 00000001 00000000 00000101 0000010000000110 00000000 01000100 00000000 00000000 00000000 00000000 00000000
Code:0x05 Configure response
Identifier: 4 //对应Frame66slave的configure request
Results: Success
//这里奇怪的是应该还有两个字节的Config部分,这里怎么木有了。。。result后就结束了
注:这是本地设备对远端设备的configure request的resposne,结果是成功,应该是接受了远端设备256MTU的配置。
Frame73:远端返回configure resposne
00001001 00100000 00001110 00000000 00001010 00000000 00000001 00000000 00000110 00000000 01000000 00000000 00000000 00000000 00000000 00000000
Code: 0x05 Configure response
Identifier: 5
Source Channel ID: 0x0040
Results: Success
注:这里也没有config部分,到result域就结束了。。。不过成功表示接受了1024的MTU配置吧。
3.总结
在这部分,本地部分主要是发送information requset和远端设备交换设备信息,发送connection requset建立L2CAP的连接,以及发送configure request进行参数配置。在这个过程里,远端的slave也会发送information requset和configure requset,双方进行信息交换和参数配置。至此,本地的configure部分结束,下面进行验证部分。
- FTS抓包看L2CAP Connection的建立(一)
一.概述 在前面的文章中介绍了inquiry和ACL connection的建立过程.这个连接建立后,L2CAP signaling channel(CID = 0x0001)就已经存在,可以 ...
- FTS抓包看AVDTP
1.概述 测试过程为打开Audio连接,没有听音乐,人后断开Audio连接,主要目的是为了测试AVDTP的工作流程. 2.Frame分析 首先贴出抓取的关于AVDTP的包: 在L2CAP ...
- FTS抓包看蓝牙的SDP整个过程
1.概述 SDP是蓝牙的Service Discovery Protocol,用来发现远程设备能够提供的Service.它只负责发现对方支持的Service,不负责Service的具体实现. ...
- 【转】FTS抓包看蓝牙的SDP整个过程
原文网址:http://blog.sina.com.cn/s/blog_69b5d2a50101f23c.html 1.概述 SDP是蓝牙的Service Discovery Protocol,用 ...
- FTS抓包看蓝牙验证的过程
1.概述 在进行蓝牙设备的连接时,为了保护个人隐私和数据保密的需要,需要进行验证. 2.一些Frame Frame74:本地发送Authentication requset command ...
- charles抓包看性能数据
1.优化某个接口或加载速度(H5加载速度慢) 抓包看Overview ①看Duration,就是接口的加载时间 ②看Latency,就是延时一端传播到另一端所花费的时间:一般和网络有关:可以综合Dur ...
- wireshark抓包看ECN
由于实验需要,要统计ECN信息.为了验证拓扑中是否真的有ECN信息,用了wireshark进行抓包查看. 网上找到的相关有用资料有:http://blog.csdn.net/u011414200/ar ...
- 抓包整理————ip 协议一[十二]
前言 简单介绍一下ip协议. 正文 先来看下ip协议在网络层的哪一层: 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 ip 层就在网络层: 其实很好想象哈,就是因为每台机器起码有一个ip ...
- Fiddler手机端抓包环境设置与过滤(二)
经过了上一篇,我们已经配好了PC与手机端的抓包环境可以实现抓包.传送机:https://www.cnblogs.com/jc-home/p/11668712.html 但是如果不经过筛选的话抓到的内容 ...
随机推荐
- python的包和模块
python 的包即文件夹,但是必须包含_init_.py 模块就是xx.py
- Spring的国际化资源messageSource
Spring中可以使用两个类加载资源文件:ReloadableResourceBundleMessageSource和ResourceBundleMessageSource. 可配置如下message ...
- Redis 连接池的问题
目录 Redis 连接池的问题 1 1. 前言 1 2.解决方法 1 前言 问题描述:Redis跑了一段时间之后,出现了以下异常. Redis Timeout ex ...
- ural 1218. Episode N-th: The Jedi Tournament
1218. Episode N-th: The Jedi Tournament Time limit: 1.0 secondMemory limit: 64 MB Decided several Je ...
- BZOJ4182 : Shopping
最后选择的一定是树上的一个连通块,考虑树分治,每次只需考虑重心必选的情况,这就变成了以重心为根的树形依赖多重背包问题. 设f[x][j]表示从根节点到x这条路径及其左边的所有节点,以及以x为根的子树的 ...
- HDU1667 : The Rotation Game
考虑枚举最后中间的数字,然后可以用一个24位的整数来表示一个状态,一共有C(24,8)=735471种状态,然后BFS即可. 比赛的时候由于手速问题没写完TAT 写完后在坑爹评测机上还是TLE. 所以 ...
- topcoder SRM 592 DIV2 LittleElephantAndPermutationDiv2
#include <iostream> #include <vector> #include <algorithm> #include <iterator&g ...
- cocos2d ARCH_OPTIMAL_PARTICLE_SYSTEM这个未定义的问题
在新版本的cocos2d中ARCH_OPTIMAL_PARTICLE_SYSTEM已经被移除由 CCParticleSystemQuad取代 CCParticleSystem *test = [ARC ...
- 【BZOJ】3319: 黑白树
http://www.lydsy.com/JudgeOnline/problem.php?id=3319 题意:给一棵n节点的树(n<=1e6),m个操作(m<=1e6),每次操作有两种: ...
- Thrift入门及Java实例演示
目录: 概述 下载配置 基本概念 数据类型 服务端编码基本步骤 客户端编码基本步骤 数据传输协议 实例演示(java) thrift生成代码 实现接口Iface TSimpleServer服务模型 T ...