组帧(framing)指的是将比特封装为帧的过程。

如何确定哪些比特组成了一帧?

Byte-Oriented Protocols

Sentinel-based Approaches

BISYNC 的帧格式:

BISYNC 使用特殊字符(sentinel characters)来指示帧的起始和结束。帧的开始由 SYN (synchronization) 字符标识,数据部分被包含在 STX (start of text) 和 ETX (end of text) 两个字符之间。

为了解决 ETX 字符可能会被包含在该帧的数据部分中的问题,BISYNC 采用了 character stuffing 的方法:在主体中的 ETX 字符前放置转义字符(DLE, data-link-escape)。

帧格式的最后还包含了 CRC (cyclic redundancy check),这是用于检测传输错误的。

PPP 的帧格式:

和 BISYNC 类似,也使用了 sentinels 和 character stuffing。其中 Flag 为 01111110,Payload 的大小是可变的,但是默认为 1500 字节。

PPP 中的 byte stuffing发送端将 7E 变为 7D5E,7D 变为 7D5D。接收端删除 7D,并将其后的 5E 变为 7E,5D 变为 7D。

Byte-Counting Approach

DDCMP 的帧格式:

COUNT 中指定了主体包含了多少字节。如果 COUNT 部分被污染了,那么就会造成 framing error。

Bit-Oriented Protocols

HDLC 的帧格式:

HDLC 使用比特序列 01111110 来标识帧的起始和结束,并使用了 bit stuffing 的方法来辨别它们的位置:发送端在每五个连续的 1 后面插入一个 0,接收端删去五个连续的 1 后面的 0。

Clock-Based Framing

SONET STS-1 的帧格式:

接收端通过判断哪一部分在每 9 * 90 = 810 个字节中重复出现来确定 Overhead 的位置并进行同步,从而得到正确的帧。

SONET 实际上比较复杂,这里就不展开了。

SONET Optical carrier Line rate (Mbps)
STS-1 OC-1 51.84
STS-3 OC-3 155.52
STS-12 OC-12 622.08
STS-48 OC-48 2488.32
STS-192 OC-192 9953.28