本發明屬于通信領域,具體涉及數字化信息系統中基于對象管理組織(Object Management Group,OMG)組織提出的數據分發服務(Date Distribution Service,DDS)標準實現的“請求-響應”式數據通信方式。
背景技術:
TFTP(Trivial File Transfer Protocol,RFC1350)是一個傳輸文件的簡單協議,通常使用UDP協議而實現。其單端口傳輸,對每一數據塊一ACK的傳輸方式能夠確保數據有序到達。而在鏈路聚合鏈接條件下,其協議不能有效使用所有鏈路的帶寬,限制了傳輸效率。
技術實現要素:
本發明的發明目的是:
為了解決背景中所存在的技術問題,本發明提出了一種用于鏈路聚合鏈接條件下的文件傳輸方法。在TFTP的基礎上,通過對客戶端使用多個端口并設立發送窗口,達到多鏈路的有效使用,提高了鏈路聚合鏈接條件下的傳輸效率。
本發明的技術解決方案是:
一種用于鏈路聚合鏈接條件下的文件傳輸方法,包括:
數據上傳方法和數據下載方法;
其中,數據上傳方法包括:
步驟1、客戶端從n個端口中隨機選擇一端口向客戶端發送寫請求,請求參數中附帶客戶端所有n個傳輸端口信息;
步驟2、服務端返回ACK給客戶端,ACK編號為0;
步驟3、客戶端n個端口,同時隨機發送滑動窗口內的數據塊,所述滑動窗口大小為z;
步驟4、服務端收到數據塊后,根據數據緩存內容,生成返回的ACK的編號m并返回ACK,所述m表示m及其之前的數據塊已全部接收成功;
步驟5、客戶端接到編號為m的ACK之后,將窗口向前滑動到m+1,n個端口繼續并行發送窗口中的數據,此時發送的數據塊為m+1到m+z;
步驟6、重復上述發送步驟,直到ACK編號到達最后一個數據塊位置,所述最后一個數據塊為不滿TFTP塊大小的數據塊,完成傳輸;
數據下載方法包括:
步驟7、客戶端從n個端口中隨機選擇一端口向客戶端發送讀請求,請求參數中附帶客戶端所有n個傳輸端口信息;
步驟8、服務端向客戶端n個端口,分別隨機發送滑動窗口內的數據塊,所述滑動窗口大小為z;
步驟9、客戶端收到數據塊后,根據數據緩存內容,生成返回的ACK的編號m并返回ACK,所述m表示m及其之前的數據塊已全部接收成功;
步驟10、服務端接到編號為m的ACK之后,將窗口向前滑動到m+1,繼續向客戶端n個端口隨機發送窗口中的數據,此時發送的數據塊為m+1到m+z;
步驟11、重復上述發送步驟,直到ACK編號到達最后一個數據塊位置,所述最后一個數據塊為不滿TFTP塊大小的數據塊,完成傳輸。
本發明具有的優點效果:
本發明在TFTP文件傳輸協議的基礎上,根據鏈路聚合鏈接條件下的特點,使用多端口發送及發送窗口,達到了多鏈路的充分利用,提高了鏈路聚合鏈接條件下的傳輸效率;并且當某一路斷開時,可以自動將負載分配到其他正常鏈路上,實現了動態負載均衡。
附圖說明
圖1是本發明發送窗口的示意圖:n,n+1及以前塊數據已發送完畢且已收到ACK;n+2,n+3,n+4塊數據在發送窗口中正在發送,等待收到ACK后滑動窗口;n+5,n+6,n+7,n+8及以后數據塊還未發送;
圖2是本發明多端口接收/發送數據鏈路圖,客戶端多端口分配到不同的鏈路上,從而實現多鏈路的充分利用。
具體實施方式
如圖1、2所示,一種用于鏈路聚合鏈接條件下的文件傳輸方法,包括:
數據上傳方法和數據下載方法;
其中,數據上傳方法包括:
步驟1、客戶端從n個端口中隨機選擇一端口向客戶端發送寫請求,請求參數中附帶客戶端所有n個傳輸端口信息;
步驟2、服務端返回ACK給客戶端,ACK編號為0;
步驟3、客戶端n個端口,同時隨機發送滑動窗口內的數據塊,所述滑動窗口大小為z;
步驟4、服務端收到數據塊后,根據數據緩存內容,生成返回的ACK的編號m并返回ACK,所述m表示m及其之前的數據塊已全部接收成功;
步驟5、客戶端接到編號為m的ACK之后,將窗口向前滑動到m+1,n個端口繼續并行發送窗口中的數據,此時發送的數據塊為m+1到m+z;
步驟6、重復上述發送步驟,直到ACK編號到達最后一個數據塊位置,所述最后一個數據塊為不滿TFTP塊大小的數據塊,完成傳輸;
數據下載方法包括:
步驟7、客戶端從n個端口中隨機選擇一端口向客戶端發送讀請求,請求參數中附帶客戶端所有n個傳輸端口信息;
步驟8、服務端向客戶端n個端口,分別隨機發送滑動窗口內的數據塊,所述滑動窗口大小為z;
步驟9、客戶端收到數據塊后,根據數據緩存內容,生成返回的ACK的編號m并返回ACK,所述m表示m及其之前的數據塊已全部接收成功;
步驟10、服務端接到編號為m的ACK之后,將窗口向前滑動到m+1,繼續向客戶端n個端口隨機發送窗口中的數據,此時發送的數據塊為m+1到m+z;
步驟11、重復上述發送步驟,直到ACK編號到達最后一個數據塊位置,所述最后一個數據塊為不滿TFTP塊大小的數據塊,完成傳輸。