RFCOMM是否使用三次握手?

时间:2016-09-08 13:48:16

标签: android bluetooth rfcomm

我现在有一项任务是评估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)?

2 个答案:

答案 0 :(得分:2)

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

通信大致可分为控制通道连接(通道0),端口配置和数据通道连接(可选择包括身份验证),然后进行数据交换。

rfcomm_connection_establishment

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

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

答案 1 :(得分:1)

  

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

没有

蓝牙上的RFCOMM通过L2CAP,即我们可以看到L2CAP信道是一个可靠的信道(如果没有刷新配置),RFCOMM只需要一个L2CAP信道,基于该信道,我们划分了一个信道和一些数据信道(可能还有30多个?我没有记得清楚)。要打开一个RFCOMM数据通道,只需在信号通道上处理一些请求,然后上层(例如SPP,HFP)可以通过分配的数据通道进行通信。 然后没有ACK / SYN-ACK / ACK建立RFCOMM,但是在建立信道之后它们具有用于流控制的信用。