1. 程式人生 > >51822藍芽協議之例項解析L2CAP協議

51822藍芽協議之例項解析L2CAP協議

概要: 邏輯鏈路控制和適配協議(L2CAP),支援高層協議多路複用、資料分段和重組,並且支援傳送服務質量資訊。 本檔案主要針對協議狀態自動機、分組格式及構成相關內容進行描述
一、下面介紹L2CAP的幾大功能: 1.協議複用 L2CAP應支援協議複用,因為基帶協議不支援任何 ‘型別’ 域,而這些型別域則用於標識要複用的更高層協議。 L2CAP必須能夠區分高層協議,例如,服務搜尋協議,RFCOMM,和電話控制等。 2.分段與重組 與其它有線物理介質相比, 由基帶協議定義的分組在大小上受到限制。輸出與最大基帶有效載荷(DH5分組中的341位元組)關聯的最大傳輸單位( MTU )限制了更高層協議頻寬的有效使用,而高層協議要使用更大的分組。
大 L2CAP分組必須在無線傳輸前分段成為多個小基帶分組。同樣,收到多個小基帶分組後也可以重新組裝成大的單一的 L2CAP 分組。 在使用比基帶分組更大的分組協議時,必須使用分段與重組( SAR )功能。 3.服務質量 L2CAP 連線建立過程,允許交換有關兩藍芽單元之間服務質量的資訊。每個L2CAP裝置必須監視由協議使用的資源並保證服務質量(QoS)的完整實現 4.組 許多協議包括地址組的概念。基帶協議支援微微網, 微微網為能夠使用同一時鐘進行同步工作的一組裝置。L2CAP 組概念可以實現在微微網上的有效協議對映。如果沒有組概念,為有效管理組,高層協議就必須直接與基帶協議和鏈路管理器打交道。
L2CAP適用範圍: 1.L2CAP 不傳輸由 SCO鏈路所指定的音訊資料。 2.L2CAP 不能進行可靠通道傳輸或保證資料完整性,即:L2CAP不會重發或資料校驗。 3.L2CAP 不支援具有可靠性的廣播通道。 4.L2CAP 不支援一個全域性組名的概念。 二、 L2CAP主要操作       邏輯鏈路控制與適配協議(L2CAP)是以通道概念為基礎的。每個L2CAP通道的端點有通道識別符號(Channel Identifier,CID)來表示。 2.1 通道識別符號         不同藍芽裝置的L2CAP層之間通訊時建立在邏輯鏈路的基礎上,這些邏輯鏈路被稱為通道(channel),每條通道的每個端點都被賦予了一個通道標誌(Channel Identifier,CID).CID是表示邏輯通道本地端裝置的名字.從0x0001到0x003F的標誌符保留用於特定的L2CAP功能,空識別符號(0x0000)則定義為一個非法識別符號,並且不得用於目標端,在本地裝置與多個遠端裝置存在多個併發L2CAP通道的情況下,同一CID不得重新用作本地L2CAP通道端。
                                 
             CID的分配與特定裝置有關,一臺裝置可以獨立於其他裝置指定CID。L2CAP通道有三種類型:面向連線(Connection-Oriented,CO)通道,用於兩個連線裝置之間的雙方通訊;無連線(Connection-Less,CL)通道,用來向一組裝置進行廣播式的資料傳輸,為單項通道;信令(Signaling)通道,用於建立CO通道。 2.2 裝置間操作        下圖說明了不同裝置之間的L2CAP實體間通訊的使用方式.面向連線的資料通道提供了兩裝置間的連線,而CID則用於標識通道的每一端。無連線通道限制資料向單一方向的流動。這些通道用於支援一個通道”組”,在該通道組裡傳送端CID用於表示一個或多個遠端裝置。
         面向連線的資料通道提供了兩裝置間的連線,而CID則用於標識通道的每一端。無連線通道限制資料向單一方向的流動。這些通道用於支援一個通道“組”,在該通道“組”裡傳送端CID用於表示一個或多個遠端裝置。因此保留了一些CID以備將來特殊用途使用。訊號通道是一個保留通道的例項,固定的CID=0x0001。該通道用於建立和建立面向連線的資料通道,並可對這些通道的特性變化進行協商。L2CAP實體必須支援訊號通道。另一CID則保留用於呼入的無連線資料通訊,無連線的接收通道CID=0x0002. 建立不同型別的L2CAP連線的CID規則如下: 2.3  連線和執行模式  L2CAP Channels可執行在以下模式之一(1是預設模式)
1 基本L2CAP模式(Basic L2CAP Mode)
2 流量控制模式(Flow Control Mode)
3 重傳模式(Retransmission Mode)
4 加強版重傳模式(Enhanced Retransmission Mode)
5 流模式(Streaming Mode) 此外,L2CAP有以下幾種連線型別: A:CONNECTION-ORIENTED CHANNELS in basic L2CAP mode(面向連線,採用基本L2CAP模式) B: CONNECTIONLESS DATA CHANNEL in basic L2CAP mode(無連線的,採用基本L2CAP模式) C:CONNECTION-ORIENTED CHANNELS的連線型別分為:BASIC L2CAP MODE和RETRANSMISSION/FLOWCONTROL/STREAMING MODES這兩種(面向連線,重傳/流量控制/流模式)   這裡只介紹模式 A  :採用的是B-Frame(我們主從裝置連線就是這個模式)
Length: 2 bytes, Channel ID: 2 bytes, 對端目的通道  Information payload: (對應上層協議資料單元23個位元組) This contains the payload received from the upper layer protocol (outgoing packet), or delivered to the upper layer protocol (incoming packet). The MTU for channels with dynamically allocated CIDs is determined during channel configuration . The minimum supported MTUvalues for the signaling PDUs。
看一個完整的資料抓包: