tcp粘包現象

2021-07-16 10:38:25 字數 789 閱讀 6634

二 .什麼時候需要考慮粘包問題?

1:如果利用tcp每次傳送資料,就與對方建立連線,然後雙方傳送完一段資料後,就關閉連線,這樣就不會出現粘包問題(因為只有一種包結構,類似於http協議)。關閉連線主要要雙方都傳送close連線(參考tcp關閉協議)。如:a需要傳送一段字串給b,那麼a與b建立連線,然後傳送雙方都預設好的協議字元如"hello give me sth abour yourself",然後b收到報文後,就將緩衝區資料接收,然後關閉連線,這樣粘包問題不用考慮到,因為大家都知道是傳送一段字元。

2:如果傳送資料無結構,如檔案傳輸,這樣傳送方只管傳送,接收方只管接收儲存就ok,也不用考慮粘包

3:如果雙方建立連線,需要在連線後一段時間內傳送不同結構資料,如連線後,有好幾種結構:

1)"hello give me sth abour yourself" 

2)"don't give me sth abour yourself" 

那這樣的話,如果傳送方連續傳送這個兩個包出去,接收方一次接收可能會是"hello give me sth abour yourselfdon't give me sth abour yourself" 這樣接收方就傻了,到底是要幹嘛?不知道,因為協議沒有規定這麼詭異的字串,所以要處理把它分包,怎麼分也需要雙方組織乙個比較好的包結構,所以一般可能會在頭加乙個資料長度之類的包,以確保接收。

三 .粘包出現原因:在流傳輸中出現,udp不會出現粘包,因為它有訊息邊界(參考windows 網路程式設計)

1 傳送端需要等緩衝區滿才傳送出去,造成粘包

2 接收方不及時接收緩衝區的包,造成多個包接收

TCP的粘包現象

1 什麼是粘包現象 tcp粘包是指傳送方傳送的若干包資料到接收方接收時粘成一包,從接收緩衝區看,後一包資料的頭緊接著前一包資料的尾。2 為什麼出現粘包現象 1 傳送方原因 我們知道,tcp缺省會使用nagle演算法。而nagle演算法主要做兩件事 1 只有上乙個分組得到確認,才會傳送下乙個分組 2 ...

TCP的粘包現象

原文 看面經時,看到有面試官問tcp的粘包問題。想起來研一做購物車處理資料更新時遇到粘包問題,就總結一下吧。1 什麼是粘包現象 tcp粘包是指傳送方傳送的若干包資料到接收方接收時粘成一包,從接收緩衝區看,後一包資料的頭緊接著前一包資料的尾。2 為什麼出現粘包現象 1 傳送方原因 所以,正是nagle...

TCP的粘包現象

原文 看面經時,看到有面試官問tcp的粘包問題。想起來研一做購物車處理資料更新時遇到粘包問題,就總結一下吧。1 什麼是粘包現象 tcp粘包是指傳送方傳送的若干包資料到接收方接收時粘成一包,從接收緩衝區看,後一包資料的頭緊接著前一包資料的尾。2 為什麼出現粘包現象 1 傳送方原因 所以,正是nagle...