2011-06-22 146 views

回答

68

是的,您可以爲TCP和UDP使用相同的端口號。許多協議已經這樣做,例如DNS在udp/53 tcp/53上工作。

從技術上講,每個協議的端口池都是完全獨立的,但對於可以使用TCP或UDP的更高級別的協議,約定它們默認爲相同的端口,編號

當寫你的服務器,請記住,在TCP套接字的事件序列比對UDP套接字更難,因爲還有正常socketbind電話你也有listenaccept

此外,accept呼叫將返回一個新的套接字,它的套接字,然後你還必須輪詢接收事件。您的服務器應準備好繼續在原始套接字上連接連接,同時服務多個客戶端,每個客戶端將在其自己的套接字上觸發接收事件。

+0

另一個示例NetBIOS在137-139上使用UDP和TCP –

+2

@Eric Fortis RFC 1700充滿了實例,讓我們不要一一列舉它們。 ;-) – EJP

+1

目前官方的端口號存儲庫位於http://www.iana.org/assignments/port-numbers,但許多雙udp/tcp條目僅僅是保留,並不表示協議實際上使用兩者。例如,沒有HTTP over HTTP的實現,因爲HTTP需要可靠的傳輸。兩者都進行了註冊,以避免混淆,並防止一個不相關的協議顯示爲端口80. – Alnitak

4

首先,在服務器上同時使用tcp和udp是沒有問題的。因爲每個請求都由源IP,目標IP,源端口,目標端口,協議(包括協議可以是TCP或UDP)所包含的五元組來標識,因此可以在同一端口上同時發送UDP和TCP請求。 。

+1

你陳述的原因經常給出,但它是毫無意義的。沒有這樣的事情作爲UDP連接,並且沒有連接被考慮的上下文,而不管關聯的協議如何。事實是,端口分別是TCP和UDP的人工產物,因此不可能混淆它們。 – EJP

+0

謝謝你指出我的錯。沒錯,沒有使用UDP的連接。 – aMooly

相關問題