一般的なTCPを使用するサービスには、/ etc / servicesにTCPエントリだけでなくUDPもあるのはなぜですか?


22

Goでネットワークプログラミングに関する本を読んでいます。章の1つでは、/ etc / servicesファイルを扱います。このファイルの調査中に気づいたのは、両方ともトランスポート層でTCPを使用するHTTPやSSHなどの特定の一般的なエントリに、UDPの2番目のエントリがあることです。たとえば、Ubuntu 14.04の場合:

ubuntu@vm1:~$ grep ssh /etc/services  
ssh             22/tcp         # SSH Remote Login Protocol 
ssh             22/udp

ubuntu@vm1:~$ grep http /etc/services  
http            80/tcp          www             # WorldWideWeb HTTP            
http            80/udp                          # HyperText Transfer Protocol

なぜこれらに2つのエントリがあるのか​​誰でも知っていますか?SSHやHTTPがUDPを使用するとは思わない(SSHのこの質問で確認された)。


7
22/udpIANAは2016年にDebianで削除されました。IANA は22 / udpをリストし、通常はどちらか一方にのみ実装されるほとんどのプロトコルのudpとtcpの両方をリストします。誰かがいつかudp経由でsshを実装したい場合に備えて、22がssh用に予約されていることを意味しているだけかもしれません。
ステファンシャゼラス

2
また、セクション7.1を参照してくださいrfc6335
ステファンChazelas

回答:


29

基本的に、それはポート番号が割り当てられ始めた頃から約2011年までの伝統であったためです。たとえば、RFC 6335の§7.1「過去の原則」を参照してください

いずれかが要求されたときに、TCPポートとUDPポートが同時に割り当てられました

もちろん、ポート1023以下は「システムポート」であり、ほとんどのオペレーティングシステムで特別に処理され、その範囲のほとんどが現在割り当てられているため、いつか割り当てられなくなる可能性があります。

ちなみに、HTTP / 3はUDP上で実行されます。80/443だけでなく、任意のUDPポートを使用できますが。したがって、実際にはまだ使用されていません。

限りのDebianが関係しているとして、そのは/etc/servicesすでに1.0(バズ1996)で22 / udpをしていました

ただし、2016年のこのコミットでは削除され、netbaseパッケージのバージョン5.4で最初にリリースされました。

執筆時点で、Debian(buster)の最新の安定バージョンには5.6があります。また、最新のUbuntu LTS(18.04、バイオニック)ネットベースパッケージはDebianネットベース5.4に基づいており、その変更ログにはudp / 22の削除も記載されています


4
@SergiyKolodyazhnyy私はそうは思わないだろう、この慣行はファイアウォールよりも前のものだから。
デロバート

3
@TobySpeightこれはLinuxだけでなく、関連する標準の一部です。たとえば、そのRFCの§6を参照してください。IANAはより上位のポートも登録しますが、それらは異なる分類です(そして、LinuxだけでなくOSがそれらをどのように扱うかにより、実際に重要になります)。少し明確にします。また、0は有効なポートではありません。ソケットAPIがワイルドカードとして使用します(カーネルにポートを選択するよう指示するため)。
デロバート

2
「0は有効なポートではありません」は疑わしいです。それは確かに私たちのOSで使用可能なポートではありません(これが私がそれを具体的に呼び出した理由であり、現在予約されており、何にも割り当てられない理由です)が、プロトコルレベルでは特別ではありません。
Toby Speight

1
@derobert:あなたの議論は、ポート0は「空きポートを選ぶ」ことを意味するため、ポート0はUnixマシンでは使用できないということです。引数が間違っていると言っています。結論は論理的に前提からは成り立ちません。
MSalters

3
80/443だけでなく、任意のUDPポートを使用できますが、これはすべてのプロトコルTCP / UDPプロトコルに本質的に当てはまりますが、これらはそれぞれに関連付けられたデフォルトポートにすぎません。TCPおよびUDPを使用するほとんどのアプリケーションは、デフォルト以外のポートを指定する方法を提供しませんが、HTTPではURLで指定できるため、ポートを変更するのがより現実的です。
バーマー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.