蓝牙PAN
1.PAN概述
全称:Personal Area Network(个人局域网)
蓝牙PAN使用的是传统蓝牙的技术,使用BNEP协议实现网络层到L2CAP层的协议映射,BNEP为蓝牙提供了一种新的解决方案,之前在RFCOMM上面使用PPP协议来实现网络的共享,即网络层与L2CAP层无须再插入PPP和RFCOMM层,直接插入BNEP层,PAN包括三种角色:GN、NAP、PANU
2.体系架构
蓝牙PAN沿用标准蓝牙的技术,采用BNEP网络封装协议实现以太网包的转发,以下是蓝牙PAN的体系架构,其中BNEP相当于TCP/IP层次中的网络接口层,负责将IP层传送过来的数据转发给蓝牙L2CAP层,并接收L2CAP层的数据
3.协议栈
与标准蓝牙相比,区别在于多了一个BNEP协议,这里重点描述BNEP协议,而对于L2CAP,SDP协议简单概述
3.1 BNEP协议
BNEP:Bluetooth Network Encapsulation Protocol,即蓝牙网络封装协议,BNEP为蓝牙设备提供了类似以太网接口的IP层,它在蓝牙协 议栈中介于IP层与L2CAP之间。在这种PAN模型中,网络层与L2CAP之间无须再插入PPP和RFCOMM层,BNEP在整个蓝牙协议栈中起着一个桥梁的作用,并由BNEP完成从IP层到L2CAP层的映射
- BNEP包的格式
在上图的体系结构中,BNEP层收到的数据包是以太网格式的,需要将他重现拆分打包成适合BNEP over L2CAP来传输,所以在BNEP层需要将IP层下来的以太网头去掉,再加上BNEP的头,当这个BNEP包传输到L2CAP层时,又会被加上L2CAP的头,他们的包头格式的变换如下图3-2所示:
具体BNEP包格式如下:
图3-3:BNEP包格式
3.2 SDP协议
SDP(即服务发现协议),主要是为应用程序提供一种发现可用的服务,如发现NAP服务及GN服务等
3.3 L2CAP协议
数据链路层协议, 对于 L2CAP 层,主要提供无线数据包的分割和重新组装,从主机到控制器对数据进行分隔
4.角色
4.1 PANU
PANU:PAN User即PAN用户,PANU角色相对于GN角色和NAP角色支持客户端角色,并支持与GN/NAP的连接
4.2 GN
GN:Group Ad-hoc NetWork组网是由一些移动设备在不需要其他网络硬件或网络设施下组成的无线自组网络,这种网络为局域网内共享连接提供了支持具有GN服务的蓝牙设备能够与其他所有与它连接的蓝牙设备交换以太网包,而这是通过BNEP支持实现的,但是GN不提供连接外部网络,GN可以给连接到它的PANU设备提供DHCP地址分配等服务,GN角色可以使用2个或更多蓝牙设备成为ad-hoc网络中的一部分
单个微微网络中,一个微微网允许2个或更多设备加入,并允许一个充当master角色,1-7个Active设备充当slave角色(最大上限255个Park模式下的设备,并在任何时候Park模式下的设备都可以变成Active设备,但仅有7个Active设备),具体见下图
4.3 NAP
NAP:Network Access Point是Bluetooth网络与其他网络(LAN或Internet) 之间具有相当于桥接器或路由器功能的Bluetooth无线设备,可以是笔记本电脑、移动电话等。Bluetooth设备可以连接到这个网络访问点NAP,并通过NAP访问其他网络上的共享资源,NAP角色为连接的蓝牙设备提供了网络服务,如下图
支持NAP服务的蓝牙设备也是支持一些具有网路服务的以太网桥接特征蓝牙设备,这种蓝牙设备会在每一个连接的蓝牙设备之间转发以太网包,NAP与PANU之间数据交互使用BNEP蓝牙网络封装协议,此外,具有NAP服务的蓝牙设备可以连接不同网络媒介(以太网包由桥接机制或路由机制交换)的外部网络
4.4 区别与关联
- NAP及GN要求转发包,而PANU不要求转发包
- NAP提供外部网络服务,而GN不提供外部网络访问
- NAP与GN之间不能互连
5.使用场景
从以下的图中可以看出,对于PANU,GN,NAP三种角色均可以作为主从设备,但是应注意,GN与NAP不能彼此连接对方
5.1 PANU-NAP
PANU连接NAP目的是为了加入一个网络服务
- PANU在射频范围内发现合适的NAP Service(转发以太网包)
- 选择一个NAP角色连接
- 一旦连接被创建,PANU将会为BNEP创建L2CAP,并且使用BNEP控制命令初始化BENP连接和设置不同网络包类型的过滤
- 如果PANU已经获取了IP地址后,从一个NAP移动到另一个NAP时,当前的IP应当还有效
网桥(Network Bridge)根据包过滤库在不同的BNEP连接之间转发用户数据,从而使不同的Bluetooth设备之间可以通信
网络连接(Network Connnection)模块则实现到其他网络的连接,每一个所连接的Bluetooth设备提供LAN或Internet网络服务
5.2 PANU-GN
为了与其他设备创建一个ad-hoc网络,PANU连接GN,需要经过以下过程:
- PANU在射频范围内通过查询及SDP服务发现协议先找到提供GN服务的其他蓝牙设备
- 如果找到的设备与PANU没有建立连接,则PANU请求蓝牙连接
- 一旦连接被创建,PANU将会为BNEP创建L2CAP,并且使用BNEP控制命令初始化BENP连接和设置不同网络包类型的过滤
5.3 PANU-PANU
点对点的连接(类似与Wifi的Ad-hoc网络),PANU连接PANU时,被连接的PANU端要提供PANU Service,这里描述的点对点的连接与通常的蓝牙的点对点连接区别在于可以进行TCP通信,这样上层应用不用修改