1. 程式人生 > >tcp粘包、拆包

tcp粘包、拆包

傳輸 packet ima .cn bsp log src blog 一次

粘包、拆包發生原因:
發生TCP粘包或拆包有很多原因,現列出常見的幾點,可能不全面,歡迎補充,
1、要發送的數據大於TCP發送緩沖區剩余空間大小,將會發生拆包。
2、待發送數據大於MSS(最大報文長度),TCP在傳輸前將進行拆包。
3、要發送的數據小於TCP發送緩沖區的大小,TCP將多次寫入緩沖區的數據一次發送出去,將會發生粘包。
4、接收數據端的應用層沒有及時讀取接收緩沖區中的數據,將發生粘包。

現在假設客戶端向服務端連續發送了兩個數據包,用packet1和packet2來表示,那麽服務端收到的數據可以分為三種,現列舉如下:

技術分享

技術分享

技術分享

tcp粘包、拆包