TCP和UDP可以同時綁定相同的端口嗎?TCP和UDP可以同時綁定相同的端口嗎?解答這個問題之前,我們需要先來了解什么是TCP和UDP,什么又是網(wǎng)絡端口。TCP與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ù)的一致性更為重要。什么是網(wǎng)絡端口?端口有什么作用?
我們的電腦上有許多的通信程序,當我們的電腦收到數(shù)據(jù)包之后,數(shù)據(jù)包是如何精準的分配至不同的應用的呢?我們可以這樣理解,在網(wǎng)絡中的IP地址相當于我們現(xiàn)實生活中的小區(qū)名,端口號就像是具體的門牌號。端口的作用是讓應用層的各種應用進程都能將其數(shù)據(jù)通過端口向下交付給傳輸層,以及讓傳輸層知道應當將其報文段中的數(shù)據(jù)向上通過端口交付給應用層的進程。為了對端口進行區(qū)分,將每個端口進行了編號,這就是端口號。當我們將數(shù)據(jù)從一臺設備發(fā)送到另一臺設備時,它會轉到特定的 TCP 或 UDP 端口,具體取決于我們用于通信的協(xié)議。
TCP和UDP的Socket可以綁定同一個端口嗎?
TCP與UDP服務端網(wǎng)絡都會調用bind綁定端口。
TCP網(wǎng)絡編程
UDP 網(wǎng)絡編程
TCP 和 UDP 端口彼此不相關。TCP 端口由 TCP 堆棧解釋,而 UDP 堆棧解釋 UDP 端口。端口是多路復用連接的一種方式,以便多個設備可以連接到一個節(jié)點。因此,從技術上講,更高級別的協(xié)議可以使用相同或不同的 TCP 和 UDP 端口號。另一方面,一臺計算機可以同時使用相同的 TCP 和 UDP 端口號與兩個不同的服務進行通信。
如上圖, 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地址不同,那么則不會報錯。
-
TCP
+關注
關注
8文章
1399瀏覽量
80555 -
UDP
+關注
關注
0文章
330瀏覽量
34544
發(fā)布評論請先 登錄
TCP協(xié)議與UDP協(xié)議的區(qū)別
TCP三次握手與UDP的區(qū)別
一文了解Android UDP通信
嵌入式學習-飛凌嵌入式ElfBoard ELF 1板卡-
飛凌嵌入式ElfBoard ELF 1板卡-網(wǎng)絡編程示例之網(wǎng)絡基礎知識
UDP丟包的原因和解決方案

深度解析TCP與UDP協(xié)議

評論