本技術(shù)涉及通信,尤其涉及一種通信方法及相關(guān)裝置。
背景技術(shù):
1、對(duì)于不便使用以太網(wǎng)或無法使用以太網(wǎng)進(jìn)行數(shù)據(jù)交互的設(shè)備,可嘗試使用通用串行總線(universal?serial?bus,usb)電纜連接,例如,每個(gè)下位機(jī)都通過usb電纜連接上位機(jī)組成usb網(wǎng)絡(luò),進(jìn)行數(shù)據(jù)交互。
2、usb數(shù)據(jù)傳輸支持多個(gè)設(shè)備類型,包括usb?acm(abstract?control?model)串口、usb?ecm(ethernet?control?message?protocol)以太網(wǎng)卡、大容量存儲(chǔ)設(shè)備、usb?hid設(shè)備等。但此類數(shù)據(jù)傳輸方案存在較大局限,例如,速率限制、可靠性限制或易用性限制等。
技術(shù)實(shí)現(xiàn)思路
1、鑒于上述問題,本技術(shù)提供了一種通信方法及相關(guān)裝置,以解決上述至少部分技術(shù)問題。具體方案如下:
2、本技術(shù)第一方面提供一種通信方法,應(yīng)用于接收方,所述方法包括:
3、獲取傳輸控制層數(shù)據(jù)包;
4、對(duì)所述傳輸控制層數(shù)據(jù)包校驗(yàn)正確、且確定所述傳輸控制層數(shù)據(jù)包是應(yīng)用層數(shù)據(jù)后,判斷當(dāng)前接收的傳輸控制層數(shù)據(jù)包是否發(fā)生亂序;
5、針對(duì)校驗(yàn)不正確的傳輸控制層數(shù)據(jù)包發(fā)送重傳請(qǐng)求,所述重傳請(qǐng)求攜帶校驗(yàn)不正確的傳輸控制層數(shù)據(jù)包的序號(hào);
6、確定接收到的傳輸控制層數(shù)據(jù)包不存在亂序后,或者,確定接收到的傳輸控制層數(shù)據(jù)包存在亂序、且等待預(yù)設(shè)時(shí)長(zhǎng)后確定接收到目標(biāo)序號(hào)的傳輸控制層數(shù)據(jù)包,合并接收的全部傳輸控制層數(shù)據(jù)包,獲得應(yīng)用層數(shù)據(jù)包;
7、向應(yīng)用層發(fā)送所述應(yīng)用層數(shù)據(jù)包;
8、確定接收到的傳輸控制層數(shù)據(jù)包存在亂序,且等待預(yù)設(shè)時(shí)長(zhǎng)后確定未接收到目標(biāo)序號(hào)的傳輸控制層數(shù)據(jù)包,發(fā)送重傳請(qǐng)求。
9、在一種可能的實(shí)現(xiàn)方式中,對(duì)所述傳輸控制層數(shù)據(jù)包校驗(yàn)正確,包括:
10、校驗(yàn)所述傳輸控制層數(shù)據(jù)包中的每個(gè)字段的內(nèi)容是否與對(duì)應(yīng)字段的含義一致,若至少一個(gè)字段的內(nèi)容與對(duì)應(yīng)字段的含義不一致,確定所述傳輸控制層數(shù)據(jù)包存在異常;
11、確定所述傳輸控制層數(shù)據(jù)包的每個(gè)字段的內(nèi)容與對(duì)應(yīng)字段的含義相同后,對(duì)所述傳輸控制層數(shù)據(jù)包進(jìn)行crc校驗(yàn),若crc校驗(yàn)不正確確定所述傳輸控制層數(shù)據(jù)包校驗(yàn)不正確,若crc校驗(yàn)正確確定所述傳輸控制層數(shù)據(jù)包校驗(yàn)正確。
12、在一種可能的實(shí)現(xiàn)方式中,所述判斷當(dāng)前接收的傳輸控制層數(shù)據(jù)包是否發(fā)生亂序,包括:
13、判斷當(dāng)前接收的傳輸控制層數(shù)據(jù)包中的序號(hào)與本地記錄的序號(hào)是否一致,若一致確定未發(fā)生亂序,若不一致確定接收的傳輸控制層數(shù)據(jù)包發(fā)生亂序。
14、在一種可能的實(shí)現(xiàn)方式中,所述確定接收到的傳輸控制層數(shù)據(jù)包存在亂序、且等待第一預(yù)設(shè)時(shí)長(zhǎng)后確定接收到目標(biāo)序號(hào)的傳輸控制層數(shù)據(jù)包,包括:
15、確定接收到的傳輸控制層數(shù)據(jù)包存在亂序后,將當(dāng)前接收的傳輸控制層數(shù)據(jù)包存入緩沖區(qū),在所述第一預(yù)設(shè)時(shí)長(zhǎng)內(nèi)接收n個(gè)傳輸控制層數(shù)據(jù)包并存入緩沖區(qū);
16、對(duì)緩沖區(qū)內(nèi)的所有傳輸控制層數(shù)據(jù)包進(jìn)行排序,判斷是否存在目標(biāo)序號(hào)的傳輸控制層數(shù)據(jù)包,所述目標(biāo)序號(hào)為缺失的序號(hào);
17、若緩沖區(qū)中存在所述目標(biāo)序號(hào)的傳輸控制層數(shù)據(jù)包,確定接收到所述目標(biāo)序號(hào)的傳輸控制層數(shù)據(jù)包;
18、若緩沖區(qū)中不存在所述目標(biāo)序號(hào)的傳輸控制層數(shù)據(jù)包,確定未接收到所述目標(biāo)序號(hào)的傳輸控制層數(shù)據(jù)包。
19、在一種可能的實(shí)現(xiàn)方式中,所述接收方為下位機(jī),所述獲取傳輸控制層數(shù)據(jù)包,包括:
20、接收usb鏈路層數(shù)據(jù)包,并從所述usb鏈路層數(shù)據(jù)包中提取usb?eem鏈路層數(shù)據(jù)包;
21、從校驗(yàn)正確的usb?eem鏈路層數(shù)據(jù)包中提取傳輸控制層數(shù)據(jù)包。
22、在一種可能的實(shí)現(xiàn)方式中,所述方法還包括:
23、確定所述傳輸控制層數(shù)據(jù)包是重置請(qǐng)求包后,響應(yīng)重置請(qǐng)求將usb?eem連接鏈路恢復(fù)為初始狀態(tài),并向發(fā)送方發(fā)送重置成功的回復(fù)消息;
24、或者,
25、確定所述傳輸控制層數(shù)據(jù)包是心跳包后,重置心跳超時(shí)計(jì)時(shí)器。
26、本技術(shù)第二方面提供一種通信方法,應(yīng)用于發(fā)送方,所述方法包括:
27、獲取待發(fā)送應(yīng)用數(shù)據(jù),在所述待發(fā)送應(yīng)用數(shù)據(jù)中添加應(yīng)用層對(duì)應(yīng)的頭部信息,獲得應(yīng)用層數(shù)據(jù)包;
28、對(duì)所述應(yīng)用層數(shù)據(jù)包進(jìn)行數(shù)據(jù)分包,并添加傳輸控制層對(duì)應(yīng)的頭部信息和尾部信息,獲得傳輸控制層數(shù)據(jù)包;
29、在所述傳輸控制層數(shù)據(jù)包的外層添加虛擬以太網(wǎng)鏈路層的頭部信息,獲得虛擬以太網(wǎng)鏈路層數(shù)據(jù)包;
30、在所述虛擬以太網(wǎng)鏈路層數(shù)據(jù)包的外層添加usb?eem鏈路層的頭部信息和尾部信息,獲得usb?eem鏈路層數(shù)據(jù)包;
31、通過硬件鏈路層發(fā)送所述usb?eem鏈路層數(shù)據(jù)包。
32、在一種可能的實(shí)現(xiàn)方式中,在所述獲取待發(fā)送應(yīng)用數(shù)據(jù)之前,所述方法還包括:
33、確定接收到重傳請(qǐng)求包后,基于重傳請(qǐng)求攜帶的目標(biāo)序號(hào)獲得待重傳數(shù)據(jù),并根據(jù)所述待重傳數(shù)據(jù)組裝重傳數(shù)據(jù)包;
34、在所述組裝重傳數(shù)據(jù)包的外層依次添加虛擬以太網(wǎng)鏈路層的頭部信息,以及usbeem鏈路層的頭部信息和尾部信息,獲得待發(fā)送重傳數(shù)據(jù)包;
35、通過硬件鏈路層發(fā)送所述待發(fā)送重傳數(shù)據(jù)包。
36、在一種可能的實(shí)現(xiàn)方式中,所述基于重傳請(qǐng)求攜帶的目標(biāo)序號(hào)獲得待重傳數(shù)據(jù),包括:
37、將從所述目標(biāo)序號(hào)開始的所有業(yè)務(wù)數(shù)據(jù)確定為所述待重傳數(shù)據(jù);
38、或者,
39、將所述目標(biāo)序號(hào)對(duì)應(yīng)的業(yè)務(wù)數(shù)據(jù)確定為所述待重傳數(shù)據(jù)。
40、在一種可能的實(shí)現(xiàn)方式中,所述發(fā)送方為上位機(jī),在所述獲取待發(fā)送應(yīng)用數(shù)據(jù)之前,所述方法還包括:
41、確定usb?eem連接鏈路出現(xiàn)異常后,向下位機(jī)發(fā)送重置請(qǐng)求,所述重置請(qǐng)求用于使所述下位機(jī)重置usb?eem鏈路;
42、接收所述下位機(jī)發(fā)送的重置成功回復(fù)消息后,確定usb?eem連接鏈路恢復(fù)成功。
43、在一種可能的實(shí)現(xiàn)方式中,所述確定usb?eem連接鏈路出現(xiàn)異常,包括:
44、所述發(fā)送方接收到重傳請(qǐng)求包后,未獲得所述重傳請(qǐng)求包攜帶的目標(biāo)序號(hào)對(duì)應(yīng)的數(shù)據(jù)包,確定所述usb?eem連接鏈路異常;
45、或者,
46、所述發(fā)送方在第二預(yù)設(shè)時(shí)長(zhǎng)內(nèi)未收到心跳包,確定所述usb?eem連接鏈路異常。
47、本技術(shù)第三方面提供一種電子設(shè)備,包括至少一個(gè)處理器和與所述處理器連接的存儲(chǔ)器,其中:
48、所述存儲(chǔ)器用于存儲(chǔ)計(jì)算機(jī)程序;
49、所述處理器用于執(zhí)行所述計(jì)算機(jī)程序,以使所述電子設(shè)備能夠?qū)崿F(xiàn)如第一方面任意一項(xiàng)所述的通信方法。
50、本技術(shù)第四方面提供一種計(jì)算機(jī)存儲(chǔ)介質(zhì),所述存儲(chǔ)介質(zhì)承載有一個(gè)或多個(gè)計(jì)算機(jī)程序,當(dāng)所述一個(gè)或多個(gè)計(jì)算機(jī)程序被電子設(shè)備執(zhí)行時(shí),能夠使所述電子設(shè)備實(shí)現(xiàn)如第一方面任意一項(xiàng)所述的通信方法。
51、本技術(shù)第五方面提供一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)可讀指令,當(dāng)所述計(jì)算機(jī)可讀指令在電子設(shè)備上運(yùn)行時(shí),使得所述電子設(shè)備實(shí)現(xiàn)上述第一方面任一實(shí)現(xiàn)方式的通信方法。
52、本技術(shù)提供的通信方法,接收方接收到數(shù)據(jù)傳遞至傳輸控制層后,在對(duì)數(shù)據(jù)包校驗(yàn)正確后,進(jìn)一步判斷當(dāng)前傳輸控制層數(shù)據(jù)包是否是應(yīng)用層數(shù)據(jù),若是應(yīng)用層數(shù)據(jù)則判斷是否存在錯(cuò)包、丟包或亂序的情況,若數(shù)據(jù)包的序號(hào)正確待接收完全部傳輸控制層數(shù)據(jù)包后進(jìn)行數(shù)據(jù)合并獲得應(yīng)用層數(shù)據(jù),并應(yīng)用層數(shù)據(jù)傳遞至應(yīng)用層。如果存在錯(cuò)包或丟包則立即請(qǐng)求發(fā)送方進(jìn)行重傳。若接收的數(shù)據(jù)包存在亂序,則繼續(xù)接收傳輸控制層數(shù)據(jù)包并緩存,緩存一定時(shí)間后,判斷是否接收到目標(biāo)序號(hào)的數(shù)據(jù)包。通過傳輸控制層的上述容錯(cuò)、重發(fā)機(jī)制,可以確保收發(fā)數(shù)據(jù)的準(zhǔn)確性,以及系統(tǒng)的安全性。