web-dev-qa-db-ja.com

なぜ人気のあるTCPを使用するサービスは、/ etc / servicesにTCPエントリーと同様にUDPを持っているのですか?

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の場合 この質問 で確認)。

22
sixty4bit

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

TCPおよびUDPポートは、どちらかが要求されたときに同時に割り当てられました

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

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

Debianに関する限り、 その/etc/services 1.0(buzz 1996)にはすでに22/udpがありました

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

執筆時点では、Debianの最新の安定バージョン(buster) 5.6を持っています です。そして最新のUbuntu LTS(18.04、bionic) netbaseパッケージ はDebianネットベース5.4に基づいており、 その変更ログにはudp/22の削除も記載されています を確認できます。

29
derobert