《计算机网络体系结构》学习笔记之 第四章 OSI下三层(二)

三、物理层协议
1.物理层的标准
DTE与DCE之间要互连,需遵循共同的接口标准。这就是通常所说的物理层标准。
2.EIARS232-C接口标准
RS-232C为终端DTE与Modem(DCE)间的物理层接口。
DTE是数据终端设备,也就是具有一定数据处理能力以及发送和接收数据能力的设备。
大多数数据处理设备的数据传输能力很有限,直接将相隔很远的两个数据处理设备连接起来是不能进行通信的,必须在数据处理设备和传输线路之间加一个中间设备,这就是数据电路端接设备DCE。
•机械特性:
采用ISO2110关于插头座的标准。即25针插头的DB-25插头座。它的两个固定螺丝中心之间的距离为47.04mm。引脚分为上下两排,分别有13和12根引脚。
•电气特性:
与CCITTV.28建议书一致。即采用负逻辑,逻辑0相当于对信号地线有+5―+15的电压,而逻辑1相当于对信号地线有-5―-15的电压。
•功能特性:
与CCITTV.24建议书一致。各信号线的含义如图4.4。
引脚7是信号地,即公共回路,而引脚1是保护地,即屏蔽地。引脚2和引脚3都是传送数据的数据线,"发送"和"接收"是对DTE而言的。
 
图4.4
•规程特性:
与CCITTV.24一致。首先是DTE和DCE加电,"DTE就绪"和"DCE就绪"设置为逻辑1。DTE要发送数据时,"发送请求"置为有效;DCE在可以接收DTE的数据时,把"允许发送"置为有效;随后,DTE通过"发送"进行数据发送。时序如图4.5所示。
 
图4.5
该图为CCITTV.24的时序图,其信号线与RS-232C的对应关系是:108/2-DTE就绪(20);107-DCE就绪(6);105-发送请求(4);109-载波检测(8);106-允许发送(5)。
EIARS232-C接口的适用范围是30m和小于20kb/s的数据速率。
3.EIARS449接口标准
为了能在更大距离和更高速率上直接互联,EIA又制定了RS449接口标准。
•机械特性:
与CCITTV.35一致,采用37针插头和插座。
•电气特性:
RS449有两个标准来定义它的电气规程,分别是RS422和RS423。RS422标准是平衡方式的,即所有电路共用一个公共地。当连接电缆长度为10m时,数据的传输速率可达300kb/s。RS423标准是非平衡方式的,即所有电路没有公共地。当连接电缆长度为10m时,数据的传输速率可达10Mb/s。
•功能特性:
各信号线的含义。为了和RS232兼容,RS449将它的37根信号线分为两组,第一组的信号线可以在RS232中找到对应的信号线,第二组则是新定义的信号线。以下是一些主要的信号线含义:
1保护地
4、22发送数据
6、24接收数据
7、25发送请求
9、27允许发送
19信号地

•第二节数据链路层
一、定义,功能
1.链路与数据链路
链路就是一条无源的点到点的物理线路段,中间没有任何其他的交换节点。
数据链路则是另一个概念。这是因为当需要在一条线路上传输数据时,除了必须有一条物理线路外,还必须有一些必要的规程来控制这些数据的传输。把实现这些规程的硬件和软件加到链路上,就构成了数据链路。
在进行数据通信时,两个计算机之间的通路往往是由许多的链路串接而成的。可见一条链路只是一条通路的一个组成部分。
数据链路就象一个数字管道,可以在它上面进行数据通信。当采用复用技术时,一条链路上可以有多条数据链路。
2.数据链路层的功能
数据链路层提供相邻设备间的无差错数据传输。它要完成如下功能:
•成帧
•差错检测和纠错
•流量控制
•介质访问控制
•成帧:
物理层以比特为单位进行数据传输,数据链路层以帧为单位进行数据传输。
帧是具有一定长度和格式的信息块,一般由一些字段和标志组成。不同网络其帧格式或长度可以不同,但将比特流分成帧的方法基本相同。四种常用的方法为:字符计数法;带填充字符的首尾界符法;带填充比特的首尾标志法;物理层编码违例法。
把比特流分成帧,标定帧的起始和结束,以利于进行差错控制。在数据链路层,数据的传送单位是帧。数据一帧一帧地传送,就可以在出现差错时,将有差错的帧重传一次,而避免将所有数据重传,从而实现差错控制。
•差错检测和纠错:
为保证发方发出的所有帧都正确、有序地交付给目标机网络层,需要启动确认重传机制,由收方向发方提供有关接收情况的反馈信息。
如果发方收到肯定确认,则知道此帧已正确到达;若收到否定确认,则意味着需重传此帧。同时,为防止丢失帧所引起的错误,需设置定时器。当发方等待足够的时间还未收到接收方发回的确认帧,则可能是所传帧或者是确认帧丢失,解决的方法是重传此帧(返回N协议和选择重传)。
多次传送同一帧的危险是收方可能收到重复帧;为防止这种情况发生,可为发出的各帧编号,使收方能够辨别是重复帧还是新帧,从而保证每帧最终交付给目标网络层一次。通常利用检错码(Error-DetectingCodes)和纠错码(Error-CorrectingCodes)来控制传送差错。
在计算机通信中,一般都要求有极低的比特差错率,因此,广泛地采用了编码技术。有两类编码,一类是检错码,即收方可以检测出收到的帧中有差错,但不知道错在哪;一类是纠错码,即收方收到有差错的数据帧时,能够自动将差错改正过来。
•流量控制:
数据链路层必须控制链路上的数据流量,保证发送与接收速度匹配,防止出现发送速度超过接收能力的现象,以免丢失数据。大多数流量控制方法的基本原理都是相同的,都需要启用反馈机制,使发方直接或是间接地获得收方指示的发送时机。在未得到允许前,禁止发出帧。如单工停等协议、滑动窗口协议等。
发方的发送速率必须小于等于收方的接收速率,否则会浪费网络资源,增加网络负担。流量控制就是对发方的发送速率进行控制。
•介质访问控制(MAC,MediumAccessControl):
广播信道中的信道分配控制。如:FDM(FrequencyDivisionMultiplexing)、CSMA(CarrierSenseMultipleAccess)等。
二、数据链路层协议基本原理
数据链路层协议有时也称为通信控制规程。它是为了实现传输控制所制定的一些规格和顺序。通用性比较强的计算机网络通信规程主要有:
•美国国家标准协会(ANSI)提出的高级数据通信控制规程ADCCP
•国际标准化组织(ISO)推荐的高级数据链路控制规程HDLC
•国际电报电话咨询委员会(CCITT)发表的X.25建议书
通信控制规程归纳起来可分两大类:面向字符型和面向比特型。
•面向字符型规程
所谓面向字符就是说在链路上所传送的数据必须是由规定字符集(例如ASCII)字符集中的字符所组成。在链路上传送的控制信息也必须由同一个字符集中的若干指定的控制字符构成。最典型的面向字符的协议是IBM的BSC协议(二进制同步通信)。
•面向比特型规程
在面向比特型通信控制规程中,报文的数据和控制信息完全独立,具有良好的透明性;差错检验一般采用纠错码方式,可靠性强;在链路上可进行信息连接和双向发送,传输效率高;信息传输都统一以帧为单位,控制简单。
同步和异步主要区别在字符之间。同步协议由于要求接收器能从输入数据中分离出时钟,实现起来较复杂,这个功能通常由调制解调器来完成。但是同步协议能更有效的利用信道。
•异步协议基本原理
异步协议把每个字符看作一个独立的信息,在每个字符的起始处同步,但各个字符之间的间隔时间是可以变化的。由于发送器和接收器近似于同一频率的两个时钟(要两个时钟频率严格相同是不可能的),能够在一段时间内保持同步,故可以用字符起始处同步的时钟来采样该字符的各比特,而不需要为每一比特同步。
•同步协议基本原理
同步协议则把许多字符组织成一个数据块(即帧),在该数据块的起始处同步,而后面维持固定的时钟,实际上是发送端通过某种技术将时钟混合到数据中一起发送出来,而接收端又从输入数据中分离出时钟来。该时钟不但用来定时字符内的各比特,也用来定时字符本身。
三、滑动窗口协议的基本原理
滑动窗口协议的基本原理就是在任意时刻,发送方都维持了一个连续的允许发送的帧的序号,称为发送窗口;同时,接收方也维持了一个连续的允许接收的帧的序号,称为接收窗口。发送窗口和接收窗口的序号的上下界不一定要一样,甚至大小也可以不同。不同的滑动窗口协议窗口大小一般不同。
1.1比特滑动窗口协议
当发送窗口和接收窗口的大小固定为1时,滑动窗口协议退化为停等协议(stop-and-wait)。该协议规定发送方每发送一帧后就要停下来,等待接收方已正确接收的确认(acknowledgement)返回后才能继续发送下一帧。由于接收方需要判断接收到的帧是新发的帧还是重新发送的帧,因此发送方要为每一个帧加一个序号。由于停等协议规定只有一帧完全发送成功后才能发送新的帧,因而只用一比特来编号就够了。其发送方和接收方运行的流程图如图4.6所示。
 
图4.6
【原理】
从停等协议的流程图可知发送方和接收方唯一的联系是发送方必须等到收到接收方的确认才能继续往下走,否则只能循环等待。
收发双方各设置一个1比特的本地状态变量,对状态变量需要注意几点:
①发送端每发一帧数据,都要将发送状态变量的值写到数据帧的发送序号上,但只有收到一个确认帧ACK后,才更新发送状态变量一次和发送新的数据帧;
②在接收端每接收一个数据帧,就要将数据帧上的发送序号和本地的接收状态变量进行比较,若二者相等,则为新的数据帧,否则为重复帧;
③当收到无差错的新的数据帧时,接收端除将其交主机外,还需将接收状态变量更新一次;
④接收端若收到一个无差错的重复帧,则丢弃之,且接收状态变量不变,但要向发送端发一个确认帧ACK。
发送端在发完数据帧时,必须在其发送缓冲区中保留数据帧的副本,以供出现差错时进行重发,只有收到对方发来的确认帧ACK后,方可清除副本。
2.后退n协议
由于停等协议要为每一个帧进行确认后才继续发送下一帧,大大降低了信道利用率,因此又提出了后退n协议。后退n协议中,发送方在发完一个数据帧后,不停下来等待应答帧,而是连续发送若干个数据帧,即使在连续发送过程中收到了接收方发来的应答帧,也可以继续发送。即发送窗口的大小为k,接收窗口仍是1。由于减少了等待时间,必然提高通信的吞吐量和信道利用率。
设节点A向节点B发0号帧后,连续发送后继的1号帧和2号帧,由于发方连续发送了多帧,所以收方的应答帧应编号,说明是对哪一帧的确认与否认,现在设1号帧出了差错,节点B发送否认帧NAK1,当NAK1到达节点A时,节点A刚好发完3号帧,所以节点A接着重发1号帧。在这期间,虽然在1号帧后,节点B正确地接收了2个帧,由于它们的发送序号都不是1号,所以和1号帧一起被丢弃,这样节点A尽管已发完3号帧,但必须后退,从1号帧开始重发。这也是后退n协议名字的由来。
由此可见,接收端只按序接收数据帧。虽然在有差错的1号帧之后接着又收到了正确的2个数据帧,但都必须将它们丢弃,因为这些帧的发送序号都不是所需的1号。
发送方在每发送完一个数据帧时都要设置超时定时器。只要在所设置的超时时间超时而仍未收到确认帧,就要重发相应的数据帧。在等不到1号帧的确认而重发1号数据帧时,虽然节点A已经发完了3号帧,但仍必须向回走,将1号帧及其以后的各帧全部进行重传。从这里不难看出,后退n协议一方面因连续发送数据帧而提高了效率,但另一方面,在重传时又必须把原来已正确传送过的数据帧进行重传(仅因这些数据帧之前有一个数据帧出了错),这种做法又使传送效率降低。由此可见,若传输信道的传输质量很差因而误码率较大时,连续测协议不一定优于停止等待协议。
3.选择重传协议
在后退n协议中,接收方若发现错误帧就不再接收后续的帧,即使是正确到达的帧,这显然是一种浪费。另一种更好的方法是:若某一帧出错,后面送来的正确的帧虽然不能立即送主机,但接收方仍可收下来,放在一个缓冲区中,同时要求发送方重新传送出错的那一帧,一旦收到重传的帧后,就可以与原先已收到但暂存在缓冲区中的其余帧一起按正确的顺序送主机。这就是选择重传协议。即发送窗口和接收窗口均大于1。例子如图4.7所示。
 
图4.7
四、HDLC的基本工作原理
HDLC(High-levelDataLinkControl)最早是由IBM提出的面向比特的同步数据链路控制(SDLC)发展而来的,它是一个面向比特的数据链路层协议,完成流量控制功能。
CCITT修改了HDLC,称为LAP(linkaccessprocedure),作为x.25网络接口一部分。
1.2种配置和3种方式
链路有两种基本配置,即非平衡配置和平衡配置。
在非平衡配置中,每条链路有一个主站(primarystation)控制整个链路的工作。主站发出的帧叫做命令(command)。受控的各站叫做次站或从站(secondarystation)。次站发出的帧叫做响应(response)。可以是点对点工作,也可以多点工作。在平衡配置中,链路两端的两个站都是复合站(combinedstation)。复合站同时具有主站和次站的功能,因此每个战都可以发出命令和响应。它只能点对点工作。
对于非平衡配置,可以有两种数据传输方式。最常用的是正常响应方式NRM(NormalResponseMode),其特点是只有主站才能发起向次站的数据传输,而次站只有在主站向它发起命令帧进行轮询(poll)时才能以响应帧的形式回答主站。另一种是异步响应模式ARM(AsynchronousResponseMode)。这种方式允许次站发起向主站的数据传输。即次站不需要等待主站发过来的命令,而是可以主动向主站发送响应帧。但是,主站仍负责整个系统的初始化、链路的建立和释放,以及差错恢复等。
对于平衡配置,只有异步平衡方式ABM(AsynchronousBalancedMode),其特点是每个复合站都可以平等地发起数据传输,而不需要得到对方复合站的允许。
 
图4.8
2.HDLC的帧结构
HDLC帧格式包括标志字段、地址字段、控制字段、数据和校验和。
 
图4.9
•01111110:
标志字段,用于确定帧的起始和结束,以进行帧同步和准确识别长度可变的帧。
在两个标志字段之间的比特串中,如果碰巧出现了和标志字段一样的组合,就会被误认为是帧边界。为了避免这种错误,HDLC采用比特填充法使一个帧中两个标志字段之间不会出现6个连续的1。具体做法是:在发送端,在加标志字段之前,先对比特串扫描,若发现5个连续的1,立即在其后加一个0。在接收端收到帧后,去掉头尾的标志字段,对比特串进行扫描,当发现5个连续的1时,立即删除其后的0,这样就还原成原来的比特流了。
•地址:
该字段始终存放的是响应站的地址。在使用非平衡方式传送数据时,地址字段总是填入次站的地址。在平衡方式时,地址字段总是填入响应站的地址。因此,该字段也可用来区分命令和应答。若发送的帧的地址字段中的地址不是自己,则是命令帧;若是自己,则是响应帧。全1是广播地址,全0是无效地址。
•控制:
用于序号和帧类型表示。见图4.10。
 
图4.10控制字段的结构
•数据:
数据字段用于传输用户数据。数据链路对HDLC提供完全透明的信息传输。数据字段可由任意比特组成。其长度在理论上没有限制。
但实际上常受下列因素的制约,如帧检验字段的检错能力;数据传输率;通信站缓冲器大小等等。因此在实际应用中,常根据上述因素综合权衡,规定出一帧的总长度和对超长帧的处理办法。目前国际上用的最多的是1000-2000位左右的长度。在x.25协议中,信息字段的最大长度一般为128字节或256字节。
•校验和:
帧校验和字段共16比特,采用循环冗余校验方法,用来检查所接收的信息是否在传输过程中发生了差错。生成多项式是CRC-CCITT:x16+x12+x5+1。校验的范围包括地址字段到信息字段的全部比特位。
帧类型:(在控制字段中表示)
在HDLC协议中定义了三种类型的帧,分别是信息帧、监控帧和无编号帧。各类帧由帧内控制字段的不同编码来区分。当第1比特为"0"时,标志该帧为信息帧,用来传送用户数据。当第1、2比特为"10"时,标志该帧为监控帧,用来监控数据链路,传送接收站发出的应答信息。当第1、2比特为"11"时,标志此帧为无编号帧,用来传送命令和其它控制信息,以控制数据链路的建立、拆除,并处理系统错误等。除信息帧外,其它两类帧均没有数据字段。如图4.11所示。
 
图4.11
信息帧(Information):
用于传送用户数据。信息帧控制字段的第2、3、4比特为发送帧序号N(S)。它是由发送方在发送该帧前填入的,用来供收发双方检查是否有遗漏或重复帧发生。为减少序号所占用的比特数,发送序号通常采用模8运算,必要时(如使用卫星信道)也可采用模128运算。
信息帧控制字段的第6、7、8比特为接收帧序号N(R)。它是由接收方填入的,代表了接收方期望接收的下一帧序号。即在该帧发出前,接收方已正确收到序号N(R)之前的所有信息帧,发送方应当向接收方发送N(s)=N(R)的信息帧。可见N(R)具有应答意义。由N(s)和N(R)编号可看出HDLC适合于全双工通信,它允许在发送信息的同时,捎带应答信息。
控制字段的P/F比特,在命令帧中称为P比特,在响应帧中称F比特,用来标识通信站之间的"命令-响应"信息对。在HDLC协议中,P=1为主站询问次站是否有数据要发;F=1为次站响应主站有数据要发。P与F是成对出现的。次站响应主站询问之后,开始向主站发送信息帧,并置所发信息帧的P/F比特为"0",直至信息全部发完,才置最后一个信息帧的P/F比特为"1",通知主站数据发送完毕。信息帧中的P/F比特与监控帧中的P/F比特意义相同。
监控帧(Supervisory):
用于监控链路的常规操作。其控制字段的前1、2比特为"10",第3、4比特为TYPE字段,有四种编码,分别用来表示四种不同含义和作用的监控帧:RR帧,REJ帧,RNR帧和SREJ帧。监控帧中的N(R)字段也是接收帧序号,但它的具体含义随TYPE字段值的不同而不同。
RR(ReceiveReady)帧,又称接收就绪帧。其TYPE字段值为00,是对发送方的肯定应答。该帧中的N(R)是接收方等待接收的下一帧号,表示接收方已正确接收编号在N(R)之前的所有帧,请求发送方发送N(S)=N(R)的帧。
REJ(REJect)帧,又称否定应答帧。其TYPE字段值为10。在接收到失序帧后,用它来请求发送方重发编号为N(R)的帧,同时确认编号直到N(R)-1的所有信息已正确收到。
RNR(ReceiveNotReady)帧,又称接收器未就绪帧。其TYPE字段值为01。用来表示接收方处于繁忙状态,暂时无力接收信息帧。发送站收到这类应答帧后,即暂停发送信息帧。直至收到RR帧或REJ帧再恢复发送。N(R)值代表它之前的所有帧已收妥。
SREJ(SelectREJect)帧,又称选择拒绝接收帧。其TYPE字段值为11。接收站用此帧通知发送站仅重发编号为N(R)的信息帧。
无编号帧(Unnumbered):
因这类帧中没有N(R),N(S)编号,所以称为无编号帧。它被用来传递命令/响应等各种控制信息用于附加的链路控制功能,如:宣布停机、重置线路、帧拒绝、无序号确认等,且在传输中优先。无编号帧控制字段的第1、2比特为11,第5比特为0,第3、4、6、7、8比特为命令/响应编码,共可发32种命令/响应。
3.信息交换控制过程控制:
HDLC是典型的面向连接的全双工通信,在进行信息交换时首先需要建立数据链路,然后进行链路的维持(传输数据),最后释放数据链路。
•链路的建立和释放
假设在非平衡配置中,主站A要和从站B进行通信,A首先发送一个无编号帧给B,在地址字段填写的是B的地址,控制字段M比特的组合为SNRM命令,P/F比特为1表示P轮询(以下用B,SNRM,P表示),从站B收到请求后以无编号帧(B,UA,F)作为响应,数据链路建立完成。信息传输完成后,主站A向从站B发送无编号帧(B,DISC,P)请求释放连接,B向A发送无编号帧(B,UA,F)进行确认,数据链路释放。
•链路的维持
在此阶段双方发送的是信息帧和监督帧。假设A和B构成的平衡配置进行全双工通信,A站发送信息帧(B,I00,P),I00表示信息帧控制字段N(S)N(R)=00,然后继续发送信息帧(B,I10)(B,I20),这时B站发送的信息帧(A,I00)到达,A站接收该帧后发送信息帧(B,I31,F),表示A发送序号为3的信息,期待接收B的序号为1的信息。这时如果B站发送的信息帧(A,I10,P)到达,A站以监督帧(A,RR2,F)进行响应,表示期望接收B的第2帧,第2帧以前的各帧已经接收。
五、差错校验方法
有两种方式对差错进行校验,前向纠错和自动请求重发。
自动请求重发是由发送端发出能够发现(检测)出错误的码组,接收端根据该码的编码规则,判定传输中有无差错产生,并通过反馈信道把判定结果告诉发送端。发送端则根据反馈的结果把有错的信息重发,直到接收正确为止。
前向纠错是由发送端发送能够纠错的码(即纠错码),接收端收到达些码后,通过纠错译码器不仅能自动地发现差错,而且能自动地对其进行纠正;然后,再把纠正过的信息(或数据)送给主机。这种方式的优点是不需要反馈信道。但缺点是译码设备比较复杂,所选用的纠错码必须与信道中干扰情况紧密对应,而且为了纠正比较多的差错,所要求附加的冗余码比检验码所用的冗余码要多得多,因而降低了传输效率。鉴于这些因素,所以这种方法不能被广泛地应用。
1.差错检测码
典型的差错检测码有奇偶校验码和循环冗余码。
•奇偶校验码
在有效信息比特之前或之后,增加一比特校验位,就可构成奇偶校验码。若增加一比特后码字中"1"的个数为奇数,则称为奇检验;若增加一比特后码字中"1"的个数为偶数,则称为偶校验。
设信息比特为b1-b8,校验比特为b9,则
奇校验方程式:
b1�b2�b3�b4�b5�b6�b7�b8�b9=1
偶校验方程式:
b1�b2�b3�b4�b5�b6�b7�b8�b9=0
校验比特的逻辑表达式为
奇校验比特:
b9=b1�b2�b3�b4�b5�b6�b7�b8
偶校验比特:
b9=b1�b2�b3�b4�b5�b6�b7�b8
例如,需发送的数据为10110101,在奇校验中,需要在末尾加0,变为101101010;在偶校验中,需要在末尾加1,变为101101011。这样,若在传输过程中有1比特出错,即由1变为0或由0变为1,接收方将通过码字中1的个数判断(只能检测奇数个比特出错,不能检测偶数个比特出错)。
•循环冗余码
奇偶检验码虽然简单,但漏检率太高。目前应用广泛的差错检测码是循环冗余码。循环冗余码又称为多项式码。这是因为任何一个二进制数比特串组成的代码都可以和一个只含有0和1两个系数的多项式建立一一对应的关系。
例如,代码1011011对应的多项式为x6+x4+x3+x+1,而多项式x5+x4+x2+x对应的代码为110110。
首先,发送方和接收方必须事先约定一个生成多项式G(x),该生成多项式的最高比特和最低比特必须为1。设要发送的信息为K(x),加在信息比特后面的校验比特为R(x),因此循环码的编码过程就是由K(x)和G(x)求R(x)的过程。
接收方收到带有校验码的数据T(x)时用G(x)去除T(x),若为0,表示没有出错。因此发送方生成R(x)的方法是用G(x)去除xr*K(x)得到的余数就是R(x)(r为余数的比特数)。
例如,信息比特1010001:K(x)=x6+x4+1;生成多项式G(x)=x4+x2+x+1(10111),取r=4,则用10111去除x4*K(x)(10100010000),余数为1101,即为冗余校验码。T(x)=10100011101。
2.差错校正码
典型的差错校正码有海明码。它是一种可以纠正一比特差错的编码。
•海明不等式
海明不等式是关于信息比特数与校验比特数的关系不等式。
设信息比特数为k,校验比特数为r,则校验码的长度或称码长n=k+r。r比特冗余代码实际上构成一个有别于有效数据信息的字,称为指误字,用来指示信息传送中发生错误的比特。长度为r的指误字共有2r个状态。其中"全0"状态可用来表示"无错",余下的2r-1个状态可用来指示哪一比特出错。注意若校验比特本身出错也应能指示出来。这样一来,需要指示出错的比特数就是整个校验码的长度n=k+r。若r增加,固然2r-l随之增加,但同时k+r也增加。这意味着存在一个最小的r值,能够指示出整个校验码中哪一比特出错的全部可能情况。
所以,为了能检测并纠正一比特错,信息比特数K与校验比特数r必须满足如下的不等式:
k+r<2r-1
上式称为海明不等式。
利用海明不等式,若已知信息比特数k,便可计算出需要的校验比特数r;或者,在给定总比特数n的条件下,计算出能够用作信息比特的比特数k。由于二者的关系是一个不等式,因而在一个最小的r值下,允许信息比特数k在一个范围内变化,不等式仍然满足。若k=4,则r>=3。取r=3,则n=7。
海明校验实质上是一种多重奇偶校验。校验比特的生成方法类似于奇偶校验码,也采用异或运算;与奇偶校验码不同的是,海明码是一种"线性码",每一校验值的生成只涉及一部分信息值,即校验方程是一种线性模2加的形式。各个信息比特则参加两个或两个以上的校验码生成。这里的所谓"编码"就是在上述条件下如何生成校验比特以及对信息比特和校验比特的排列做出适当的选择。海明码的编码方案有多种。为了使出错时的指误字能够直观地指示出究竟是哪一比特错,可采用以下介绍的方法,这种方法需要对校验比特和信息比特的比特置进行适当的分配。
设海明码长为n比特,其中信息比特k比特,校验比特r比特。任一信息比特用Ai表示,任一校验比特用Pi表示,i=l~n。
•校验比特和信息比特的分配规则:
校验比特Pi分配在2i-l的比特置上,即分配在比特号为i=1,2,4,8,16,…等比特置,分别记为Pl,P2,P4,P8,P16,…
信息比特被分配在除Pi以外的其余比特置上,即比特号为i=3,5,6,7,9,10,11,12,13,14,15,…等比特置上,分别记为A3,A5,A6,A7,A9,A10,A11,A12,A13,A14,A15,…。
•校验方程的建立规则:
若有r个校验比特,就有r个校验方程式。通常每一个校验方程式只包含一个校验比特Pi。
每一校验比特Pi的方程式中应当包含哪些信息比特?方法是将被校验比特的十进制比特号转换为二进制数,并按权展开,使其满足下式:
被校验信息比特的比特号=能够校验它的不同校验比特的比特号之和。
例如,对信息比特A7,将7转换为111,按权展开得7=22十21十20。因此A7应由P4,P2,P1进行校验。即A7应在P4,P2,P1的校验方程式中。
为说明如何编码,设信息比特数为4,则按海明不等式计算得校验比特数为3;又假定进行偶校验,那么根据上述规则便可得以下的校验方程式:
P1�A3�A5�A7=0
P2�A3�A6�A7=0
P4�A5�A6�A7=0
根据校验方程式可得校验比特的逻辑表达式:
P1=A3�A5�A7
P2=A3�A6�A7
P4=A5�A6�A7
例如,若信息比特为1010,可算出检验比特为
P1=A3�A5�A7=l�0�0=l
P2=A3�A6�A7=1�1�0=0
P4=A5�A6�A7=0�1�0=l
于是海明码为P1P2A3P4A5A6A7=1011010。
上述海明码的编码效率为4/7。若k=7,可算得r至少为4,此时编码效率为7/11。信息比特长度越长编码效率越高。
 

你可能感兴趣的:(职场,osi,结构,休闲,清华大学,网络体系)