文档介绍:什么是差错控制?检错:接收方检验收到的数据是否正确。如果有错,则丢弃数据帧,交给高层处理,或通知发送方重传此数据帧。纠错:接收方试图纠正错误。SENDERFrame#1Frame#2Frame#n…RECEIVERDate1差错检测发送方(Sender)对帧数据(data,共kbits)按一定的规则计算“冗余码”或称为“校验和”(checksum,共nbits),然后将data和checksum(共k+nbits)一起发出。Date2差错检测接收方(receiver)收到后,按相同的规则对data重新计算checksum,然后与收到的checksum进行比较,来确定data是否在传输过程中被损坏(出错)。Date3举例:循环冗余码CRCCyclicRedundancyCode待传送的数据M=1010001101(k=10bits)求冗余码(n=5bits):用二进制的模2运算进行的运算,相当于在M后面添加n个0(n+kbits),即101000110100000Date41101010110←Q商除数P→110101101000110100000←2nM被除数110101111011110101111010110101111110110101101100110101110010**********←R余数Calculationofthepolynomialcodechecksum将新得到的数101000110100000除以事先选定的数P=110101(n+1bits),得出商是Q=1101010110,而余数是R=01110。注意:冗余码R比P少一位Date5举例:循环冗余码CRCCyclicRedundancyCode将余数R作为冗余码添加在待传数据M后面一起发送出去,即实际发出的数据是101000110101110,即如果数据传输中不产生误码,则接收方收到的应该也是换句话说,将除以P(模2运算)后,余数应为0。Date6差错控制码:RC用多项式代数运算来表示循环冗余检验过程,即使用多项式相应的系数来表示二进制数字中的1和0。P=110101Date7差错控制码:循环冗余码CRC在接收端进行的运算就可以写为M(X):待传数据P(X):生成多项式Q(X):商R(X):余数R(X)!=0,就表示检测到了差错。R(X)=0,无差错???Date8循环冗余码CRC检错但并不能说,余数为0,就一定没有差错。在某种比特差错的组合下,也可能碰巧使得余数R正好为0。精心选择除数P,可使出现检测不到差错的概率控制在一个很很……很小的范围内。P=?Date9差错控制码:循环冗余码CRC国际上推荐的循环冗余码生成多项式:P=1100000001111(共13位)P=11000000000000101(共17位)P=10001000000100001(共17位)P=1000001001100000100001**********(共33位)Date10