在tcp協議網路傳輸中,才會出現粘包,udp協議不會出現.
tcp的協議資料不會丟,沒有收完包,會繼續上次繼續接收,總是在收到ack時才會清除緩衝區內容。資料是可靠的,但是就會粘包。
因為資料傳送和接收過程先經過緩衝區,由於資料大小以及網路原因,導致收發資訊不能嚴格同步,造成資料粘連的現象叫做粘包
粘包有兩種形式:
1.客戶端send()傳送了一段資料,服務端只recv()收取了一小部分,下次再收的時候還是從緩衝區拿上次遺留的資料,產生粘包.
2.傳送端傳送資料時間間隔很短,資料也很小,會合到一起,產生粘包.
1服務端import
socket
2 sk =socket.socket()
3 sk.bind(("
127.0.0.1
", 10096))
4 sk.listen(1)
5 s, k =sk.accept()
6 n = s.recv(1)
7print
(n)8 n1 = s.recv(3)
9print
(n1)
10 s.send(b'w'
)11 s.send(b'w'
)12 s.send(b'w'
)13 s.send(b'
w')
1客戶端服務端輸出結果:import
socket
2 sk =socket.socket()
3 sk.connect(("
127.0.0.1
", 10096))
4 sk.send(b"1"
)5 sk.send(b"1"
)6 sk.send(b"1"
)7 a = sk.recv(10)
8print(a)
b'1'
b'11'
或者b'1'
b'1'
客戶端輸出結果:
b'w'
或者b'wwww'
tcp粘包現象
二 什麼時候需要考慮粘包問題?1 如果利用tcp每次傳送資料,就與對方建立連線,然後雙方傳送完一段資料後,就關閉連線,這樣就不會出現粘包問題 因為只有一種包結構,類似於http協議 關閉連線主要要雙方都傳送close連線 參考tcp關閉協議 如 a需要傳送一段字串給b,那麼a與b建立連線,然後傳送雙...
TCP的粘包現象
1 什麼是粘包現象 tcp粘包是指傳送方傳送的若干包資料到接收方接收時粘成一包,從接收緩衝區看,後一包資料的頭緊接著前一包資料的尾。2 為什麼出現粘包現象 1 傳送方原因 我們知道,tcp缺省會使用nagle演算法。而nagle演算法主要做兩件事 1 只有上乙個分組得到確認,才會傳送下乙個分組 2 ...
TCP的粘包現象
原文 看面經時,看到有面試官問tcp的粘包問題。想起來研一做購物車處理資料更新時遇到粘包問題,就總結一下吧。1 什麼是粘包現象 tcp粘包是指傳送方傳送的若干包資料到接收方接收時粘成一包,從接收緩衝區看,後一包資料的頭緊接著前一包資料的尾。2 為什麼出現粘包現象 1 傳送方原因 所以,正是nagle...