0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

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

3天內不再提示

TCP和UDP可以同時綁定相同的端口嗎?

億佰特物聯(lián)網(wǎng)應用專家 ? 2023-02-06 11:16 ? 次閱讀

TCP和UDP可以同時綁定相同的端口嗎?TCP和UDP可以同時綁定相同的端口嗎?解答這個問題之前,我們需要先來了解什么是TCP和UDP,什么又是網(wǎng)絡端口。0754a7a0-a3f1-11ed-ad0d-dac502259ad0.pngTCP與UDP介紹
TCP和UDP是IP(Internet Protocol)的獨立的兩個協(xié)議,他們都工作在OSI模型中的網(wǎng)絡層。其中TCP和UDP最大的區(qū)別就是面向連接和面向無連接。
TCP當需要傳輸?shù)臄?shù)據(jù)的可靠性非常重要的時候,我們一般使用TCP進行傳輸,因為TCP協(xié)議傳輸?shù)臄?shù)據(jù)是按照順序依次傳輸。如果數(shù)據(jù)接收方未收到發(fā)送方傳輸?shù)臄?shù)據(jù),TCP會在特定時間之后重新發(fā)包。這就是我們常說的丟包重傳機制,還有就是擁塞控制、流量控制等,TCP的可靠性正是因為有這些特性。
UDPUDP(User Datagram Protocol)是一種面向無連接的服務,UDP的數(shù)據(jù)將不像是TCP那樣保證按序傳輸,接收方無論收沒收到數(shù)據(jù)都不會重傳,因此UDP相對于TCP有更低的延遲。在時間優(yōu)先級高于數(shù)據(jù)可靠性的應用中,UDP更為常用,例如平時使用的視頻通話、網(wǎng)絡游戲等。因為對于這些應用來說,時間比數(shù)據(jù)的一致性更為重要。0769b9b0-a3f1-11ed-ad0d-dac502259ad0.png什么是網(wǎng)絡端口?端口有什么作用?
我們的電腦上有許多的通信程序,當我們的電腦收到數(shù)據(jù)包之后,數(shù)據(jù)包是如何精準的分配至不同的應用的呢?我們可以這樣理解,在網(wǎng)絡中的IP地址相當于我們現(xiàn)實生活中的小區(qū)名,端口號就像是具體的門牌號。07788ae4-a3f1-11ed-ad0d-dac502259ad0.png端口的作用是讓應用層的各種應用進程都能將其數(shù)據(jù)通過端口向下交付給傳輸層,以及讓傳輸層知道應當將其報文段中的數(shù)據(jù)向上通過端口交付給應用層的進程。為了對端口進行區(qū)分,將每個端口進行了編號,這就是端口號。當我們將數(shù)據(jù)從一臺設備發(fā)送到另一臺設備時,它會轉到特定的 TCP 或 UDP 端口,具體取決于我們用于通信的協(xié)議。
078cea5c-a3f1-11ed-ad0d-dac502259ad0.pngTCP和UDP的Socket可以綁定同一個端口嗎?
TCP與UDP服務端網(wǎng)絡都會調用bind綁定端口。

079e8852-a3f1-11ed-ad0d-dac502259ad0.jpg

TCP網(wǎng)絡編程


07b6dc72-a3f1-11ed-ad0d-dac502259ad0.jpg

UDP 網(wǎng)絡編程

TCP 和 UDP 端口彼此不相關。TCP 端口由 TCP 堆棧解釋,而 UDP 堆棧解釋 UDP 端口。端口是多路復用連接的一種方式,以便多個設備可以連接到一個節(jié)點。因此,從技術上講,更高級別的協(xié)議可以使用相同或不同的 TCP 和 UDP 端口號。另一方面,一臺計算機可以同時使用相同的 TCP 和 UDP 端口號與兩個不同的服務進行通信。

07c6c0c4-a3f1-11ed-ad0d-dac502259ad0.png

如上圖, TCP/UDP 各自的端口號是相互獨立的, TCP 有一個 80 號端口,UDP 也可以擁有一個 80 號端口,兩者并不沖突。所以,TCP 和 UDP 是可以同時綁定相同的端口的。TCP 和 UDP 傳輸協(xié)議,在內核中是由兩個完全獨立的軟件模塊實現(xiàn)的。當主機收到數(shù)據(jù)包后,可以在 IP 包頭的“協(xié)議號”字段知道該數(shù)據(jù)包是 TCP還是UDP,所以可以根據(jù)這個信息確定送給哪個模塊(TCP/UDP)處理,送給 TCP/UDP 模塊的報文根據(jù)“端口號”確定送給哪個應用程序處理。因此, TCP/UDP 各自的端口號也相互獨立,互不影響。

客戶端的端口可以重復使用嗎?只要客戶端連接的不是相同的服務器,內核是允許端口重復使用的。TCP 連接由四元組(源IP地址,源端口,目的IP地址,目的端口)唯一確認的,四元組其中任何一個元素改變,就表示不同的 TCP 連接。假如客戶使用端口1與服務器A建立了連接,客戶端也可以使用端口1與服務器B建立連接,即使客戶端的端口號相同,但因四元組信息發(fā)生變化,并不會導致連接沖突。多個 TCP 服務進程可以綁定同一個端口嗎?若多個TCP服務進程同時綁定相同的IP地址和端口,那么執(zhí)行bind() 時候就會報錯“Address already in use”;若TCP服務進程只是綁定相同的端口,但綁定的IP地址不同,那么則不會報錯。

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

    關注

    8

    文章

    1399

    瀏覽量

    80555
  • UDP
    UDP
    +關注

    關注

    0

    文章

    330

    瀏覽量

    34544
收藏 0人收藏

    評論

    相關推薦
    熱點推薦

    TCP協(xié)議與UDP協(xié)議的區(qū)別

    。 UDP(用戶數(shù)據(jù)報協(xié)議) : 無連接 :UDP不建立連接,數(shù)據(jù)可以直接發(fā)送,不需要任何握手過程。 不可靠性 :UDP不保證數(shù)據(jù)的可靠傳輸,數(shù)據(jù)包可能會丟失,不會重傳。 2. 數(shù)據(jù)傳
    的頭像 發(fā)表于 01-22 09:44 ?706次閱讀

    Web端TCP/UDP測試工具!小白必學~

    測試工具作為TCP server進行測試。 ▼ ??TCP測試示例 ? ▼ 01. 打開TCP/UDP web測試工具,點擊【打開TCP】按
    的頭像 發(fā)表于 01-08 18:17 ?1166次閱讀
    Web端<b class='flag-5'>TCP</b>/<b class='flag-5'>UDP</b>測試工具!小白必學~

    TCP三次握手與UDP的區(qū)別

    在計算機網(wǎng)絡中,數(shù)據(jù)傳輸?shù)目煽啃院托适莾蓚€關鍵因素。為了滿足不同的應用需求,設計者們開發(fā)了多種傳輸層協(xié)議。其中,TCP(傳輸控制協(xié)議)和UDP(用戶數(shù)據(jù)報協(xié)議)是最常用的兩種。它們在數(shù)據(jù)傳輸機制
    的頭像 發(fā)表于 01-03 17:35 ?795次閱讀

    一文了解Android UDP通信

    :用于創(chuàng)建UDP套接字,指定本地端口號。通過該對象,可以發(fā)送和接收UDP數(shù)據(jù)報。 DatagramPacket:用于表示一個UDP數(shù)據(jù)報,包
    發(fā)表于 12-30 10:56

    嵌入式學習-飛凌嵌入式ElfBoard ELF 1板卡-

    端口相同,都是80。這里可以根據(jù)源端口號加以區(qū)分。③和 ① 的目標端口號和源端口號完全
    發(fā)表于 11-11 14:17

    飛凌嵌入式ElfBoard ELF 1板卡-網(wǎng)絡編程示例之網(wǎng)絡基礎知識

    端口相同,都是80。這里可以根據(jù)源端口號加以區(qū)分。③和 ① 的目標端口號和源端口號完全
    發(fā)表于 11-09 14:37

    TCP&UDP調試工具

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

    UDP丟包的原因和解決方案

    每個 UDP 報文分為 UDP 報頭和 UDP 數(shù)據(jù)區(qū)兩部分。報頭由 4 個 16 位長(2 字節(jié))字段組成,分別說明該報文的源端口、目的端口
    的頭像 發(fā)表于 10-22 14:38 ?4257次閱讀
    <b class='flag-5'>UDP</b>丟包的原因和解決方案

    深度解析TCPUDP協(xié)議

    計算機與網(wǎng)絡設備要相互通信,它們必須遵循一種共同的方法或標準。對于不同硬件平臺和操作系統(tǒng)之間的交互而言,這種共同遵循的規(guī)范尤為關鍵。我們將這一系列指導通信過程的規(guī)則稱為“協(xié)議”。TCPUDP
    的頭像 發(fā)表于 09-02 14:53 ?761次閱讀
    深度解析<b class='flag-5'>TCP</b>與<b class='flag-5'>UDP</b>協(xié)議

    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 ?993次閱讀

    使用sep_now的同時能不能使用TCPUDP連接?

    在使用sep_now的同時能不能使用TCPUDP連接
    發(fā)表于 07-22 06:10

    請問ESP8266如何在UDP中設置本地端口?

    ,以便遠程客戶端可以啟動連接(即 無需知道該隨機端口即可訪問它)。 我使用的命令是: AT CWMODE=2 (或 3) 在 cipmux=0 時 AT+CIPSTART=\"UDP\"
    發(fā)表于 07-15 08:31

    請問esp8266 rtos sdk能否同時啟動tcp socke clent和udp server?

    我在用的是V1.5的rtos 的sdk,想在esp8266上同時啟動tcp的socket client和udp的socket server。 但是我發(fā)現(xiàn),只要我一啟動upd server,t
    發(fā)表于 07-12 07:07

    如何同時在ESP8266上運行TCP客戶端和TCP服務?

    客戶端無法連接到 TCP 服務器。如果不將 TCP 客戶端從 ESP 連接到云服務器,則 ESP 上的 TCP 服務器可以很好地接受 TCP
    發(fā)表于 07-08 08:26

    如何設置udp的發(fā)送接收端口?

    想請問各位如何設置udp的發(fā)送接收端口
    發(fā)表于 06-24 06:22

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品