BlueZ 中连接和配对的区别

Difference between Connecting and Pairing in BlueZ

我浏览了 BlueZ 5.44 中的 Device API,对连接和配对设备之间的区别有点困惑。我看到连接是基于配置文件的,而配对似乎独立于配置文件。配对似乎与SDP和身份验证有关。

但是,在阅读了该文档之后,我仍然对一个从哪里开始,另一个从哪里结束感到困惑。例如,设备必须先配对才能连接吗?如果任何人有任何蓝牙文档或 BlueZ 文档详细说明这一点,他们将不胜感激。

这是假设 OP 打算询问经典蓝牙的回答。 经典配对需要较低层的蓝牙经典连接。一个设备是否需要与另一个设备配对取决于所涉及设备的安全级别(在通用访问配置文件中定义)。大多数手机使用 SecurityMode 4,第 4 级,它强制对除 SDP 之外的大多数配置文件进行配对。这意味着无需配对即可完成服务发现,但需要服务级别连接的配置文件需要配对。请参阅 core_v5.0 蓝牙规范 (https://www.bluetooth.com/specifications/bluetooth-core-specification) 中 GAP 配置文件第 5.2 节中的安全模式的详细信息。如果您看到 service-level/profile-level 连接,则可以避免您提到的文件中的混淆和下层连接分开。

让我们让事情尽可能简单。 什么是配对:这是为安全连接创建 link 密钥(两个设备将具有相同的加密密钥)的过程。您不希望其他人通过蓝牙听到您说的话是吧。

配对过程当然需要连接。

设备可以选择是否加密 link,并且可以决定蓝牙堆栈的哪个级别开始加密,即配置文件、协议或低级别数据 link。

SDP作为profile是不一样的,它是向其他设备展示本地特征的profile,所以连接SDP时,基本上不需要配对。