Internet Assigned Numbers Authority(IANA)は、動的ポートまたはプライベートポートに49152〜65535の範囲を推奨しています。多くのLinuxカーネルは、ポート範囲32768〜61000を使用します。
IANAの推奨範囲からの歴史的な逸脱があるように見えますが、Windows Vista、Windows 7、Windows Server 2008、FreeBSD 4.6+などの多くがすべてこの範囲に同意しているにもかかわらず、Linuxが際立っています。
でも調べてみてください。
$ cat /proc/sys/net/ipv4/ip_local_port_range
32768 61000
Linuxが標準の範囲を採用していないのはなぜですか?
IANAが1023までのポートしか割り当てなかった時代がありました。 RFC17 を参照してください。かつてこれは標準でした。ほとんどの場合、RFCの流れが変わったときに問題なく見つけることができますが、ポートを1024から49152に登録済みから割り当て済みに変更する問題については、思い付きませんでした。
Linuxの歴史に関しては、2007年のデフォルトのip_local_port_rangeについての質問がありました。当時、言及したLinuxの範囲を使用することが決定されました。ポート番号が大きいと問題が発生する可能性があり、範囲4949で開始すると数が少なすぎる可能性があります。プール内のポート番号。 this とそのスレッドを参照してください。当時表明されていた考えは、32768年以降はIANAの手順の精神の範囲内であったとしても、完全に準拠していなかったということです。これを読んで、私は開発者がほとんどの割り当てが範囲の一番下から発生し、上に移動すると想定したと推測します。この記事の執筆時点では、32768から49152までの間に割り当てられた100を超えるポート番号(別のプロトコルを個別に数えない)を数えています。そのため、この5年間はかなりうまくいきました。
範囲が小さすぎると考えられた理由はわかりませんが、2つの理由が考えられます。
これ ブログの投稿では2番目の問題に触れ、Linuxシステムで異なる範囲のローカルポートを使用する場合の回答を提案しています。 (/etc/sysctl.dを使用して好きな範囲を定義します。特定の競合が発生した場合に使用できるip_local_reserved_portsエントリもあります。これらは、引用した/ proc/sysエントリと一致します。)
要約すれば。 Linuxdefaultsは現在のIANA仕様と一致しませんが、特定のLinuxシステムは、その所有者が望む場合は一致できます。