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の削除も記載されています。。