国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種具有檢錯功能的傳輸協(xié)議設(shè)計

2021-05-20 06:55:24
現(xiàn)代導(dǎo)航 2021年2期
關(guān)鍵詞:二進(jìn)制校驗報文

連 宏

(中國電子科技集團(tuán)公司第二十研究所,西安 710068)

0 引言

基于非連接的網(wǎng)絡(luò)傳輸層協(xié)議提供的是不可靠的數(shù)據(jù)傳輸服務(wù)[1],無法保證接收端接收到的字節(jié)流是完整的、無差錯的和有序的。此時,就需要設(shè)計應(yīng)用層上的傳輸協(xié)議來保證面向非連接網(wǎng)絡(luò)傳輸?shù)目煽啃訹2]。

針對不可靠的非連接網(wǎng)絡(luò)傳輸,本文設(shè)計了一種具有檢錯功能的傳輸協(xié)議。該協(xié)議綜合運用握手、確認(rèn)、應(yīng)答、校驗和錯誤重傳等多種手段,能有效檢查出傳輸數(shù)據(jù)的錯誤,對錯誤的數(shù)據(jù)采用重傳確認(rèn)機(jī)制,保證了數(shù)據(jù)傳輸?shù)恼_性和有效性。

傳輸協(xié)議包括幀格式定義和傳輸過程定義兩部分內(nèi)容[3]。幀格式描述了協(xié)議報文的基本定義,握手過程描述了數(shù)據(jù)發(fā)送和應(yīng)答的交互過程。下面分別描述本協(xié)議的幀格式、握手過程以及具體實現(xiàn)。

1 協(xié)議設(shè)計

1.1 協(xié)議幀格式

幀格式由同步頭、起始字、消息類型、報文長度、信息正文內(nèi)容、保留和校驗等九部分組成。報文幀格式如表1所示。

表1中消息類型與信息正文內(nèi)容定義如表2所示。

表2 消息類型

幀頭校驗采用校驗和形式,即表1報文幀格式中‘2’、‘3’、‘4’、‘5’項各個字節(jié)的值進(jìn)行累加,溢出則丟棄,累加和由#0100H 減后存入第6 項。數(shù)據(jù)信息校驗采用循環(huán)冗余校驗(Cyclic Redundancy Check,CRC)。CRC 校驗的生成多項式的階數(shù)越高,那么誤判的概率就越小[4]。本協(xié)議使用16 位校驗,生成多項式為g(x)=x16+x12+x5+1,可以100%地檢測出所有奇數(shù)個隨機(jī)錯誤和長度小于等于k(k為g(x)的階數(shù))的突發(fā)錯誤[5]。

表1 報文幀格式

(1)表1的報文幀格式分為報頭幀和數(shù)據(jù)幀兩種。報頭幀僅包含表1中的1~6 項,用來發(fā)送建立連接和發(fā)送應(yīng)答等握手信號,即消息類型為101(正確接收應(yīng)答消息)、102(錯誤接收應(yīng)答消息)和104(建立連接消息)時采用報頭幀格式發(fā)送。數(shù)據(jù)幀包含表1中1~9 項的全部內(nèi)容,用來發(fā)送數(shù)據(jù),即消息類型為100(本幀數(shù)據(jù)內(nèi)容)和103(上幀數(shù)據(jù)內(nèi)容)時采用數(shù)據(jù)幀格式發(fā)送。

(2)表1報文幀格式中,第6 項幀頭校驗采用校驗和形式進(jìn)行校驗。

(3)表1報文幀格式中,第9 項數(shù)據(jù)信息的校驗采用循環(huán)冗余校驗進(jìn)行校驗。

(4)表1報文幀格式中,第7 項信息正文內(nèi)容的最大長度為2048 字節(jié)。如果待發(fā)送的信息長度小于2048 字節(jié),則為實際字節(jié)長度。

使用協(xié)議幀格式進(jìn)行數(shù)據(jù)傳輸,首先由報文同步頭和報文起始字共同決定一幀的開始,這樣避免了非法數(shù)據(jù)進(jìn)入到內(nèi)部處理;然后使用幀頭保留作為判斷字節(jié),可以過濾掉錯誤幀,保留正確幀;最后利用幀頭校驗來判斷幀頭是否正確。通過以上三層處理,僅保留了正確的幀數(shù)據(jù)。接下來對數(shù)據(jù)信息進(jìn)行CRC 校驗,確保進(jìn)入后續(xù)處理程序的數(shù)據(jù)是正確的。通過幀頭校驗和數(shù)據(jù)信息CRC 校驗可以有效檢出幀頭錯誤和數(shù)據(jù)信息錯誤,這樣可靠地保證了數(shù)據(jù)傳輸?shù)挠行院蛿?shù)據(jù)信息的正確性。

1.2 協(xié)議握手過程

發(fā)送方和接收方通過發(fā)送消息和接收應(yīng)答實現(xiàn)雙方的握手過程。首先發(fā)送方發(fā)送建立連接消息,接收方接收到建立連接消息后,根據(jù)幀頭校驗判斷是否是正確幀,正確幀發(fā)送正確接收應(yīng)答消息,錯誤幀發(fā)送錯誤接收應(yīng)答消息。發(fā)送方接收到正確接收應(yīng)答消息后開始發(fā)送數(shù)據(jù)消息;如果接收到錯誤接收應(yīng)答消息,則重新發(fā)送建立連接消息,如果重傳三次仍不成功,則退出發(fā)送過程。

發(fā)送方發(fā)送數(shù)據(jù)信息的握手過程與發(fā)送建立連接消息的握手過程相同,但接收方接收到數(shù)據(jù)信息后根據(jù)幀頭校驗和數(shù)據(jù)信息的CRC 校驗兩部分的結(jié)果判斷幀數(shù)據(jù)是否正確,如果幀頭校驗和數(shù)據(jù)信息校驗均正確,則發(fā)送正確接收應(yīng)答消息,如果幀頭和數(shù)據(jù)信息中任意一個校驗出現(xiàn)錯誤,均發(fā)送錯誤接收應(yīng)答消息。

協(xié)議握手過程如圖1所示。

圖1 協(xié)議握手過程

本協(xié)議通過發(fā)送—應(yīng)答—握手—重傳機(jī)制,即發(fā)送一幀數(shù)據(jù),一個應(yīng)答,若應(yīng)答沒收到或者接收到錯誤應(yīng)答,重新進(jìn)行協(xié)商握手,握手失敗則向應(yīng)用程序報告錯誤。握手過程建立了邏輯連接通道,保證了數(shù)據(jù)傳輸過程的可靠性;幀頭校驗和數(shù)據(jù)信息的CRC 校驗檢出了幀頭和數(shù)據(jù)信息的錯誤,確保了數(shù)據(jù)信息的正確性;數(shù)據(jù)重傳機(jī)制,保障了數(shù)據(jù)傳輸?shù)挠行?。該協(xié)議中多重手段的綜合應(yīng)用,使數(shù)據(jù)傳輸更加穩(wěn)定高效。

2 協(xié)議實現(xiàn)

2.1 數(shù)據(jù)發(fā)送接收過程

發(fā)送方發(fā)送數(shù)據(jù)的處理過程如下所示:

A.發(fā)送建立連接消息;

B.等待接收應(yīng)答消息;

C.接收應(yīng)答消息,如果應(yīng)答為正確接收應(yīng)答消息,轉(zhuǎn)E;否則,轉(zhuǎn)D;

D.判斷是否發(fā)送三次,是,轉(zhuǎn)J;否,轉(zhuǎn)A;

E.發(fā)送數(shù)據(jù)消息;

F.等待接收應(yīng)答消息;

G.接收應(yīng)答消息;如果應(yīng)答為正確接收應(yīng)答消息時,轉(zhuǎn)I;否則,轉(zhuǎn)H;

H.判斷是否發(fā)送三次,是,轉(zhuǎn)J;否,轉(zhuǎn)E;

I.判斷是否發(fā)送完畢,發(fā)送完畢,轉(zhuǎn)J;否則,轉(zhuǎn)E;

J.結(jié)束。

接收方接收數(shù)據(jù)的處理過程如下所示:

A.等待接收建立連接消息;

B.接收建立連接消息,校驗正確,轉(zhuǎn)D;校驗錯誤,轉(zhuǎn)C;

C.發(fā)送錯誤接收回傳消息,判斷是否接收三次,是,轉(zhuǎn)J;否,轉(zhuǎn)A;

D.發(fā)送正確接收回傳消息;

E.等待接收數(shù)據(jù)消息;

F.接收數(shù)據(jù)消息,校驗正確,轉(zhuǎn)H;校驗錯誤,轉(zhuǎn)G;

G.發(fā)送錯誤接收回傳消息,判斷是否接收三次,是,轉(zhuǎn)J;否,轉(zhuǎn)E;

H.發(fā)送正確接收回傳消息;

I.判斷文件是否接收完畢,接收完畢,轉(zhuǎn)J;否則,轉(zhuǎn)E;

J.結(jié)束。

數(shù)據(jù)發(fā)送接收過程流程圖如圖2所示。

圖2 數(shù)據(jù)發(fā)送接收過程流程圖

2.2 循環(huán)冗余校驗算法

CRC 校驗采用多項式編碼方法。被處理的數(shù)據(jù)塊可以看作是一個n階的二進(jìn)制多項式,由an-1xn-1+an-2xx-2+···+a1x+a0組成。如一個8 位二進(jìn)制數(shù)10110101 可以表示為:

1x7+0x6+1x5+1x4+0x3+1x2+0x+1

多項式乘除法運算過程與普通代數(shù)多項式的乘除法相同。多項式的加減法運算以2 為模,加減時不進(jìn)、借位,和邏輯異或運算一致[6]。

采用CRC 校驗時,發(fā)送方和接收方用同一個生成多項式g(x),并且g(x)的首位和最后一位的系數(shù)必須為1。CRC 的處理方法是:發(fā)送方以g(x)去除待發(fā)送的二進(jìn)制數(shù)據(jù)t(x),得到的余數(shù)作為CRC校驗碼。校驗時,以計算的校正結(jié)果是否為0 為據(jù),判斷數(shù)據(jù)幀是否出錯。

CRC 校驗碼的編碼方法是用待發(fā)送的二進(jìn)制數(shù)據(jù)t(x)除以生成多項式g(x),將最后的余數(shù)作為CRC 校驗碼[7]。其實現(xiàn)步驟如下:

(1)設(shè)待發(fā)送的數(shù)據(jù)塊是m位的二進(jìn)制多項式t(x),生成多項式為r階的g(x)。在數(shù)據(jù)塊的末尾添加r個0,數(shù)據(jù)塊的長度增加到m+r位,對應(yīng)的二進(jìn)制多項式為xrt(x)。

(2)用生成多項式g(x)去除xrt(x),求得余數(shù)為階數(shù)為r-1 的二進(jìn)制多項式y(tǒng)(x)。此二進(jìn)制多項式y(tǒng)(x)就是t(x)經(jīng)過生成多項式g(x)編碼的CRC 校驗碼。

(3)用xrt(x)以(2)的方式減去y(x),得到二進(jìn)制多項式xrt'(x)。xrt'(x)就是包含了CRC 校驗碼的待發(fā)送字符串。

從CRC 的編碼規(guī)則可以看出,CRC 編碼實際上是將待發(fā)送的m位二進(jìn)制多項式t(x)轉(zhuǎn)換成了可以被g(x)除盡的m+r位二進(jìn)制多項式xrt'(x),所以解碼時可以用接收到的數(shù)據(jù)去除g(x),如果余數(shù)為0,則表示傳輸過程沒有錯誤;如果余數(shù)不為0,則在傳輸過程中肯定存在錯誤[8]。同時xrt'(x)可以看做是由t(x)和CRC 校驗碼的組合,所以解碼時將接收到的二進(jìn)制數(shù)據(jù)去掉尾部的r位數(shù)據(jù),得到的就是原始數(shù)據(jù)。

3 結(jié)束語

本網(wǎng)絡(luò)傳輸協(xié)議通過幀頭校驗和數(shù)據(jù)內(nèi)容的CRC 校驗,可有效檢出傳輸過程中的數(shù)據(jù)錯誤。通過接收發(fā)送方的握手和錯誤重傳機(jī)制,保障了傳輸過程的可靠性,提高了傳輸效率。本協(xié)議已在數(shù)據(jù)鏈系統(tǒng)網(wǎng)絡(luò)傳輸領(lǐng)域得到運用,為數(shù)據(jù)鏈系統(tǒng)數(shù)據(jù)的穩(wěn)定傳輸?shù)於藞詫嵉幕A(chǔ)。

猜你喜歡
二進(jìn)制校驗報文
基于J1939 協(xié)議多包報文的時序研究及應(yīng)用
汽車電器(2022年9期)2022-11-07 02:16:24
用二進(jìn)制解一道高中數(shù)學(xué)聯(lián)賽數(shù)論題
CTCS-2級報文數(shù)據(jù)管理需求分析和實現(xiàn)
有趣的進(jìn)度
二進(jìn)制在競賽題中的應(yīng)用
淺析反駁類報文要點
中國外匯(2019年11期)2019-08-27 02:06:30
爐溫均勻性校驗在鑄鍛企業(yè)的應(yīng)用
ATS與列車通信報文分析
大型電動機(jī)高阻抗差動保護(hù)穩(wěn)定校驗研究
電測與儀表(2015年1期)2015-04-09 12:03:02
基于加窗插值FFT的PMU校驗方法
若尔盖县| 九龙县| 九寨沟县| 洛隆县| 昭平县| 翼城县| 澄江县| 兴安盟| 台南市| 图木舒克市| 毕节市| 德兴市| 北海市| 朝阳市| 资溪县| 鹿邑县| 安丘市| 金乡县| 滁州市| 广昌县| 嘉鱼县| 池州市| 友谊县| 双鸭山市| 贡山| 普格县| 洛宁县| 乌兰察布市| 浙江省| 额敏县| 上高县| 阿拉尔市| 石渠县| 屏边| 长垣县| 三江| 松江区| 黎川县| 齐齐哈尔市| 铅山县| 肥东县|