- コンピュータに 65,535 個の TCP ポートがあるのはなぜですか?
- この数字はどこから来たのですか?
- それは何を表していますか?
答え1
- 「コンピュータに 65535 個の TCP ポートがあるのはなぜですか?「
コンピュータはないポートがあります。あなたが言及している「ポート」の概念は、TCPそしてUDPIのプロトコルTCP/IP ネットワーク スタック厳密に技術的な観点から見ると、TCP と UDP は両方とも、いくつかの種類の情報 (送信元ポート、宛先ポート、シーケンス番号、データなど) を伝送するように構成されています。「送信元ポート」と「宛先ポート」は両方とも (TCP および UDP パケット内で) 16 ビットの「フィールド」で構成されているため、次のような制限があります。送信元ポートと宛先ポートは、16 ビットで表すことができるすべての値 (つまり、0 から 65535) をとることができます。
- 「この数字はどこから来たのですか?「
上記を参照してください: 送信元ポートと宛先ポートは、それぞれのパケット内で16ビットの値で表されるため、0から65535までの範囲の値を想定できます。
- 「それは実際に何を表しているのでしょうか?「
要するに、「送信元ポート」と「宛先ポート」は両方とも、単一の「ホスト」(単一の「クライアント」または単一の「サーバー」)が異なる「提供」を行えるようにする非常に重要な役割を果たします。サービス単一の IP アドレスを持っているにもかかわらず、ネットワーク クライアントに対しては、単一の「サーバー」で Web サーバー (プレーン HTTP の場合は TCP ポート 80、HTTPS の場合は TCP ポート 443)、メール サーバー (受信 SMTP の場合は TCP ポート 25、POP3 アクセスの場合は TCP ポート 110、IMAP アクセスの場合は TCP ポート 143)、DB サーバー (MySQL の場合は TCP/ポート 3306) などを提供することは、言い換えれば、「ポート」がなければ非常に困難になります。
「純粋主義者」の読者は、上記の過度な単純化について私に同意しないかもしれないが、右: 実際、IPアドレスとポートは非常に重要な役割を果たしており、それを完全に理解するには、「カプセル化「概念(確かに、この回答で提示されている概念の中で最も重要な概念です)。残念ながら、これには通常たくさん適切に「習得」するには多くの時間が必要であり、それが、私が上記で過度に単純化した理由です :-)
答え2
TCP、UDP、およびおそらく他の IP サービスは、IP ネットワークを使用するホスト間のクライアント プロセスとサーバー プロセス間の個別の通信にポートを使用します。
より詳しい情報はこのウィキ記事で。
トップダウンの観点から見ると、ポートは 2 つのホスト間の個別の会話を表します。たとえば、ホストから指定されたサーバーに複数の DNS 要求が同時に送信され、それぞれが異なる送信元ポートから宛先ポート 53 を使用します。サーバーが回答を取得して要求を処理すると、特定の応答が同じポートに返され、応答を期待している個別のプロセスによって受信されます。
ボトムアップの観点から見ると、ポートは、ホストのオペレーティング システムによって個別のプロセスの IP 通信回線を予約する方法です。リモート ホストの同じポートにリクエストを送信するプロセスが複数ある場合でも、各プロセスはリクエストに対して異なる送信元ポートを使用します。これにより、応答が適切なプロセスによって受信されることが保証されます。
ポートされたプロトコルの場合、パケット ヘッダーに 32 ビットが予約されています。16 ビットは送信元ポート用、16 ビットは宛先ポート用です。TCP および UDP の場合、これらは IP ヘッダーの直後の最初の 32 ビットで、192 ビット目から始まります。16 ビットの数値は 0 から 65535 までの値を持ちます。
答え3
65,536 は 2 の 16 乗 (2^16) なので、コンピューターでは非常によく使われる数字です。2^8 は 256 で、65,536 は 256 の平方です。
言い換えると、16 ビットの 2 進数は 65,536 個の異なる整数を表すことができます。したがって、65,535 の範囲はおそらくここから来ているのでしょう。
でも、ちょっと待ってください。65,535 は 65,536 から 1 を引いた数なので、1 桁間違っているに違いないと思うでしょう。でも、ゼロから数え始めればそうではありません。たとえば、8 ビットの画像は 256 個の値をエンコードしますが、通常、これらは 0 から始まり、255 まで上がります。そのため、コンピューターでは 255 や 65,535 のような数字をよく見かけます。
TCP ポートは元々 16 ビットの数値として保存されていたため、上限が設定されているのだと思います。今でもそうであるかどうかはわかりません。お役に立てれば幸いです。