tcp粘包是怎么產生的?


1、什么是 tcp 粘包?

發送方發送的多個數據包,到接收方緩沖區首尾相連,粘成一包,被接收。

 

2、原因

TCP 協議默認使用 Nagle 算法可能會把多個數據包一次發送到接收方。

應用程讀取緩存中的數據包的速度小於接收數據包的速度,緩存中的多個數據包會被應用程序當成一個包一次讀取。

 

3、處理方法

發送方使用 TCP_NODELAY 選項來關閉 Nagle 算法

數據包增加開始符和結束,應用程序讀取、區分數據包。

在數據包的頭部定義整個數據包的長度,應用程序先讀取數據包的長度,然后讀取整個長度的包字節數據,保證讀取的是單個包且完整。

 

參考

 

  

來一道刷了進BAT的面試題?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM