1. 程式人生 > >網路資料包在不同網路環境下的丟失表現

網路資料包在不同網路環境下的丟失表現

最近專案在網路資料發包和收包的時候出了問題,連線是採用Tcp協議進行的。經過分析問題應該是服務端的傳送佇列溢位或者是客戶端的接收佇列溢位造成的資料丟失。詳細情況如下。首先客戶端在登入到服務端的時候會收到服務端傳送過來的大量資料,其中有一類資料為長資料報文,資料量比較大,每個資料包有10000多個位元組。而在客戶端收到主這些資料之後的資料會有一定的機會丟失。其中我們不清楚是服務端是否成功傳送出去,還是客戶端在接收時沒能夠成功放進緩衝區中。這個情況只在Internet中出現,在區域網中未發現有丟失資料現象。所以認為是網路環境觸發了這個漏洞。

在TCP/IP的協議下,傳送的大資料包會在運輸層中的tcp協議被會成許多個tcp包來發送的,然後在接收端的運輸層內按順序進行重組,當接收到完整的資料包時再向應用層發出接收的通知。由於在物理層中資料報文很可能會根據當時的網路環境不同經過不同的路由,所以到達的時間和順序都不一樣。

....未完待續