Linuxの記事を読んで、突然「一時的なポート」という言葉を見ましたが、著者はそれが何であるかについて言及しませんでした。
UNIXの一時ポートとは何ですか?
答え1
本質的に一時ポート既知のサーバーポートと通信するために使用される任意の親ポート。たとえば、マイコンピュータからサーバーにSSH経由で接続すると、次のように接続されます。
192.168.1.102:37852 ---> 192.168.1.105:22
22 はリモートシステムから接続する標準 SSH ポートです。 37852は、ローカルシステムで使用される一時ポートです。
答え2
今日は一般的に次のように言います。
番号付きポートを
0-1023
システムまたは有名なポート番号付きポートを1024-49151
ユーザーまたは登記ポート、番号付きのポートを49152-65535
動的ポート、プライベートポート、または短命ポート。
登録ポート番号は現在IANA ...によって割り当てられており、2001年3月21日以前は... ICANN ...によって、1998年以前は... USC / ISI ...によって割り当てられました。
源泉:https://en.wikipedia.org/wiki/Registered_port[修正済み]
...よく知られているポートまたはシステムポート。広く使用されているタイプのネットワークサービスを提供するシステムプロセスで使用されます。 Unixファミリーオペレーティングシステムでは、よく知られているポートの1つを使用してネットワークソケットをIPアドレスにバインドするには、スーパーユーザー権限でプロセスを実行する必要があります。
源泉:https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers
よく知られており、登録されたポート番号がサーバープロセスで使用されるように、一時ポート番号はクライアントプロセスでのみ使用されます。
源泉:https://books.google.si/books?id=Pm4RgYV2w4YC&pg=PA705
これらの一時/一時ポートが割り当てられていない場合、インターネットプロトコル(IP)/ネットワーク通信の競合または中断が発生する可能性があります。たとえば、2 つの Web サーバーがあり、両方ともポート 80 でリッスンします。これら2つのサーバーはどのように通信しますか?half-duplex
単一の80ポートで一種の通信(リスニング、トランスポート、リスニング、トランスポート...)を実装しますか?この場合、通信速度は少なくとも遅くなります。 80ポート(クライアントに応答を送信するために使用されます)を一時的に使用できないため、他のクライアントが他のクライアントへのサーバーの応答を待たなければならないことは言うまでもありません。
一時ポートがここに表示されます。この場合、サーバーはポート 80 でリッスンし続け、同時に他のポート (" full-duplex
") の種類で通信できます。たとえば、これがTCP / IPポートであるとします。
TCP / IPまたはUDPを使用するクライアント - サーバープロセスでは、クライアントはよく知られているいくつかのポートの1つを介してサーバーとの通信を開始します。ただし、サーバーは通信を開始しないため、そのクライアントデバイスでサーバータイプのアプリケーションが実行されている場合は、よく知られているポートを使用してクライアントに応答を送信しないでください。代わりに、クライアントサーバーは、クライアントがソースポートとして提供した一時割り当てられた新しいポートを使用します。
通信が終了すると、そのポートは別のセッションで使用できます。ただし、通常はポート範囲全体を使用した後にのみ再利用されます。
異なるオペレーティングシステムは、一時ポートに異なるポート範囲を使用します。デフォルトでは、多くのLinuxバージョンはポート範囲32768-61000を使用し、Windowsバージョン(XPより前)は1025-5000を使用します。 Vista、Windows 7、およびServer 2008を含む最新のWindowsバージョンでは... IANA ...推奨範囲49152-65535を使用します。
源泉:https://www.techopedia.com/definition/19157/ephemeral-port
構成が正しくない場合は、TCP自己接続の問題に言及する価値があります。
while true do telnet 127.0.0.1 50000 done
...
127.0.0.1 試行中...
Telnet: アドレス 127.0.0.1 に接続中: 接続が拒否されました。
127.0.0.1 試行中...
127.0.0.1 に接続しました。
...
どうしたの?つまり、クライアントは独自に接続されています...興味深いことに、Linuxは一時ポートをランダムではなく順番に選択します
。まず、クライアントが一時ポートに接続しようとするために、サーバーがリッスンする一時ポートを(ab)使用する必要があります。
源泉:http://sgros.blogspot.com/2013/08/tcp-client-self-connect.html
関連:
-https://docs.microsoft.com/en-us/troubleshoot/windows-server/networking/default-dynamic-port-range-tcpip-chang(Windows Vista および Windows 以降、TCP/IP の既定の動的ポート範囲が変更されました。...)
-https://en.wikipedia.org/wiki/Duplex_(通信)
-https://jazzy.id.au/2012/08/23/why_does_chrome_consider_some_ports_unsafe.html
-https://chromium.googlesource.com/chromium/src.git/+/refs/heads/master/net/base/port_util.cc(ブロックされたポートの一般的なリスト...)
答え3
ポート49152-65535ephemeral ports
の他の名前はですprivate ports
。この範囲のポートを登録できないため、そう呼ばれます。インターネット割り当て番号機関。クライアントがサーバーと通信する必要がある場合、クライアントには一時ポートが割り当てられ、サーバーは1024から49151の範囲の登録済みポートでリッスンします。
答え4
から引用ウィキペディア:
一時ポートは、事前定義された範囲でTCP / IPソフトウェアによって自動的に割り当てられるインターネットプロトコル(IP)通信に使用される短期転送プロトコルポートです。これは、クライアント - サーバー通信のためのトランスポート制御プロトコル(TCP)、ユーザーデータグラムプロトコル(UDP)、またはストリーム制御トランスポートプロトコル(SCTP)でサーバーの既知のポートへのクライアント - サーバーポート割り当てとして使用されます。
私が知っている最良の例はFTPです。そしてそれはUnixに限定された概念ではありません。