クライアントプロセスが使うポート

サーバプロセスはポートを指定してListenしますが、クライアントプロセスはOSから動的に割り当てられます。Windows的には一時ポートとか動的ポートといいますが、ネットワーク屋さん的にはエフェメラルポートといいます。

ネットワーク屋さん的なポート割付

1〜1024 1025〜49151 49151〜65535
ウェルノウンポート*1 レジスタードポート*2 エフェメラルポート*3

Windowsのデフォルトのポート割付

1〜1024 1025〜5000 5001〜
予約 エフェメラルポート なし

Solaris

1〜1024 1025〜32767 32768〜65535
予約 なし エフェメラルポート

こう見ると、Solarisの方がまともな感じ。
安定性があるには理由があるってな。
若しくはWindowsアプリ開発者は空気を読んで5001以降を使うとか。

まぁそんな感じ。

*1:一般的なサーバプロセスが予約しているので、サーバプロセスを作るときは使ってはいけない。OSもクライアントプロセスに割り当ててはいけない。

*2:予約はされていないが、この範囲内で登録されているので、サーバプロセスを作るときはココを指定する。OSは割り当てないで欲しい。

*3:OSが動的に割り当てるときはココにしてくれ。