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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

TCP和UDP的特點(diǎn)及使用場景

jf_78858299 ? 來源:雞仔說 ? 作者:張小吉 ? 2023-05-18 17:20 ? 次閱讀

前言

在我們開始學(xué)習(xí)網(wǎng)絡(luò)編程的時(shí)候,我們發(fā)現(xiàn)一些名詞出現(xiàn)的頻率極其高,比如 TCP/IP、UDP、OSI 七層網(wǎng)絡(luò)模型等。這肯定不是偶然,因?yàn)樗鼈儤O其重要,才會(huì)被人反復(fù)提及。尤其在面試的時(shí)候,面試官喜歡把它們拿來,當(dāng)作考察面試者基礎(chǔ)功底的重要環(huán)節(jié)。為了不讓文章顯得冗余,我們今天只談網(wǎng)絡(luò)中的 TCP、UDP 和端口

協(xié)議、TCP 和 UDP

在了解 TCP(Transmission Control Protocol 即傳輸控制協(xié)議) 和 UDP(User Datagram Protocol 即用戶數(shù)據(jù)包協(xié)議) 之前,我們先要知道一個(gè)名詞,即協(xié)議。它到底是什么?它其實(shí)就是一套約定成俗的規(guī)則。就像開會(huì)的時(shí)候,我們達(dá)成了一些共識(shí),先開發(fā)那個(gè)接口,項(xiàng)目什么時(shí)候上線等等。

可以毫不夸張地說計(jì)算機(jī)網(wǎng)絡(luò)的構(gòu)建與發(fā)展,奠基石就是各種網(wǎng)絡(luò)協(xié)議。它們定義了信息通訊的方式,以及如何收發(fā)信息等,比如:

  • IP 協(xié)議負(fù)責(zé)將多個(gè)包交換網(wǎng)絡(luò)連接起來,并管理通訊 IP 源地址和目標(biāo)地址的協(xié)議
  • TCP 和 UDP 協(xié)議則是位于應(yīng)用層和 IP 層之間,負(fù)責(zé)它們之間信息傳輸?shù)闹匾獏f(xié)議

既然是協(xié)議,大家都必須遵守,否則,今天張三定一個(gè)協(xié)議,李四不同意,他明天再定一個(gè)協(xié)議,這就亂了套。因此,不同的大廠和許多公司就聯(lián)合起來組成一個(gè)組織,將這些協(xié)議統(tǒng)一規(guī)范起來。你就必須得用這些規(guī)定好的協(xié)議,否則就無法通信。這才實(shí)現(xiàn)了“地球村”的夢想。今天無論用什么設(shè)備,在世界的任何角落,用哪種國家的語言,都可以很方便地使用網(wǎng)絡(luò)進(jìn)行通信

TCP 和 UDP 的特點(diǎn)

用一個(gè)不算嚴(yán)謹(jǐn)?shù)恼f法總結(jié) TCP 就是,女孩子如果遇到 TCP 這樣的男生,就嫁了吧。因?yàn)門CP的核心特點(diǎn)就是靠譜。他的特定包括,面向連接、可靠、基于字節(jié)流控制的傳輸,就像一個(gè)管道一樣將應(yīng)用層和 IP 層連接起來

而與之相對應(yīng)的,UDP 就像二十多歲的浪子。他們不夠可靠,但卻充滿熱情。一切以效率為先,他們可以馬上答應(yīng)你很多事情,并且愿意立馬付出實(shí)踐。你這一秒說佛珠浪漫,他不管身處何處,立馬搭飛機(jī)給你去取,下一秒說想去聽周杰倫的演唱會(huì),他立馬給你訂票。當(dāng)然,人的精力和時(shí)間都有限,所以就可能出現(xiàn)不可控的意外,比如根本沒有足夠的錢買門票等。這和UDP相仿,它提供無連接通信,但不對傳送的數(shù)據(jù)包提供可靠性保證

TCP 和 UDP 的使用場景

不同的人,因性格不同,做事的方式也不一樣,你不能說這樣就一定好,那樣就一定不好,對于 TCP 和 UDP 也是一樣,在不同的場景中,他們各有各的妙用

比如在開發(fā)一個(gè)游戲的的程序是,對于玩家登陸賬號,因?yàn)槲覀円_保不同的玩家能登陸到自己的賬號,這個(gè)時(shí)候就要應(yīng)用 TCP 協(xié)議。而對于控制游戲中角色的移動(dòng),我們只需根據(jù)玩家鼠標(biāo)的點(diǎn)擊移動(dòng)角色,如果因?yàn)樾「怕实木W(wǎng)絡(luò)問題,對于玩家來說,再次進(jìn)行角色移動(dòng)操作即可,成本和風(fēng)險(xiǎn)在可控范圍內(nèi),因此就可以使用 UDP 協(xié)議

我們從以上可以看出,如果是基礎(chǔ)服務(wù)功能,則最好使用 TCP 協(xié)議,保證服務(wù)的可靠性。以確保過程中,每一個(gè)網(wǎng)絡(luò)包能夠正確抵達(dá)目的地。而相較于 UDP ,程序員則需要自己去進(jìn)一步做丟包情況和字節(jié)傳輸順序的處理

可不要因此就覺得 UDP 非常難用,正相反,其實(shí)有大量的服務(wù)是基于 UDP 協(xié)議的。比如 DNS 解析服務(wù)。每一臺(tái)電腦訪問外網(wǎng)網(wǎng)頁,都需要通過 DNS 服務(wù)解析域名,從中找到對應(yīng)的 IP 地址。這個(gè)時(shí)候如果 DNS 出了問題,我們其實(shí)只需要再一次進(jìn)行 DNS 尋址查詢即可。唯一的副作用,可能就是有一丁點(diǎn)兒延遲罷了

另一個(gè) UDP 的應(yīng)用就是 IP 電話, 我們常把它稱作 VoIP(Voice over IP),它的原理可以簡化的理解為,把撥打電話從以往的電話通訊,轉(zhuǎn)移到網(wǎng)絡(luò)通訊上,類似于我們現(xiàn)在的微信通話。當(dāng)你和某人通話的時(shí)候,用的就是 UDP ,想象一下,其實(shí)我們這個(gè)時(shí)候需要的并不是可靠性,而是實(shí)時(shí)性。如果不幸中間有一點(diǎn)信息損失了,比如你媽說:“過年給我把對象帶回來,不然就別回來了”。由于信息損失一部分,像這樣——“過年給 把對象帶 來,不然 別回 了”,其實(shí)我們是可以理解一整句話的意思的。而如果用 TCP,我們可能說一句話,別人 30 秒之后才能聽到,這顯然是不能忍受的

因此,我們明白了,在日常的開發(fā)過程中,我們應(yīng)該根據(jù)不同的應(yīng)用場景,選擇對應(yīng)的 TCP 或者 UDP 作為網(wǎng)絡(luò)傳輸協(xié)議,而不能因?yàn)槲覀儗?UDP 不熟悉,就從心理上抗拒它

端口及其特點(diǎn)

如果 IP 是用來定位街區(qū)的,那么端口就是對應(yīng)于該街區(qū)中每一戶的門牌號。在通訊過程中,數(shù)據(jù)通過各種通訊協(xié)議最終抵達(dá)設(shè)備(如計(jì)算機(jī))后,這里的設(shè)備就相當(dāng)于一個(gè)街區(qū),而在設(shè)備計(jì)算機(jī)內(nèi)部有很多程序在跑,數(shù)據(jù)進(jìn)來之后,必須要給它一個(gè)對應(yīng)的門牌號(即端口號),程序才方便進(jìn)行后續(xù)操作

端口號屬于傳輸協(xié)議的一部分,因此我們可以說,數(shù)據(jù)通過 IP 地址發(fā)送對應(yīng)的數(shù)據(jù)到指定設(shè)備上,而通過端口號把數(shù)據(jù)發(fā)送到指定的服務(wù)或程序上

程序一般不止是監(jiān)聽指定的端口號,而且也會(huì)明確對應(yīng)的傳輸協(xié)議。所以我們在進(jìn)行數(shù)據(jù)傳輸?shù)臅r(shí)候,既要指定對應(yīng)的端口號,也要指定對應(yīng)的通訊協(xié)議,很多人僅僅會(huì)說:程序 A 監(jiān)聽著 33001 端口,這個(gè)是不正確的,至少是不完全正確的。相應(yīng)的,我們應(yīng)該這樣說:程序 A 使用 TCP 協(xié)議,監(jiān)聽 33001 端口,當(dāng)然你也可以說:程序 A 使用 UDP 協(xié)議,監(jiān)聽 33001 端口

指定傳輸協(xié)議和端口,顯而易見的好處在于,當(dāng)我們進(jìn)行端口轉(zhuǎn)發(fā)或者構(gòu)建網(wǎng)絡(luò)防火墻的時(shí)候,我們可以很方便的通過協(xié)議和端口進(jìn)行隔離。以防止不可預(yù)見的意外發(fā)生。對于計(jì)算機(jī)來說,通過這種方式可以防止外網(wǎng)各種不必要的數(shù)據(jù),進(jìn)入本地局域網(wǎng)

你可能會(huì)想,這么多端口號,如果大家都用同一個(gè),那不是也有沖突。沒錯(cuò),這就需要一個(gè)專門的組織來管理它們,IANA( Internet Assigned Numbers Authority 即互聯(lián)網(wǎng)號碼分配局 ),它負(fù)責(zé)管理端口注冊。大多數(shù)主流的程序,都有一個(gè)明確的已注冊端口,比如常見的 FTP 監(jiān)聽 20、 21 端口,而 HTTP 服務(wù)監(jiān)聽 80 端口等。如果有一個(gè)程序想注冊某個(gè)端口,那么 IANA 會(huì)先去查一查這個(gè)端口是否已被注冊,如果已經(jīng)被注冊了,它則會(huì)拒絕申請

端口號根據(jù)范圍分為三種

  1. Well-Known Ports(即公認(rèn)端口號)

它是一些眾人皆知著名的端口號,這些端口號固定分配給一些服務(wù),我們上面提到的 HTTP 服務(wù)、 FTP服務(wù)等都屬于這一類。知名端口號的范圍是:0-1023

  1. Registered Ports(即注冊端口)

它是不可以動(dòng)態(tài)調(diào)整的端口段,這些端口沒有明確定義服務(wù)哪些特定的對象。不同的程序可以根據(jù)自己的需要自己定義,注冊端口號的范圍是:1024-49151

  1. Dynamic, private or ephemeral ports(即動(dòng)態(tài)、私有或臨時(shí)端口號)

顧名思義,這些端口號是不可以注冊的,這一段的端口被用作一些私人的或者定制化的服務(wù),當(dāng)然也可以用來做動(dòng)態(tài)端口服務(wù),這一段的范圍是:49152–65535

參考資料

  • List of TCP and UDP port numbers
  • Understanding TCP/IP Network Stack & Writing Network Apps
  • UDP and TCP, two ways of sending traffic
  • TCP and UDP Ports Explained
  • TCP/IP Ports and Sockets Explained
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • IP
    IP
    +關(guān)注

    關(guān)注

    5

    文章

    1541

    瀏覽量

    148915
  • TCP
    TCP
    +關(guān)注

    關(guān)注

    8

    文章

    1324

    瀏覽量

    78754
  • UDP
    UDP
    +關(guān)注

    關(guān)注

    0

    文章

    317

    瀏覽量

    33801
  • 應(yīng)用層
    +關(guān)注

    關(guān)注

    0

    文章

    46

    瀏覽量

    11462
收藏 人收藏

    評論

    相關(guān)推薦

    RK3308的特點(diǎn)及應(yīng)用場景是什么?

    RK3308的特點(diǎn)及應(yīng)用場景是什么?
    發(fā)表于 03-09 08:04

    TCPUDP的區(qū)別分析

      傳輸層協(xié)議主要有TCPUDP。UDP提供無連接的通信,不能保證數(shù)據(jù)包被發(fā)送到目標(biāo)地址,典型的即時(shí)傳輸少量數(shù)據(jù)的應(yīng)用程序通常使用UDP。TCP
    發(fā)表于 09-18 10:29 ?2次下載

    tcpudp的應(yīng)用場景

    特點(diǎn)上我們已經(jīng)知道,TCP 是可靠的但傳輸速度慢 ,UDP 是不可靠的但傳輸速度快。因此在選用具體協(xié)議通信時(shí),應(yīng)該根據(jù)通信數(shù)據(jù)的要求而決定。若通信數(shù)據(jù)完整性需讓位與通信實(shí)時(shí)性,則應(yīng)該選用 T
    發(fā)表于 12-08 10:16 ?1.5w次閱讀
    <b class='flag-5'>tcp</b>和<b class='flag-5'>udp</b>的應(yīng)<b class='flag-5'>用場景</b>

    tcpudp協(xié)議的異同

    。UDP 校驗(yàn)和則是包含 UDP 首部和數(shù)據(jù)在內(nèi)的校驗(yàn)結(jié)果。 TCP協(xié)議 TCP協(xié)議基于網(wǎng)絡(luò)層的 IP 協(xié)議提供的是有連接、可靠服務(wù),是基于字節(jié)流的。
    的頭像 發(fā)表于 11-12 14:45 ?3841次閱讀
    <b class='flag-5'>tcp</b>和<b class='flag-5'>udp</b>協(xié)議的異同

    UDP的主要特點(diǎn)及其使用場景

    的傳輸層協(xié)議,提供面向十五的簡單不可靠詳細(xì)傳送服務(wù)。 UDP 的主要特點(diǎn) 1、UDP 是無連接的,即發(fā)送數(shù)據(jù)之前不需要建立連接,因此減少了開銷和發(fā)送數(shù)據(jù)之前的時(shí)延。 2、UDP 使用盡
    的頭像 發(fā)表于 08-31 17:25 ?1.7w次閱讀

    TCPUDP的原理以及區(qū)別

    TCP是基于連接的,而UDP是基于非連接的。 **tcp傳輸數(shù)據(jù)穩(wěn)定可靠** ,適用于對網(wǎng)絡(luò)通訊質(zhì)量要求較高的場景,需要準(zhǔn)確無誤的傳輸給對方,比如,傳輸文件,發(fā)送郵件,瀏覽網(wǎng)頁等
    的頭像 發(fā)表于 05-18 17:14 ?854次閱讀
    <b class='flag-5'>TCP</b>和<b class='flag-5'>UDP</b>的原理以及區(qū)別

    UDP能否像TCP一樣實(shí)現(xiàn)可靠傳輸?

    連接的協(xié)議,基于字節(jié)流的傳輸方式。它通過確認(rèn)和重傳等機(jī)制來保證數(shù)據(jù)的完整性和順序性,實(shí)現(xiàn)數(shù)據(jù)包的可靠傳輸。UDPTCP的主要區(qū)別但在某些運(yùn)用場景下,使用TCP協(xié)議
    的頭像 發(fā)表于 06-08 14:50 ?818次閱讀
    <b class='flag-5'>UDP</b>能否像<b class='flag-5'>TCP</b>一樣實(shí)現(xiàn)可靠傳輸?

    udp是什么協(xié)議 TCPUDP的區(qū)別

    TCP協(xié)議提供可靠的數(shù)據(jù)傳輸,UDP協(xié)議提供盡量高效的數(shù)據(jù)傳輸。TCP協(xié)議通過使用序列號、確認(rèn)應(yīng)答等機(jī)制,保證數(shù)據(jù)傳輸?shù)目煽啃?,?b class='flag-5'>UDP協(xié)議不提供可靠性保證,它只是簡單地把應(yīng)用程序傳給
    的頭像 發(fā)表于 06-26 17:47 ?1.1w次閱讀

    TCP/UDP簡介、特點(diǎn)及優(yōu)劣勢

    TCPUDP是兩種常見的互聯(lián)網(wǎng)傳輸協(xié)議,它們都是在IP網(wǎng)絡(luò)上運(yùn)行的傳輸層協(xié)議。
    的頭像 發(fā)表于 10-16 10:16 ?2475次閱讀
    <b class='flag-5'>TCP</b>/<b class='flag-5'>UDP</b>簡介、<b class='flag-5'>特點(diǎn)</b>及優(yōu)劣勢

    TCPUDP的區(qū)別

    1.TCPUDP的區(qū)別 TCP是面向連接的,UDP是面向無連接的; TCP只能一對一通信,UDP
    的頭像 發(fā)表于 11-09 09:35 ?3294次閱讀
    <b class='flag-5'>TCP</b>和<b class='flag-5'>UDP</b>的區(qū)別

    TCPUDP的基本區(qū)別

    順序,UDP不保證 UDP應(yīng)用場景: 面向數(shù)據(jù)報(bào)方式 網(wǎng)絡(luò)數(shù)據(jù)大多為短消息 擁有大量Client 對數(shù)據(jù)安全性無特殊要求 網(wǎng)絡(luò)負(fù)擔(dān)非常重,但對響應(yīng)速度要求高 TCP報(bào)頭
    的頭像 發(fā)表于 11-13 15:27 ?4397次閱讀
    <b class='flag-5'>TCP</b>與<b class='flag-5'>UDP</b>的基本區(qū)別

    UDP的特性與應(yīng)用場景

    一、UDP的特性與應(yīng)用場景 采用UDP有3個(gè)關(guān)鍵點(diǎn): 網(wǎng)絡(luò)帶寬需求較小,而實(shí)時(shí)性要求高 大部分應(yīng)用無需維持連接 需要低功耗 應(yīng)用場景: 網(wǎng)頁瀏覽:新浪微博就已經(jīng)用了QUIC協(xié)議 流媒體
    的頭像 發(fā)表于 11-13 15:34 ?740次閱讀
    <b class='flag-5'>UDP</b>的特性與應(yīng)<b class='flag-5'>用場景</b>

    如何選擇傳輸層協(xié)議?TCPUDP的優(yōu)缺點(diǎn)和適用場

    如何選擇傳輸層協(xié)議?TCPUDP的優(yōu)缺點(diǎn)和適用場合? 傳輸層協(xié)議是計(jì)算機(jī)網(wǎng)絡(luò)中的重要組成部分,它負(fù)責(zé)在主機(jī)之間傳輸數(shù)據(jù)。常見的傳輸層協(xié)議有TCP
    的頭像 發(fā)表于 12-11 11:42 ?795次閱讀

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

    據(jù)包的傳輸不進(jìn)行確認(rèn)和重傳,而TCP是一種面向連接的協(xié)議,通過確認(rèn)和重傳來實(shí)現(xiàn)可靠的數(shù)據(jù)傳輸。 首先,UDP無連接的特點(diǎn)使得它在傳輸時(shí)的開銷較小。UDP的數(shù)據(jù)包不需要建立和維護(hù)連接,僅
    的頭像 發(fā)表于 01-22 16:10 ?605次閱讀

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

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