您好,登錄后才能下訂單哦!
什么是TCP粘包/拆包問題
TCP以流方式傳輸,是沒有界限的一串數據,并沒有消息邊界。 - TCP傳輸數據時,會根據底層的TCP緩存區實際情況進行數據包劃分: - 1.業務上定義的完整數據(比方說一個完整的json串),可能會被TCP拆分成多個數據包進行發送(拆包)。 - 2.業務上特殊含義的獨立數據,也有可能因為大小或者緩沖區原因,被TCP封裝成一個大數據包發送(粘包)。
通過一個圖來理解
通過圖我們可以發現,數據包接收有很多情況:
1、沒有粘包拆包,終端2收到了完整的數據包A和數據包B。
2、終端2一次性讀取到數據包A和數據包B,這就是粘包。
3、終端2讀取到完整的數據包A和部分數據包B1,第二次才讀取到數據包B剩余部分(數據包B2),這就是拆包。
4、類似第三點,數據包A也有可能分成兩部分(A1、A2), 被前后讀取。
5、假設數據包很大,那么可能產生多次拆包,如數據包A分N次被讀取。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。