TCP的拆包粘包問題

介紹

TCP網(wǎng)絡(luò)傳輸層協(xié)議积糯,當(dāng)經(jīng)過三次握手以后掂墓,TCP點(diǎn)到點(diǎn)建立一條套節(jié)字通道,由于網(wǎng)絡(luò)的復(fù)雜性看成,導(dǎo)致數(shù)據(jù)可能會(huì)分N個(gè)報(bào)文進(jìn)行傳送君编。在服務(wù)端可能一次或多次才能接收完成,系統(tǒng)本身也是緩存一定大小數(shù)據(jù)進(jìn)行傳送川慌,保證傳輸?shù)男阅茏畲蠡院佟6瑯邮莻鬏攲訁f(xié)議UDP則不會(huì)有這樣的問題偿荷,UDP是基于報(bào)文發(fā)送的,從UDP的幀結(jié)構(gòu)可以看出唠椭,在UDP首部采用了16bit來指示UDP數(shù)據(jù)報(bào)文的長度跳纳,因此在應(yīng)用層能很好的將不同的數(shù)據(jù)報(bào)文區(qū)分開,從而避免粘包和拆包的問題贪嫂。而TCP基于字節(jié)流傳輸寺庄,雖然應(yīng)用層和TCP傳輸層之間的數(shù)據(jù)交互是大小不等的數(shù)據(jù)塊,但TCP把這些數(shù)據(jù)塊僅僅看成一連串的無結(jié)構(gòu)的字節(jié)流力崇,無邊界斗塘。從TCP幀結(jié)構(gòu)看出,TCP報(bào)文頭部沒有表示數(shù)據(jù)長度的字段亮靴。

現(xiàn)象的描述
  • 拆包 接收端收到了兩個(gè)數(shù)據(jù)包馍盟,但是這兩個(gè)數(shù)據(jù)包要么是不完整的,要么就是多出來一塊茧吊,這種情況即發(fā)生了拆包和粘包贞岭。
  • 粘包 同樣在接收的時(shí)候有多個(gè)數(shù)據(jù)包。
發(fā)生的原因
  • 發(fā)送數(shù)據(jù)報(bào)文大于TCP緩沖區(qū)的大小搓侄。
  • 發(fā)送數(shù)據(jù)小于TCP緩沖區(qū)的大小瞄桨。
  • 接收方?jīng)]有及時(shí)讀取緩沖區(qū)的數(shù)據(jù)。
問題的解決方案
  • 報(bào)文首部采用16bit指定長度讶踪。
  • 數(shù)據(jù)包定長(不足0補(bǔ)充)芯侥。
  • 分隔符。
現(xiàn)有框架
  • netty封裝tcp拆包乳讥、粘包問題柱查,具體可參考netty相關(guān)實(shí)現(xiàn)。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末云石,一起剝皮案震驚了整個(gè)濱河市唉工,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌留晚,老刑警劉巖酵紫,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件告嘲,死亡現(xiàn)場離奇詭異错维,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)橄唬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門赋焕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人仰楚,你說我怎么就攤上這事隆判∪樱” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵侨嘀,是天一觀的道長臭挽。 經(jīng)常有香客問我,道長咬腕,這世上最難降的妖魔是什么欢峰? 我笑而不...
    開封第一講書人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮涨共,結(jié)果婚禮上纽帖,老公的妹妹穿的比我還像新娘。我一直安慰自己举反,他們只是感情好懊直,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著火鼻,像睡著了一般室囊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上魁索,一...
    開封第一講書人閱讀 51,365評(píng)論 1 302
  • 那天波俄,我揣著相機(jī)與錄音,去河邊找鬼蛾默。 笑死懦铺,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的支鸡。 我是一名探鬼主播冬念,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼牧挣!你這毒婦竟也來了急前?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬榮一對情侶失蹤瀑构,失蹤者是張志新(化名)和其女友劉穎裆针,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體寺晌,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡世吨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了呻征。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片耘婚。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖陆赋,靈堂內(nèi)的尸體忽然破棺而出沐祷,到底是詐尸還是另有隱情嚷闭,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布赖临,位于F島的核電站胞锰,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏兢榨。R本人自食惡果不足惜胜蛉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望色乾。 院中可真熱鬧誊册,春花似錦、人聲如沸暖璧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽澎办。三九已至嘲碱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間局蚀,已是汗流浹背麦锯。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留琅绅,地道東北人扶欣。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像千扶,于是被迫代替她去往敵國和親料祠。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 在socket網(wǎng)絡(luò)程序中澎羞,TCP和UDP分別是面向連接和非面向連接的髓绽。因此TCP的socket編程,收發(fā)兩端(客戶...
    樹根曰閱讀 5,957評(píng)論 1 16
  • 個(gè)人認(rèn)為妆绞,Goodboy1881先生的TCP /IP 協(xié)議詳解學(xué)習(xí)博客系列博客是一部非常精彩的學(xué)習(xí)筆記顺呕,這雖然只是...
    貳零壹柒_fc10閱讀 5,054評(píng)論 0 8
  • 1.這篇文章不是本人原創(chuàng)的,只是個(gè)人為了對這部分知識(shí)做一個(gè)整理和系統(tǒng)的輸出而編輯成的括饶,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,063評(píng)論 6 174
  • 第一層:物理層第二層:數(shù)據(jù)鏈路層 802.2株茶、802.3ATM、HDLC巷帝、FRAME RELAY第三層:網(wǎng)絡(luò)層 I...
    Joe_HUST閱讀 19,243評(píng)論 2 3
  • 傳輸層-TCP忌卤, TCP頭部結(jié)構(gòu) 扫夜,TCP序列號(hào)和確認(rèn)號(hào)詳解 TCP主要解決下面的三個(gè)問題 1.數(shù)據(jù)的可靠傳輸...
    抓兔子的貓閱讀 4,522評(píng)論 1 46