На самом верхнем уровне находятся приложения. Профили представлены вертикальными прямоугольниками, потому что каждый из них определяет часть стека протокола для конкретной цели. Специфические профили, например профили для гарнитур, используют только те протоколы, которые необходимы для их работы. Например, профили могут включать L2CAP, если у них есть пакеты для отправки, но пропустить его, если имеется только постоянный поток звуковых сэмплов.
В следующих разделах мы рассмотрим уровень радиосвязи и различные протоколы канального уровня Bluetooth, поскольку они пусть грубо, но все-таки соответствуют физическому уровню и подуровню MAC в других изученных нами стеках протоколов.
4.5.4. Bluetooth: уровень радиосвязи
Уровень радиосвязи переносит информацию бит за битом от главного узла к подчиненным и обратно. Это маломощная приемопередающая система с радиусом действия порядка 10 м. Она работает в ISM-диапазоне 2,4 ГГц, как и 802.11. Диапазон разделен на 79 каналов по 1 МГц в каждом. Чтобы обеспечить сосуществование с другими сетями в ISM-диапазоне, применяется расширенный спектр со скачкообразной перестройкой частоты. Возможны до 1600 скачков частоты в секунду, то есть минимальный временной слот для передачи равен 625 мкс. Все узлы пикосетей перестраивают частоты одновременно, в соответствии с синхронизацией слотов и псевдослучайной последовательностью скачков, генерируемой главным узлом.
К сожалению, оказалось, что ранние версии Bluetooth и 802.11 интерферируют настолько, что нарушают передачи друг друга. По этой причине некоторые компании полностью отказались от Bluetooth, но в конечном итоге техническое решение было найдено. Оно заключалось в том, чтобы адаптировать последовательность скачков для исключения каналов, на которых есть другие радиосигналы. Этот процесс, названный адаптивной перестройкой рабочей частоты (adaptive frequency hopping), снижает помехи.
Для отправки битов по каналу используются три формы модуляции. В базовой схеме применяется кодирование со сдвигом частоты, чтобы отправлять 1-битный символ каждую микросекунду. Это дает общую скорость передачи данных 1 Мбит/с. Начиная с версии Bluetooth 2.0, скорость увеличилась благодаря кодированию со сдвигом фазы. Общая скорость передачи достигает 2 или 3 Мбит/с за счет отправки 2 или 3 бит за символ. Увеличенная скорость применяется только для фреймов данных.
4.5.5. Bluetooth: канальный уровень
Уровень управления каналом связи (немодулированной передачи) — это наиболее близкий к MAC-подуровню элемент иерархии Bluetooth. Он трансформирует простой поток битов во фреймы и определяет некоторые ключевые форматы. В самом простом варианте главный узел каждой пикосети задает последовательности временных интервалов по 625 мкс, причем передача данных со стороны главного узла начинается в четных слотах, а со стороны подчиненных узлов — в нечетных. Эта схема, по сути, представляет собой традиционный TDM, где главный узел получает одну половину слотов, а подчиненные делят между собой вторую. Фреймы могут быть длиной 1, 3 или 5 слотов. В каждом из них 126 служебных битов отведено на код доступа и заголовок. Время установления сигнала занимает 250–260 мкс на скачок частоты, чтобы позволить дешевым радиоустройствам стабилизироваться. Полезные данные фрейма могут быть зашифрованы в целях конфиденциальности. Ключ шифрования выбирается, когда ведущее устройство соединяется с ведомым. Переключение частоты происходит только между фреймами, но не в момент передачи. В результате передача пятислотового фрейма намного более эффективна, чем однослотового, потому что при тех же затратах отправляется больше данных.
Протокол управления соединениями устанавливает логические каналы — соединения (links). В них происходит обмен фреймами между обнаружившими друг друга устройствами (главным и подчиненным). Прежде чем использовать соединение, два устройства проходят процедуру сопряжения. Первоначальный метод сопряжения заключается в настройке обоих устройств с помощью одного и того же четырехзначного PIN-кода (Personal Identification Number — личный идентификационный номер). Совпадение PIN-кода показывает, что соединение установлено с нужным удаленным устройством. Но лишенные воображения пользователи и заданные по умолчанию коды типа «0000» или «1234» делают этот метод небезопасным на практике.
Новый метод, безопасное простое сопряжение (secure simple pairing), позволяет пользователям подтвердить, что оба устройства показывают один и тот же ключ, или увидеть ключ на одном устройстве и ввести его на втором. Этот метод более надежный, поскольку пользователи не должны выбирать или устанавливать PIN. Они просто подтверждают ключ, более длинный и сгенерированный самим устройством. Конечно, этот метод не может использоваться на некоторых устройствах с ограниченным вводом/выводом, таких как беспроводные гарнитуры.