📘

【基本】ポートについて

に公開

はじめに

ネットワーク通信において「ポート(Port)」や「ポート番号」という言葉を一度は聞いたことがあると思います。
これらは、データが正しい相手に届くための「住所の部屋番号」のようなもので、特にネットワークやサーバー構築、APIの実装に関わるなら、「ポートが開いているか?」「競合していないか?」といった判断が日常的に必要になります。
今回は、ポートの基本を初心者向けにざっくりわかりやすく解説します。

ポートとは


https://it-infomation.com/network-port/ より

ポートは、データの出入り口のことで、具体的にはネットワーク上の1台のコンピュータ内でアプリケーションを識別する番号のことを指します。1つのIPアドレスの中で複数の通信を区別するための番号です

※1つのIPアドレスにつき、65535のポートが理論上使用できます。ただし、事前に専用サービスでの使用のために使用できないポート番号も存在します。詳しくは下記にて。

これによって、同じIPアドレスを使用していても、ポート番号が異なることで正しく宛先のアプリケーションにデータを送信することができます。

IPアドレスが「住所」だとすれば、ポート番号は「部屋番号」に相当します。
IPアドレスで接続先のコンピュータを特定し、ポート番号でその中のアプリケーション(サービス)を特定します。

(例)
・WebブラウザでGoogleにアクセス
・メールソフトでGmailを受信
・オンラインゲームで友達と接続
これらの通信を整理するために、「ポート」という番号付きの出入り口が使われます。

ポートの役割


https://it-infomation.com/network-port/ より

「どのアプリにデータを渡すか」を決めます。
「◯◯番の部屋(ポート)にデータを届けて!」 という仕組みで、正しいアプリにデータを渡します。
先ほどと一部重複しますが、IPアドレスで宛先はわかりますが、どの部屋までかはわからないため、ポート番号で明らかにします。

ポート番号の分類

ポート番号は 0~65535 まであり、主に3つの範囲に分けられます。
主要なサービス(HTTP, SSHなど)は決まったポート番号を使う

① ウェルノウンポート (0-1023)
HTTP, SSHなどインターネットの基盤サービスはあらかじめ決まった専用のポート番号を使用します。
これは、全世界で統一された番号で管理者権限が必要になります。
(例)
80: HTTP (普通のWebサイト)
443: HTTPS (安全なWebサイト)
22: SSH (安全な遠隔操作)

② 登録済みポート (1024-49151)
各種アプリケーションが使用し、正式登録することによって固定利用が可能となります。
ウェルノウンポートより緩やかな規制であることが特徴的です。

例えば、データベース、ゲーム、業務アプリなどに利用され、
3306: MySQLデータベース
3389: リモートデスクトップ
25565: Minecraftサーバー
といった形式で登録されています。

③ 動的/プライベートポート (49152-65535)
一時的な通信のために専用で使用されるポートです。
OSが自動的に割り当て、通信終了後は再利用が可能になります。
主な用途として、ブラウザの接続、オンラインゲームのクライアント側などに利用されます。
(例)49152番以降: ChromeやFirefoxがサイトに接続する際に使用

https://it-infomation.com/network-port/ より

※ポート番号が0〜65535(2の16乗)まであるというのは、TCP/IPで定義された「理論上のポート番号の範囲」です。これは「各デバイスで使える最大数のポート番号」であって、「各デバイスで常にその数分用意されている」とか「全部同時に使える」というわけではありません。

ポートの使われ方

通信の流れ(例:Webサイト閲覧)

  1. ブラウザが「google.com」にアクセスする
  2. 「Googleのサーバー(IPアドレス)の80番ポート(HTTP)に接続」 とリクエストをブラウザがサーバーに送信
  3. Googleサーバーは「80番ポート経由でHTMLデータを返信」
  4. ブラウザがデータを受け取り、Webページを表示する

仮にポートがないとすると、すべての通信が同じ出入り口に集中してしまい、どのアプリにデータを渡すかわからなくなってしまうという問題が発生します。
例えば、メールのデータがゲームアプリに届いてしまったり、Webサイトのデータが音楽プレイヤーに届いてしまったり、といったことが発生してしまいます。

ポートを意識する場面

ネットワーク設定でポートを指定する
(例)Webサーバーを立てる
「80番ポート(HTTP)を開放する」と設定しないと、外部からアクセスすることができません。
サーバーは一般的に固定ポートを使います。
サーバーを外部から通信可能にするときは、通信するポート番号を決める必要があるため、人が手動で設定する必要があるのです。

まとめ

参考・画像引用元URL

https://novablog.work/how-does-the-internet-work/
https://www.cman.jp/network/term/port/
https://xtech.nikkei.com/it/pc/article/NPC/20070621/275460/
https://www.itbook.info/network/network07.html
https://ascii.jp/elem/000/000/458/458706/
https://it-infomation.com/network-port/

Discussion