web-dev-qa-db-ja.com

TCPとUDPソケットは同じポートを使用できますか?

まず、UDPとTCPの両方を同じサーバーで使用することに問題はありますか?

次に、同じポート番号を使用できますか?

87
user800799

はい。TCPとUDPの両方に同じポート番号を使用できます。たとえば、DNSはudp/53 and tcp/53で動作します。

技術的には、各プロトコルのポートプールは完全に独立していますが、TCPまたはUDPのいずれかを使用できる高レベルのプロトコルの場合、デフォルトは同じポートnumberです。

サーバーを作成するとき、TCPソケットのイベントのシーケンスはUDPソケットよりもはるかに難しいことに注意してください。通常のsocketbindは、listenacceptも呼び出す必要があります。

さらに、そのaccept呼び出しは新しいソケットを返し、それはthatソケットであるため、受信イベントもポーリングする必要があります。サーバーは、それぞれが独自のソケットで受信イベントをトリガーする複数のクライアントに同時にサービスを提供しながら、元のソケットでaccepting接続を続行する準備をする必要があります。

94
Alnitak

まず、サーバーでtcpとudpの両方を使用しても問題ありません。

次に、UDPとTCP要求を同じポートで使用できます。各要求は、送信元IP、送信先IP、送信元ポート、送信先ポート、プロトコル(プロトコルとして、 be TCPまたはUDP)。

6
aMooly