串口通讯-网络通信的数据包(帧)
在网络通信中, " 包 " ( Packet )和 " 帧 " ( Frame )的概念相同,均指通信中的一个数据块.对于具体某种通信网络,一般使用术语 " 帧 " .一种网络的帧格式可能与另一种网络不同,通常使用术语 " 包 " 来指一般意义的帧.串行通信的数据格式有面向字符型的数据格式,如单同步、双同步、外同步;也有面向比特型的数据格式,这以帧为单位传输,每帧由六个部分组成,分别是标志区、地址区、控制区、信息区、帧校验区和标志区.
串行通信协议属于 ISO 国际参考标准的第三层,数据链路层.数据链路层必须使用物理层提供给它的服务.物理层所做的工作是接收个一个原始的比特流,并准备把它交给目的地.不能保证这个比特流无差错.所接收的比特的数量也许少于,也许等于或多于所传递的比特的数量,它们具有不同的值.一直要上到数据链路层才能进行检测,如果需要的话,纠正错误.对于数据层,通常的方法是把比特流分成离散的帧,并对每一帧计算出校验和…….当一帧到达目的地后重新计算校验和时,如果新算出的校验和不同于帧中所包括的值,数据链路层就知道出现差错了,从而会采取措施处理差错(即,丢弃坏帧,并发回一个差错报告).
数据链路层的任务是在两个相邻接点间的线路上无差错地传送以帧为单位的数据.每一帧包括数据和必要的控制信息.人们发现,对于经常产生误码的实际链路,只要加上合适的控制规程,就可以使通信变为比较可靠的.如 IBM 公司推出了著名的体系结构 SNA, 在 SNA 的数据链路规程采用了面向比特的规程 SDLC ,后来 ISO 把它修改后称为 HDLC ,译为高级数据链路控制.在 INTERNET 中,用户与 ISP ( INTERNET 服务提供者)之间的链路上使用得最多的协议就是 SLIP 和 PPP .
下面就简单介绍 HDLC 帧结构以及 PPP 帧结构:
1.HDLC 的帧结构:
从网络层交下来的分组,变成为数据链路层的数据.这就是图 1 中的信息字段.信息字段的长度没有具体规定.数据链路层在信息字段的头尾各加上 24bit 的控制信息,这样就构成了一个完整的帧. HDLC 规定了一个帧的开头(即首部中的第一个字节)和结尾(即尾部中的最后一个字节)各放入一个特殊的标记,作为一个帧的边界. 这个标记就叫做标志字段 F .标志字段 F 为6个连续1加上两边各一个0共8位.地址字段 A 也是8个比特,它一般被写入次站的地址.帧校验序列 FSC 字共占16位,采用 CRC-CCITT 生成多项式.控制字段功8位,是最复杂的字段 ,HDLC 的许多重要功能都要靠控制字段来实现.根据其前面两个比特的取值,可将 HDLC 的许多帧划分为三大类,即信息帧、监督帧和无编号帧.
2. 点对点协议 PPP 的帧结构:
PPP 帧格式和 HDLC 的相似, PPP 帧的前 3 个字段和最后两个字段和 HDLC 的格式是一样的. PPP 不是面向比特的,因而所有的 PPP 帧的长度都是整数个字节.与 HDLC 不同的是多了一个 2 个字节的协议字段.当协议字段为 0X0021 时,信息字段就是 IIP 数据报.若为 0XC021, 则信息字段是链路控制数据,而 0X8021 表示这是网络控制数据.
3. 例子:异步通信的数据格式
可以看出,按标准的饿异步通信数据格式, 1 个字符在传输事,除了传输实际编码信息外,还要传输几个外加数位.具体说,在一个字符开始传输前,输出线必须在逻辑上处于 "1" 状态,这称为标识态.传输一开始,输出线由标识态变为 "0" 状态,从而作为起始位.起始位后面为 5 ~ 8 个信息位,信息位有低往高排列,即第一位为字符的最低位,在同意个传输系统中,信息位的数目是固定的.信息位后面为校验位,校验位可以按奇校验设置,也可以按偶校验设置,也可以不设置.最后的位数为 "1" ,它作为停止位,停止位可为 1 位、 1.5 位或者 2 位.如果传输 1 个字符以后,立即传输下一个字符,那么,后一个字符的起始位变紧挨着前一个字符的停止位了,否则,输出线又会进入标识态.