RFCOMM 是否使用三次握手?

Does RFCOMM use threeway handshake?

我现在有一项任务是评估 android 上蓝牙通信的 RTT,但是由于 L2CAP is no longer supported on android 我必须使用 RFCOMM 计算 RTT,据我所知,这基本上是可靠的实现很像蓝牙的 TCP。

我的问题是 RFCOMM 是否使用与 TCP (SYN/SYN-ACK/ACK) 相同的三向握手?

如果是这样,从蓝牙客户端到蓝牙服务器的 RTT 是否会大致连接到蓝牙服务器所花费的时间建立乘以 2/3(因为 RTT 只是 SYN/SYN-ACK 花费的时间,而连接花费的时间是 SYN/SYN-ACK/ACK)?

My question is does RFCOMM use the same threeway handshake as TCP (SYN/SYN-ACK/ACK)?

没有

蓝牙上的RFCOMM是在L2CAP之上的,即我们可以看到L2CAP通道是一个可靠的通道(如果没有flush配置)而RFCOMM只占用一个L2CAP通道,基于这个通道,我们划分了一个信号通道和一些数据channel(可能还有30个?我记不太清了)。要打开一个 RFCOMM 数据通道,只需在信号通道上处理一些请求,然后上层(例如 SPP、HFP)就可以通过分配的数据通道进行通话。 没有 ACK/SYN-ACK/ACK 然后建立一个 RFCOMM,但他们有信用用于通道建立后的流量控制。

RFCOMM 连接建立没有三次握手。 RFCOMM基于ETSI标准GSM 07.10,工作在HDLC异步平衡模式。 可以找到 RFCOMM 规范 here

通信大致可以分为控制通道连接(即通道0)、端口配置和数据通道连接(可选包括Authentication),然后是数据交换。

连接拒绝方案更清楚地显示了 SABM 帧的使用。 注意连接建立中的 SABM-UA 和连接拒绝中的 SABM-DM。

连接本身是由SABM(设置异步平衡模式)帧和UA(用户确认)建立的。端口协商使用 PN frame.UIH 帧用于在已建立的通道上交换数据。