国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【推薦】TCP為何粘包?粘包問題如何解決?

億佰特物聯網應用專家 ? 2022-09-23 10:00 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

我們在涉及TCP協議的應用中,經常會出現粘包的問題。所謂粘包,簡單地講,就是我有兩條消息,明明發送端的代碼是分兩次發送的,但是在接收端卻一次性就接收到了兩條消息。這個情況不管是在嵌入式行業還是在互聯網行業,都非常的普遍。

TCP協議為什么粘包?

那就需要先了解 TCP 的定義。TCP(Transmission Control Protocol)傳輸控制協議,是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。其中跟粘包關系最大的就是基于字節流這個特點。字節流可以理解為一個雙向的通道里流淌的數據,這個數據其實就是我們常說的二進制數據,簡單來說就是一大堆 01 串。這些 01 串之間沒有任何邊界。7dda0d04-3ab3-11ed-b180-dac502259ad0.png應用層傳到 TCP 協議的數據,不是以消息報為單位向目的主機發送,而是以字節流的方式發送到下游,這些數據可能被切割和組裝成各種數據包,接收端接收到這些數據包后沒有正確還原之前的消息,因此出現粘包現象。那為什么會出現不能正確還原的情況呢?主要有兩個方面的原因:

1. 發送端的原因發送端在組裝消息的時候,就把幾個小包合成一包了,這樣接收端自然無法解析出小包。這對應的就是Nagle 算法。因為TCP和Nagle 算法都是上個世紀的產物了,在早期的網絡中這樣做,可以顯著地減小網絡的壓力。否則頻繁地發送僅有幾個字節的小包,會嚴重浪費網絡IO性能。但是在現代互聯網中,網絡性能已經有了大幅提升,似乎Nagle 算法提升的那么一點IO性能就不是那么重要了,反而由于等待數據來合并的操作,會導致傳輸延遲變大,在網絡游戲應用時,就會非常影響體驗。所以現在一般都會關掉它。2. 接收端的原因接收端接收到消息以后,應用層總是不能立即取走數據,總是會有接收緩沖區的存在。如果兩條獨立的消息進入緩沖區的間隔太小,應用層不能在兩次消息中間取走上一條消息,那么下次讀取的時候,就勢必會把兩包消息同時讀出來,這也會導致粘包。7df3fdea-3ab3-11ed-b180-dac502259ad0.png

而且這個情況并不能通過讓發送端在時間上均勻發包來避免,因為網絡不穩定情況的存在,即使是時間上均勻發送的數據包,在接收端看來也可能是隨機出現的。

如何規避粘包的負面影響?

根據以上分析,我們不難發現,想要杜絕粘包的問題出現,基本上是不可能的。即使發送端和接收端都能自己控制,但是網絡傳輸的過程也是很難控制的。
但是即使粘包的問題存在,也不影響我們大規模的使用TCP協議。因為這個問題在應用層非常好處理。大致有兩種思路:1. 在信息中加入特殊的標志作為分隔符7e1858c0-3ab3-11ed-b180-dac502259ad0.png

這樣,當應用層檢測到特殊的分隔符后,便知道這是一包得到開始和結束,就可以進行分片等操作,問題便迎刃而解。不過這樣存在一些弊端。比如定義分隔符為“12345678”,那如果消息內容里面出現“12345678”的字符串呢?這樣就會導致消息被異常的切片,導致接收到的消息錯誤。但假如自己能夠控制消息的內容,保證里面不會出現“12345678”的內容,則此方法較為靈活。2. 加入信息的長度7e2ec5e2-3ab3-11ed-b180-dac502259ad0.png根據約定好的長度的字段,讀取消息長度的信息,再根據消息長度信息讀取消息內容。這也是一種非常常用的方法,在很多協議中都有體現。
3. 添加包首部發送端給每個數據包添加包首部,首部中應該至少包含數據包的長度,這樣接收端在接收到數據后,就可以通過讀取包首部的長度字段,知道每一個數據包的實際長度。以上就是本期關于解決TCP粘包問題的內容,小編碼字不易,求個點贊、分享、在看三連支持!我們下期見~~

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • TCP
    TCP
    +關注

    關注

    8

    文章

    1424

    瀏覽量

    83503
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    鋁合金電化學處理的粗糙度表征與接性能優化

    鋁合金廣泛應用于航空航天、新能源汽車等領域,輕量化趨勢下其高效高質量連接成為關鍵難題。接技術優勢顯著,但鋁合金表面易形成致密氧化膜,需預處理提升接性能。傳統酸堿預處理存在污染、低效等問題,中性鹽
    的頭像 發表于 02-10 18:03 ?119次閱讀
    鋁合金電化學處理的粗糙度表征與<b class='flag-5'>粘</b>接性能優化

    CPU散熱器接用導熱膠怎么選?性能與應用全解析 |鉻銳特實業

    鉻銳特實業|東莞導熱膠廠家|導熱膠怎么選才能讓CPU散熱器既得牢又散熱快?本文對比導熱系數、接強度、電氣絕緣等關鍵指標,結合實際場景給出筆記本、GPU、服務器等推薦選型,一文搞懂導熱膠性能與應用。(128字)
    的頭像 發表于 02-06 01:08 ?189次閱讀
    CPU散熱器<b class='flag-5'>粘</b>接用導熱膠怎么選?性能與應用全解析 |鉻銳特實業

    UV膠適用于哪些材料的

    UV膠,即紫外光固化膠,是一種通過紫外線照射引發聚合反應而快速固化的高性能膠粘劑。其固化速度快、接強度高、透明性好、耐候性優異,廣泛應用于工業制造、電子裝配、醫療設備和工藝品等領域。然而,并非所有
    的頭像 發表于 02-02 15:46 ?153次閱讀
    UV膠適用于哪些材料的<b class='flag-5'>粘</b>接

    UV膠表面發的原因

    uv膠表面發究竟是什么原因造成的?我們又該如何解決和預防呢?本文將深入分析其背后其實涉及的化學反應、光照條件、材料特性以及操作環境等多個科學因素。
    的頭像 發表于 01-22 16:17 ?1521次閱讀
    UV膠表面發<b class='flag-5'>粘</b>的原因

    如何使用wireshark進行遠程抓

    一、概述 通常我們使用wireshark進行抓分析的時候,在遠端設備抓取一部分數據后,再回傳到本地,然后使用wireshark進行分析。這種操作主要是抓取的數據不是實時的,不能做實時
    的頭像 發表于 01-16 16:05 ?1040次閱讀
    如何使用wireshark進行遠程抓<b class='flag-5'>包</b>

    真空片機廠家關鍵設備選型與高效生產策略深度解析

    片機
    北京中科同志科技股份有限公司
    發布于 :2026年01月04日 11:13:27

    TO功率器件晶片接強度檢測:一套完整的推拉力測試機解決方案

    在功率半導體領域,TO(晶體管外形)封裝器件因其結構堅固、散熱良好而被廣泛應用于工業控制、新能源汽車及能源管理等高可靠性場景。然而,其內部晶片與基島之間的焊接或接質量,直接決定了器件的長期導通性
    的頭像 發表于 11-10 09:46 ?482次閱讀
    TO功率器件晶片<b class='flag-5'>粘</b>接強度檢測:一套完整的推拉力測試機解決方案

    GD32F470+LWIP TCP偶爾丟怎么解決?

    硬件校驗和的宏,不相符。 通過wireshark在上位機監控數據,發現出現問題的時候,上位機是發送了數據的,但是板子似乎沒有收到,而且過1.5秒后板子還會重發一次上一的數據,符合tcp沒有收到ack
    發表于 09-29 06:43

    LED透鏡接UV膠用于固定和粘合LED透鏡

    LED透鏡接UV膠是一種特殊的UV固化膠,用于固定和粘合LED透鏡。它具有以下特點:1.高透明度:LED透鏡接UV膠具有高透明度,可以確保光線的透過性,不影響LED的亮度和效果。2.快速固化
    的頭像 發表于 08-08 10:11 ?1253次閱讀
    LED透鏡<b class='flag-5'>粘</b>接UV膠用于固定和粘合LED透鏡

    光學輪廓儀揭示:表面特性對 CFRP / 鋁合金接性能影響的研究

    在材料科學領域,表面特性對碳纖維增強復合材料(CFRP)與鋁合金接性能影響關鍵,二者接結構廣泛應用于汽車輕量化、航空航天等領域。精準表征表面粗糙度與微觀形貌是探究接機理的核心,光學輪廓儀以
    的頭像 發表于 08-05 17:45 ?960次閱讀
    光學輪廓儀揭示:表面特性對 CFRP / 鋁合金<b class='flag-5'>粘</b>接性能影響的研究

    快斷式覆成型保險絲 skyworksinc

    電子發燒友網為你提供()快斷式覆成型保險絲相關產品參數、數據手冊,更有快斷式覆成型保險絲的引腳圖、接線圖、封裝手冊、中文資料、英文資料,快斷式覆成型保險絲真值表,快斷式覆成型保
    發表于 07-24 18:34
    快斷式<b class='flag-5'>包</b>覆成型保險絲 skyworksinc

    更改最大數據大小時無法識別USB設備如何解決?

    將生產者 EP 端點描述符中的最大數據大小從 1024 字節更改為 512 字節時,無法識別 USB 設備。 請告知如何解決這個問題。
    發表于 05-20 08:13

    接聚酰亞胺PI膜除了使用PI膜專用UV膠粘接,還可以使用熱固化環氧膠來解決!

    接聚酰亞胺PI膜可以使用PI膜專用UV膠粘接,但使用UV膠粘接時,需要接材料至少有一方要透UV紫外光方可,如不能透UV光,那么接PI這種難于接的材料時,還可以使用熱固化環氧膠來
    的頭像 發表于 05-07 09:11 ?1478次閱讀
    <b class='flag-5'>粘</b>接聚酰亞胺PI膜除了使用PI膜專用UV膠粘接,還可以使用熱固化環氧膠來解決!

    片工藝介紹及選型指南

    片作為芯片與管殼間實現連接和固定的關鍵工序,達成了封裝對于芯片的固定功能,以及芯片背面電連接功能。在行業里,這一工序常被叫做片。由于其核心作用是固定芯片,因而也被稱作固晶工藝或貼片工藝,英文表述為“Die Bonding”或“Die Attach”。
    的頭像 發表于 04-09 10:37 ?1859次閱讀
    <b class='flag-5'>粘</b>片工藝介紹及選型指南

    如何將Linux安裝快速轉成玲瓏

    本篇將以 motrix 為例為大家展示如何將 Linux 安裝快速轉成玲瓏
    的頭像 發表于 03-12 16:01 ?1662次閱讀
    如何將Linux安裝<b class='flag-5'>包</b>快速轉成玲瓏<b class='flag-5'>包</b>