2016-09-08 12 views
0

У меня есть задача прямо сейчас оценить RTT связи Bluetooth на андроиде, однако с L2CAP is no longer supported on android Мне нужно рассчитать RTT с помощью RFCOMM, который, насколько я понимаю, в основном является надежной реализацией, как TCP для bluetooth.Использует ли RFCOMM рукопожатие?

Мой вопрос заключается в том, что RFCOMM использует одно и то же рукопожатие в трэвее в качестве TCP (SYN/SYN-ACK/ACK)?

Если это произойдет, будет ли RTT от BlueTooth каналу клиента к серверу с поддержкой BLUETOOTH быть примерно время, которое потребовалось для установки соединения, умноженных на 2/3 (потому что RTT только время, необходимые для SYN/SYN-ACK и время, затраченное на соединение, - SYN/SYN-ACK/ACK)?

ответ

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 frame.UIH фреймы используются для обмена данными по установленным каналам.

+0

Ничего себе, подробный ответ, накрыл все, на что я надеюсь. – gedo

1

Мой вопрос действительно RFCOMM использовать то же трехходовое рукопожатие как TCP (SYN/SYN-ACK/ACK)?

No.

RFCOMM по Bluetooth составляет более L2CAP, то есть мы можем видеть L2CAP канал является надежным каналом (если не вровень конфигурации) и RFCOMM просто взять один L2CAP канал, основанный на этом канале, мы разделенный один канал сигнала и некоторый канал данных (может быть еще 30? Я не помню четко). Чтобы открыть один канал данных RFCOMM, просто обработайте некоторый запрос по сигнальному каналу, тогда верхний уровень (например, SPP, HFP) может разговаривать через выделенный канал данных. Нет ACK/SYN-ACK/ACK, а затем установить RFCOMM, но у них есть кредиты для управления потоком после установленного канала.