面向字符的同步协议是最早提出的同步协议,其典型代表是IBM的二进同步通信BSC(Binary Synchronous Communication)协议。随后ANSI和ISO都提出了类似的相应标准。
任何链路层协议均可由链路建立、数据传输和链路拆除三部分组成。位实现建链、拆链等链路治理以及同步等各种功能,除了正常传输的数据块和报文外,还需要一些控制字符。BSC协议用ASCII和EBCDIC字符集定义的传输控制字符来实现相应的功能。这些传输控制字符的标记、名字及ASCII码值和EBCDIC码值见表3.3。
表3.3 传输控制字符
标记 SOH STX ETX EOT ENQ ACK DEL NAK SYN ETB
名称 序始 文始 文终 送毕 询问 确认 转义 否认 同步 块终
ASCII码值 01H 02H 03H 04H 05H 06H 10H 15H 16H 17H
EBCDIC码值 01H 02H 03H 37H 2DH 2EH 10H 3DH 32H 26H
各传输控制字符的功能如下:
SOH(START OF hEAD):序始,用于表示报文的标题信息或报头的开始。
STX(Start of test):文始,标志标题信息的结束和报关文本的开始。
ETX(End of Text):文终,标志报文文本的结束。
EOT(End of Transmission):送毕,用以表示一个或多个文本的结束,并拆除链路。
ENQ(Enquire):询问,用以请求远程站给出响应,响应可能包括站的身份或状态。
ACK(Acknowledge):确认,由接收方发出的作为对正确接收到报文的响应。
DLE(Data Link Escape):转义,用以修改紧跟其后的有限个字符的意义。在BSC中,实现透明方式的数据传输,或者当10个传输控制字符不够用时提供新的转义伟输控制字符。
NAK(Negative Acknowledge):否认,由接收方发出的作为对未正确接收的报文的响应。
SYN(Synchronous):同步字符,在同步协议中,用以实现节点之间的字符同步,或用于在无数据传输时保持该同步。
ETB(End of transmission Block):块终或组终,用以表示当报文分成多个数据块的结束。
BSC协议将在链路上传输的信息分为数据和监控报文两类。监控报文又可分为正向监控和反向监控两种。每一种报文中至少包括一个传输控制字符,用以确定报文中信息的性质或实现某种控制作用。
数据报文一般由报头和文本组成。文本是要传送的有效数据信息,而报头是与文本传送及处理有关的辅助信息,报头有时也可不用。对于不超过长度限制的报文可只用一个数据块发送,对较长的报文则分作多块发送,对较长的报文则分作多块发送,每一个数据块作为一个传输单位。接收方对于每一个收到的数据块都要给以确认,发送方收到反回的确认后,才能发送下一个数据块。
BSC协议的数据块有如下四种格式:
(1)不带报头的单块报文或分块传输中的最后一块报文:
┈┈ SYN SYN STX 报文 ETX BCC
(2)带报头的单块报文:
┈┈ SYN SYN SOH 报头 STX 报文 ETX BCC
(3)分块传输中的第一块报文:
┈┈ SYN SYN SOH 报头 STX 报文 ETB BCC
(4)分块传输中的中间报文:
┈┈ SYN SYN STX 报文 ETB BCC
BSC协议中所有发送的数据均跟在至少两个SYN字符之后,发使接收方能实现字符同步。报头字段的包识别符及地址。所有数据块在块终限定符(ETX或ETB)之后还有块校验字符BCC(block check character),bcc可以是垂直奇偶校验或者说16位CRC,校验范围从STX开始到ETX或ETB为止。
当发送的报文是二进制数据库而不是字符串时,二进制数据中形同传输控制字符的比特串将会引起传输混乱。为使二进制数据中答应出现与传输控制字符相同的数据(即数据的透明性),可在各帧中真正的传输控制字符(SYN除外)前加上DLE转义字符,在发送时,若文本中也出现与DLE字符相同的二进制比特串,则可插入一个外加以标记。在接收端则进行同样的检测,若发现单个的DLE字符,则可知其后为传输控制字符;若发现连续两个DLE字符,则知其后的DLE为数据,在进一步处理前将其中一个删去。
正、反向监控报文有如下四种:
(1)肯定确认和选择响应:
(2)否定确认和选择响应:
SYN SYN ACK
SYN SYN NAK
(3)轮询/选择请求:
(4)拆链:
SYN SYN P/S前缀 站地址 ENQ
SYN SYN EOT
监控报文一般由单个传输控制字符或由若干个其它字符引导的单个传输控制字符组成。引导字符统称为前缀,它包含识别符(序号)、地址信息、状态信息以及其它所需信息。ACK和NAK监控报文的作用,首先是作为对先前所发数据块是否正确接收的响应,因而包含识别符(序号);其次,用做对选择监控信息的响应,以ACK表示所选站能接收数据块,而NAK不能接收。ENQ用作轮询和选择监控报文,在多站结构中,轮询或选择的地址在ENQ字符前。EOT监控报文用以标志报文交换的结束,并在两站点间拆除逻辑链路。
由于BSC协议与特定的字符编码集关系过于密切,故兼容性较差。为满足数据透明性而采用的字符填充法,实现起来比较麻烦,且依靠于所采用的字符编码集。另外,由于BSC是一个半双工协议,它的链路伟传输效率很低。不过,由于BSC协议需要的缓冲存储空间较小,因而在面向终端的网络系统中仍然被广泛使用。