面試題 粘包和拆包

2021-09-27 11:26:27 字數 527 閱讀 5721

什麼是訊息保護邊界?

udp協議傳送資料,每乙個包都是被分開的,每乙個包都有它自己的邊界,不會在接收方與其他的包混雜成為乙個包

所以粘包和拆包是針對於tcp包

客戶端給服務端傳送2個tcp資料報有以下幾種情況:

(1)  正常,兩個包分開傳送

(2)  兩個包一同傳送

(3)  接收到不完整的或多出一部分的資料報。

有3個原因:

應用程式一次傳送的資料大於套接字緩衝區,導致發生拆包,

應用程式一次傳送資料小於套接字緩衝區大小,網絡卡將多次傳送的資料一次傳送到服務端

應用程式不及時讀取套接字快取區的資料

tcp報文長度大於分段長度(mms)。

注:上圖第二種情況是粘包,第三種情況和第四種情況是粘包和拆包

to do ......................

粘包和拆包

3.圖三是發生了粘包的現象。客戶端傳送p1,p2包,p1,p2包到達接收端的快取,服務端應用讀取快取時無法區分p1,p2各自的大小。因為在tcp通訊協議中tcp是面向流的,包和包之間沒有界限。粘包可發生在傳送端也可發生在接收端以圖三各舉例子 傳送端原因導致的粘包,客戶端在傳送p1包時,先將p1包放入...

粘包和拆包

tcp 是個 流 協議,所謂流,就是沒有界限的一串資料 無論你上層是如何封裝的資料,到通訊層都會轉換成 流 的形式,比如 netty 的 bytebuf 它會根據 tcp 緩衝區的實際情況進行包的劃分,所以實際場景可能是 上面我們詳細了解了 tcp 粘包與拆包,那麼為什麼會發生粘包和拆包呢,大致上有...

TCP粘包和拆包

當傳送包同時傳送兩個資料報時,接收包只收到了乙個資料報,其中包含了兩個資料報的資訊,這種現象為粘包。這種情況下,接收方無法分清兩個資料報的界限,很難處理 當傳送包同時傳送兩個資料報時,接收方也收到了兩個資料報。但是這兩個資料報,乙個是不完整的,乙個是多出來一塊,這種現象為拆包。訊息定長 傳送方將資料...