• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

      連 宏

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

      0 引言

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

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

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

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

      1.1 協(xié)議幀格式

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

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

      表2 消息類(lèi)型

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

      表1 報(bào)文幀格式

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

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

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

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

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

      1.2 協(xié)議握手過(guò)程

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

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

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

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

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

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

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

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

      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)答消息時(shí),轉(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ù)的處理過(guò)程如下所示:

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

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

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

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

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

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

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

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

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

      J.結(jié)束。

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

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

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

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

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

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

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

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

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

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

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

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

      3 結(jié)束語(yǔ)

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

      猜你喜歡
      二進(jìn)制校驗(yàn)報(bào)文
      基于J1939 協(xié)議多包報(bào)文的時(shí)序研究及應(yīng)用
      用二進(jìn)制解一道高中數(shù)學(xué)聯(lián)賽數(shù)論題
      CTCS-2級(jí)報(bào)文數(shù)據(jù)管理需求分析和實(shí)現(xiàn)
      有趣的進(jìn)度
      二進(jìn)制在競(jìng)賽題中的應(yīng)用
      淺析反駁類(lèi)報(bào)文要點(diǎn)
      爐溫均勻性校驗(yàn)在鑄鍛企業(yè)的應(yīng)用
      ATS與列車(chē)通信報(bào)文分析
      大型電動(dòng)機(jī)高阻抗差動(dòng)保護(hù)穩(wěn)定校驗(yàn)研究
      基于加窗插值FFT的PMU校驗(yàn)方法
      大城县| 连山| 南宁市| 定结县| 福鼎市| 马龙县| 安溪县| 廊坊市| 沾益县| 自治县| 塔河县| 油尖旺区| 夏邑县| 海淀区| 云浮市| 大安市| 忻城县| 兰溪市| 株洲市| 白水县| 岱山县| 从化市| 宜川县| 香港| 台北县| 长海县| 夏津县| 富蕴县| 张家口市| 滕州市| 仙桃市| 普宁市| 黔江区| 华宁县| 通化县| 翼城县| 富蕴县| 铁岭县| 长兴县| 汾西县| 三都|