エフェメラルポートとは



※以下書籍はKindle Unlimitedで読めます。

■LinuxとUNIXの違いをわかりやすく解説しています。
※サーバーエンジニアは知っておくべき内容です。

【初心者向け】これだけでLinuxとUNIXの違いがわかる!


■ロードバランサー(LB)をわかりやすく解説しています。
※ネットワークエンジニア、サーバーエンジニアは知っておくべき内容です。

これだけでSNMPがわかる!SNMPの使い方


■SNMPの使い方をわかりやすく解説しています。
※ネットワークエンジニア、サーバーエンジニアは知っておくべき内容です。

これだけでロードバランサーがわかる!


■ChatGPTの使い方をわかりやすく解説しています。

【初心者向け】これだけでわかる!ChatGPTの使い方




■動画でわかりやすく解説してます。








では、今日も授業を始める。今日のテーマはエフェメラルポートだ。




エフェメラルポートって、何それ!?




エフェメラルポートは、一時的に動的に使用されるポートのことだ。 サーバ側のポートはあらかじめ決められているウェルノウンポート番号などを利用するが、 クライアント側のポートは特に用途の決まっていないエフェメラルポートの中から適当に1つのポート番号を 一時的な利用のために動的に決めている。




動的に決めるってどういうこと!?




クライアントが通信するときに、今回はクライアントのポート番号として、何番を利用して、 次に通信するときには、別のポート番号を利用するというように、都度、動的(dynamic)にポート番号を決めている。




ポート番号が固定されず、都度、ポート番号が何番になるか決まるってことね。




エフェメラルポートはIANAでは49152~65535番を利用することを推奨している。 エフェメラルには、「短命な」という意味がある。エフェメラルポートは動的ポート(ダイナミックポート)ともいわれる。




エフェメラルポートはクライアント側で利用されるのね。




クライアントからサーバに通信するとき、 一般的にサーバ側のポートはウェルノウンポート番号になっているが、 このとき、クライアント側はエフェメラルポートの中から適当なポート番号を割り当てる。 クライアント側は、通信が終了するとそのポート番号は解放される(利用不可になる)。




クライアントが通信する度に、クライアント(送信元)が利用するポート番号が変わるから動的ポートといわれるのね。 サーバ側のポートで、25番はSMTPポートというように決まっていて、常に25番ポートを使う場合は静的ポートというのね。




エフェメラルポートは何番から何番なの?




エフェメラルポート番号はOSによって異なる。




例えば、Windows 2000、Windows XP、Windows Server 2003の動的ポート番号(エフェメラルポート)は、 1025番~5000番になっていた。

Windows Server 2012、Windows Server 2008 R2、Windows Server 2008、 Windows 10、Windows 8、Windows 7、Windows Vistaの動的ポート番号(エフェメラルポート)は、 49152番~65535番になっている。

(参考)
https://support.microsoft.com/ja-jp/help/832017/service-overview-and-network-port-requirements-for-windows

https://support.microsoft.com/ja-jp/help/929851/the-default-dynamic-port-range-for-tcp-ip-has-changed-in-windows-vista




マイクロソフトは以前1025番~5000番を使用していたが、49152番~65535番に仕様変更したってこと?




うむ。ポート番号はInternet Assigned Numbers Authority (IANA)という組織が管理していて、 ウェルノウンポートやレジスタードポートなどが決まっている。 マイクロソフトはIANAに準拠するために、動的なポート番号(エフェメラルポート)を49152番~65535番に変更した。




コマンドとかで動的ポートがいくつになっているか確認できないの?




Windowsでクライアント側で使用される動的ポート番号は、以下のコマンドで確認ができる。 コマンドプロンプトを起動して、以下のnetshコマンドで確認してみよう。

netsh int ipv4 show dynamicport tcp
netsh int ipv4 show dynamicport udp
netsh int ipv6 show dynamicport tcp
netsh int ipv6 show dynamicport udp

参考:
https://docs.microsoft.com/ja-jp/windows/client-management/troubleshoot-tcpip-port-exhaust




>netsh int ipv4 show dynamicport tcp

プロトコル tcp の動的ポートの範囲
---------------------------------
開始ポート : 49152
ポート数 : 16384


>netsh int ipv4 show dynamicport udp

プロトコル udp の動的ポートの範囲
---------------------------------
開始ポート : 49152
ポート数 : 16384


>netsh int ipv6 show dynamicport tcp

プロトコル tcp の動的ポートの範囲
---------------------------------
開始ポート : 49152
ポート数 : 16384


>netsh int ipv6 show dynamicport udp

プロトコル udp の動的ポートの範囲
---------------------------------
開始ポート : 49152
ポート数 : 16384




クライアント側で使用されるポート番号は49152番からで、ポート数が16384個だから、 49152番~65535番ってことね。




Linuxのエフェメラルポートは何番なの?




CentOS6やCentOS7の場合は、 32768番~60999番ポートがエフェメラルポート(動的ポート)になっている。以下のコマンドで確認できる。 このデフォルト値は設定変更で、ポート番号を変えることもできる。
cat /proc/sys/net/ipv4/ip_local_port_range




# cat /proc/sys/net/ipv4/ip_local_port_range
32768 60999
#




60999 - 32768 + 1 = 28232個が使用可能なポート数ね。




CentOSは32768番~60999番を使っていて、最近のWindowsではIANA(Internet Assigned Number Authority)に準拠して、49152番~65535番を使っている。




では、今日はここまで。




は~い。




今回のまとめ

1.エフェメラルポートは、一時的に動的に使用されるポート

2.動的とはポート番号が固定されず、都度ポート番号が決まる

3.エフェメラルポートはIANAでは49152~65535番を利用することを推奨

4.エフェメラルには、「短命な」という意味がある

5.エフェメラルポートはクライアント側で利用されるポート番号

6.CentOS6、CentOS7のエフェメラルポートは32768番~60999番

7.Windows Server 2012、Windows10のエフェメラルポートは49152番~65535番



 次の章へ