TCP/IP協議棧設計—TCP設計實現(初步)
目錄
1,TCP連接(三次握手)測試
2,TCP數據發送與接收測試
3,TCP收發的優化與測試
4,結束連接與請求重置測試
1,TCP連接(三次握手)測試
經過這幾天艱難的調試,終於初見成效:TCP連接成功啦。下面給出連接的抓包情況。
下面是TCP&UDP調試助手的設置情況。
2,TCP數據發送與接收測試
上面連接成功後,開始進行數據傳輸測試。如下圖,助手任意設置發送數據,點擊發送後,接收窗口,開始接收TCP數據。TCP傳輸成功。
下面是對應的TCP數據發送抓包情況。
到此,基本打通TCP連接與傳輸,下面繼續進行改進、優化和完善。
3,TCP收發的優化與測試
3.1 發送過程實測截圖1,如下。FPGA發送一個,PC端的助手回覆一個ACK。測試中採用低速,1s發送一次。所以,可見接收速率爲46MB/S。
3.2 改變發送字節的長度,測試如下。此時,接收速率爲48MB/S。
3.3 再次測試TCP數據傳輸,如下,傳輸狀態正常。
4,結束連接與請求重置測試
4.1 疑問:客戶端發送TCP請求重置,需要服務器端回覆ack嗎?
查了下,沒有明確的回答。當前設計,認爲收到RST幀後,讓FPGA端重置,且不再回復ACK了。只有等下次SYN幀來了,纔開啓下個TCP的連接。
4.2 請求斷開FIN幀測試
結果如下,由TCP助手發起請求斷開,FPGA作出斷開回應,並也回覆FIN幀,最後TCP助手接收到FPGA發來的FIN幀,並作出迴應。4次握手完成,斷開成功!
4.3 FIN可靠性測試與TCP重連
結果如下,上個10000端口號的TCP4次握手斷開連接後,10001端口號進行連接建立,成功握手。
在此連接下,啓動數據發送,均正常。
此時,點擊斷開連接,抓取結果如下。4次握手正常斷開。
到此,tcp連接、接收、發送、斷開的整個流程測試完成。實現了初步的TCP/IP協議棧。
歡迎交流、源碼分享見CSDN資源,筆者扣扣:1021100382