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

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

3天內(nèi)不再提示

嵌入式項目中,UDP與TCP該怎么選?

Q4MP_gh_c472c21 ? 來源:最后一個bug ? 作者:最后一個bug ? 2022-04-14 14:56 ? 次閱讀

單片機應用程序開發(fā)中可能用得比較多有RS485CAN通信等等相對簡潔一點的總線,由于所選用的單片機性能和資源有限,以太網(wǎng)并沒有在單片機應用中作為一種普遍存在的對外通信接口。

但隨著MCU工藝、性能的逐漸加強,以及嵌入式Linux平臺的推行,以太網(wǎng)通信也慢慢開始成為開發(fā)者們所考慮使用的一種可靠通信方式。

經(jīng)常有一些朋友問到,現(xiàn)在用不到技術和知識點是不是可以不用學?

我只能回答:技術在不斷的革新,并且總是朝著更加便利和通用化方向發(fā)展,現(xiàn)在看似非常復雜的技術,在以后的應用上都會得以簡化,但即使再簡化也還是需要有必備的一些基礎和認識,所以總歸還是要學的,至于什么時候學就看自己的時間精力了,當然越早學習,就越多一種選擇。

那么,今天就淺談一下TCP與UDP的區(qū)別與應用,并指引后續(xù)在系統(tǒng)通信設計上的設計考慮和選擇。

1

TCP VS UDP

要想在通信的兩者之間合理的選擇TCP還是UDP,首先需要理清楚兩者的特點與區(qū)別,下面簡單梳理一下:

在學習這兩種協(xié)議的時候你一定看到過這樣中一句總結的話:“TCP是面向連接的可靠傳輸而UDP是無連接的不可靠傳輸?!?/p>

其實這句話已經(jīng)把這兩種協(xié)議大部分特點都囊括在內(nèi)了:

1、面向連接與無連接

TCP在傳輸數(shù)據(jù)之前需要經(jīng)過三次握手建立連接進行相互確認,當需要斷開連接的時候需要進行四次揮手;而對于UDP就不需要這么繁瑣的連接建立過程,直接傳輸即可。

所以對于TCP僅僅只支持單播,只能點對點的在連接的兩個端點中數(shù)據(jù)傳輸數(shù)據(jù),不支持多播和廣播;而對于UDP而言支持一對多、多對一和多對多的傳輸,這一點在通信架構設計中對這兩種協(xié)議的選擇非常重要,比如有些資源優(yōu)先的MCU對socket連接有限等等問題。

2、字節(jié)流與數(shù)據(jù)報

UDP也稱之為是用戶數(shù)據(jù)報協(xié)議,而TCP為傳輸控制協(xié)議,所以UDP是一種面向應用報文的傳輸,有明顯的傳輸邊界,僅僅只是封包以后進行處理,不會進行合并和拆分,一次就傳輸一個報文。

但是TCP是一種面向字節(jié)流的通信協(xié)議,沒有明顯的邊界,其主要是保證數(shù)據(jù)正確且有序,TCP存在一個數(shù)據(jù)緩存區(qū),如果數(shù)據(jù)量較大,其會進行分包發(fā)出,而當數(shù)據(jù)較少也會等待數(shù)據(jù)達到合適的數(shù)量后進行合并發(fā)送,所以會存在多個粘包的問題,這一點在設計中需要考慮。

3、可靠傳輸

TCP是一種可靠傳輸,確認重傳、差錯控制、流量控制和擁塞控制等等都是傳輸數(shù)據(jù)過程中實現(xiàn)的策略和算法,這就使得TCP能夠達到數(shù)據(jù)上無差錯、不丟失、不重復、有序。

所以為了保證這些數(shù)據(jù)的可靠傳輸,TCP相比UDP的報文格式要復雜,且占用的資源也相對較多。

而UDP則不同,它僅僅只是一種最大努力交付的協(xié)議,其主要是利用IP層的無連接傳通信服務,可靠性方面它是無法保障的,有點類似于串口通信,它不需要連接,只管傳輸。

如果你想讓數(shù)據(jù)可靠,那么用戶可以在應用層自己來增加可靠性傳輸策略和機制來進行實現(xiàn),所以Udp傳輸數(shù)據(jù)是可能會丟失、無序。

4、實時性

UDP由于沒有擁塞控制等等策略,協(xié)議上會輕量很多,其均以比較恒定的速度進行傳輸,不會出現(xiàn)發(fā)送速率降低的問題,所以在網(wǎng)絡不好的情況下就丟包了。

而對于TCP一旦有數(shù)據(jù)包丟失,就會進行重傳等等一系列機制,傳輸速度大大降低。

2

項目中該怎么選擇?

對于TCP和UDP的選擇有些朋友在開發(fā)的時候比較糾結,因為有時候采用UDP和用戶方面可靠的傳輸機制也能夠達到TCP類似的效果,比如許多支持可靠通信的UDP庫,所以具體怎么選擇還是要根據(jù)具體的應用和設計。

比如對于很多直播、游戲等等通過自己加入一些重傳機制,可以最大可能的發(fā)揮UDP傳輸實時性的優(yōu)點,使得呈現(xiàn)給用戶更加流暢的畫面體驗。

在嵌入式、物聯(lián)網(wǎng)方面由于項目對實時性要求高,且資源有限,UDP相對比較輕量,也是較好的選擇。

但對于一些文字、文件的數(shù)據(jù)傳輸還是會優(yōu)先使用TCP,畢竟TCP這塊在保證數(shù)據(jù)的可靠性方面還是做得非常成熟,用戶程序這塊也可以減少一些可靠性處理。

所以最終得選擇,還是要結合TCP與UDP的特點和具體項目綜合考慮。

END

審核編輯 :李倩

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

    關注

    6030

    文章

    44491

    瀏覽量

    632045
  • TCP
    TCP
    +關注

    關注

    8

    文章

    1347

    瀏覽量

    78934
  • UDP
    UDP
    +關注

    關注

    0

    文章

    322

    瀏覽量

    33850

原文標題:嵌入式項目中,UDP與TCP該怎么選?

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    有什么比較熱門的嵌入式項目?

    大佬們想問一下可以做什么樣的嵌入式項目好找工作?工作1到2年左右
    發(fā)表于 11-08 09:57

    TCP&UDP調(diào)試工具

    TCP&UDP調(diào)試工具
    發(fā)表于 10-30 10:41 ?0次下載

    嵌入式學習建議

    的平衡,要在理解軟件工程基本原理基礎上理解硬件構件與軟件構件等基本概念。 以上建議,僅供初學者參考。當然,以上只是基礎階段的學習建議。要成為良好的嵌入式系統(tǒng)設計師,還需要在實際項目中鍛煉,并不斷學習與積累經(jīng)驗。
    發(fā)表于 10-22 11:41

    嵌入式主板是什么意思?嵌入式主板全面解析

    嵌入式主板,通常被稱為嵌入式系統(tǒng)的核心組件,是一種用于控制和數(shù)據(jù)處理的計算機硬件,其設計旨在嵌入特定設備中執(zhí)行專門任務。嵌入式主板如同是設備的“大腦”,主要功能是根據(jù)需要管理和控制設備
    的頭像 發(fā)表于 09-30 10:05 ?317次閱讀

    tcpudp的區(qū)別和聯(lián)系

    一、引言 在現(xiàn)代網(wǎng)絡通信中,數(shù)據(jù)傳輸是至關重要的。為了確保數(shù)據(jù)的可靠傳輸,網(wǎng)絡協(xié)議發(fā)揮著關鍵作用。傳輸控制協(xié)議(TCP)和用戶數(shù)據(jù)報協(xié)議(UDP)是兩種常用的網(wǎng)絡協(xié)議,它們在許多應用場景中發(fā)
    的頭像 發(fā)表于 08-16 11:06 ?490次閱讀

    適合初學者的嵌入式項目有哪些?

    適合初學者的嵌入式項目有哪些? 嵌入式學習是一個實踐性很強的領域,通過實際項目可以幫助你鞏固理論知識并提升技能。以下是幾個適合初學者練手的嵌入式
    發(fā)表于 07-11 10:23

    如何提升嵌入式編程能力?

    和使用。 9. 網(wǎng)絡編程:嵌入式設備越來越多地連接到網(wǎng)絡,因此學習TCP/IP、UDP、HTTP等網(wǎng)絡協(xié)議是必要的。 10. 關注安全性:了解嵌入式系統(tǒng)的安全問題,學習如何編寫安全的代
    發(fā)表于 06-21 10:01

    udp是什么意思 簡述TCPUDP的區(qū)別和聯(lián)系

    UDP (User Datagram Protocol) 是一種在計算機網(wǎng)絡中使用的傳輸層協(xié)議。它與TCP (Transmission Control Protocol) 一樣,都是在因特網(wǎng)協(xié)議套件
    的頭像 發(fā)表于 02-02 16:33 ?1187次閱讀

    高端嵌入式實驗平臺

    一、整體概述 嵌入式平臺具有前沿性、專業(yè)性、高集成度、功能豐富等特點,平臺涵蓋嵌入式計算機技術、嵌入式硬件接口、嵌入式系統(tǒng)軟件等關鍵技術點
    的頭像 發(fā)表于 01-29 09:55 ?481次閱讀
    高端<b class='flag-5'>嵌入式</b>實驗平臺

    嵌入式物聯(lián)網(wǎng)開源項目分享

    很多初學者或者互聯(lián)網(wǎng)轉行從業(yè)者,在學習嵌入式技術的基本理論概念之后,可能會感覺到迷茫,感覺自己雖然學了不少,但卻不知道怎么用到項目上。
    的頭像 發(fā)表于 01-24 10:36 ?1394次閱讀
    <b class='flag-5'>嵌入式</b>物聯(lián)網(wǎng)開源<b class='flag-5'>項目</b>分享

    UDPTCP的主要區(qū)別 UDP能否像TCP一樣實現(xiàn)可靠傳輸?

    UDPTCP的主要區(qū)別 UDP能否像TCP一樣實現(xiàn)可靠傳輸?TCP如何實現(xiàn)可靠性傳輸? UDP
    的頭像 發(fā)表于 01-22 16:10 ?731次閱讀

    什么是嵌入式系統(tǒng)?嵌入式系統(tǒng)的具體應用

    嵌入式,一般是指嵌入式系統(tǒng)。用于控制、監(jiān)視或者輔助操作機器和設備的裝置。
    的頭像 發(fā)表于 12-20 13:33 ?2347次閱讀

    定制嵌入式主板:滿足客戶的實際需求

    隨著物聯(lián)網(wǎng)、智能家居、智能工廠等應用的不斷發(fā)展,嵌入式系統(tǒng)的應用場景也越來越廣泛。嵌入式系統(tǒng)的核心部分是嵌入式主板,而定制化的嵌入式主板已經(jīng)成為了很多企業(yè)和
    的頭像 發(fā)表于 11-24 11:51 ?840次閱讀
    定制<b class='flag-5'>嵌入式</b>主板:滿足客戶的實際需求

    UDP分片和丟包與TCP效果對比

    UDP(用戶數(shù)據(jù)報協(xié)議)和TCP(傳輸控制協(xié)議)在很多方面都有顯著的區(qū)別??傮w來說,TCP更適合需要可靠傳輸?shù)膽?,例如網(wǎng)頁瀏覽、電子郵件等,而UDP則更適合對速度有高要求,但對數(shù)據(jù)完
    的頭像 發(fā)表于 11-23 13:55 ?592次閱讀

    TCPUDP的基本區(qū)別

    TCPUDP基本區(qū)別 基于連接與無連接 TCP要求系統(tǒng)資源較多,UDP較少; UDP程序結構較簡單 流模式(
    的頭像 發(fā)表于 11-13 15:27 ?4521次閱讀
    <b class='flag-5'>TCP</b>與<b class='flag-5'>UDP</b>的基本區(qū)別