TCPを使用する人気のあるサービスの/ etc / servicesにUDPとTCPエントリがあるのはなぜですか?

TCPを使用する人気のあるサービスの/ etc / servicesにUDPとTCPエントリがあるのはなぜですか?

Goを使ったネットワークプログラミングに関する本を読んでいます。 1 章では、/etc/services ファイルについて説明します。ファイルの閲覧中に、HTTPやSSH(両方ともトランスポート層でTCPを使用)など、いくつかの人気アイテムに2番目のUDPエントリがあることがわかりました。 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の場合)。

答え1

基本的にポート番号は非常に古くから与えられたためですが、これは2011年程度まで伝統でした。たとえば、次を参照してください。§7.1「過去の原則」~のRFC 6335:

両方のポートのいずれかが要求されると、TCPポートとUDPポートの両方が割り当てられます。

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

ところで、HTTP / 3はUDPの上で実行されます。 80/443だけでなく、すべてのUDPポートを使用できます。だから実際にはこれらはまだ使用されていません。

Debian の場合、1.0には/etc/servicesすでに22/udpがあります(Buzz 1996)。

しかし、削除されました。今回提出してください2016年には、netbaseパッケージバージョン5.4が初めてリリースされました。

この記事を書いている時点で、Debian(バスター)の最新の安定版は5.6があります。そして最新のUbuntu LTS(18.04、Bionic)ネットワーク基本パッケージDebian netbase 5.4に基づいて見ることができます。変更ログにはudp / 22の削除も記載されています。

関連情報