論TCP粘包和拆包產生的根本原因

前序:相信熟悉網絡的同學都知道,TCP是面向流的,啥是面向流?謝希仁之<<計算機網絡>>中有段話,個人覺得描述得非常貼切:
在這裏插入圖片描述
這就是傳輸層提交給應用層的發生粘包和拆包的根本原因,TCP協議視一切如流,它並不知道上層應用需要的是啥,只是在保證有序的情況下在適當的時機將數據提交給應用層處理。

現在業界解決的粘包和拆包的方案主要有三個:
1:消息定長,例如每個報文的大小固定的200字節。這個解決方案估計工業界用的很少。
2:在包尾用特殊字符進行分割,例如用換行符
3:將消息分爲消息頭和消息體,消息頭表示消息的總長度

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章