服务和数据单元数据的传输方式
数据在网络中各节点内是沿层次传送的。如图1所示,数据从发送进程出发,在应用层中加上报头AH后,送到表示层。表示层不能区分AH及其后的数据部分,把这两部分看作一个整体,作为应用层来的数据,简单地加上表示层的报头PH后送到对话层。重复同样的过程,一直传送到物理层。物理层亦不区分来自数据链路层的报文含义,而只简单地看作一系列比特流,然后将其转换成电信号通过介质传送到接收进程所在的节点的物理层。数据链路层与其它层不同的是,在数据链路层不仅要加上报头DH,还要加上报尾DT。接收节点上的数据链路层收到物理层送来的比特流后根据数据链路层协议能识别出报头DH和报文尾DT(但不能识别出此数据部分中网络层报头NH),把DH和DT去掉后将其余的部分传送到网络层。重复此过程,依次通过以后各层次并去掉相应的报头。最后,应用层把发送进程发来的纯数据部分交给接收进程。
服务、服务访问点和数据单元ISO OSI/RM的每层为其上面各层提供专门的通信服务。也就是说,每层完成的功能是其上各层工作的基础。除了最底层(物理层)外,上面各层都依赖下一层完成其特定的功能。在ISO OSI/RM中,设物理层为第1层,应用层为第7层,在N层和N+l层的接口处,由N层向N+l层提供服务。这里N层是服务的提供者,而N+l层则是该服务的用户。服务是通过一组服务原语来执行的。
层间接口处提供服务的地方称为服务访问点SAP(Service Access Point),每个服务访问点都有一个唯一的标识地址。例如,一个传输层的服务访问点TSAP地址可表示成:
。
相邻层在提供服务的过程中要传递信息,这些信息的单位在OSl模型中称为服务数据单元(Service Data Unit-SDU)。在N层和N—l层间传递的数据单元,记为(N)SDU。SDU在服务访问点处穿过接口时,通常要加上一些辅助信息(比如说服务原语中的某些参数),这些辅助信息在OSl模型中统称为接口控制信息。(Interface Control Information--ICl)。SDU和ICI一起构成接口数据单元(Interface Data Unit-IDU)。IDU在离开接口的SAP时去掉ICl。对等层间交换的信息单位称为协议数据单元(Protocol Data Unl卜PDU)。N层的PDU由N层的SDU加上该层的协议控制信息(Protocol Control Information—PCI)构成。
从图2中可以看出,(N+I)PDU是通过(N)SDU传递到N层,加上(N)PCI后构成(N)PDU的。看上去似乎(N+1)PDU就等同于(N)SDU,虽然在许多情况下确实如此,但却并不总是这样。有时可以将多个(N+1)PDU拼成一个(N)SDU,称为拼接(Concatenation)当然,在发送方若进行了拼接,在接收方的对等层就要进行相反的分割(Separation)。另外,一个(N)SDU若太大,也可以分成若于段,分别加上协议控制信息,构成多个(N)PDU。这在发送方称为分段(Segmenting),而接收方则要进行相反的合段(reassembling)。
服务数据单元封装服务数据单元(Service Data Unit,SDU)是L2CAP和上层协议之间交换的数据格式,它是上层协议传给L2CAP层的数据或者L2CAP要传给上层的数据。
在基本的L2CAP模式下,每个SDU被封装在一个最小的L2CAP协议元素中,形成的L2CAP PDU叫做基本信息帧(Basic Information Frame,B—frame)。
分段和重组操作只用在重传模式和流控制模式下。SDU被分段成一个个小的SDU段,然后每个段用L2CAP协议封装成L2CAP PDU,这种PDU叫做信息帧(Information Frame,I—frame)。
最大PDU负荷长度(Maximun PDU Payload Size,MPS)定义了一个SDU分段的最大长度。MPS可以通过一个特定的接口通知上层。
L2CAP SDU的分段在流控制或重传模式下,SDU被分段,然后单独用L2CAP协议封装(加头和长度元素)形成I-帧。I-帧可以出现在流控制模式下,也可以出现在重传模式下。头包括2比特的SAR字段,它是用来确定这个I.帧是原来SDU的开始或后续或是一个没经过分段的SDU。
L2CA PSDU的重组接收方根据接收到的I一帧的SAR字段来进行重组过程。根据L2CAP SDU的长度字段和序列号码,就可以知道哪些L2CAP SDU丢失。
分段具体过程注意SDU和L2CAP PDU在点对点方式下传输时发送方和接收方的分段和重组的大小是确定的,但在发送方和接收方可以是不一样的。发送方发送的基带数据分组在空中传输的数据流对于双方的蓝牙设备是通用的。2