本文へスキップ

ポート番号とは?通信の宛先を区別する仕組みを未経験向けに解説

#ポート番号#ネットワーク#未経験#インフラ学習#TCP/IP

「IPアドレスは分かるけど、ポート番号って結局何のためにあるの?」という疑問は、未経験からインフラを学び始めた人がかなり早い段階でぶつかる壁です。結論から言うと、ポート番号は、同じコンピューターの中で「どのアプリ宛ての通信か」を区別するための番号です。この記事では、ポート番号とは何か、なぜIPアドレスだけでは足りないのか、よく使われるポート番号、ファイアウォールやNATとの関係まで、未経験向けに順番に解説します。

建物(IPアドレス)の中にある複数の部屋(ポート番号)を表したイメージ

ポート番号とは何か

IPアドレスは「どのコンピューター(サーバーやPC)宛ての通信か」を区別するための番号です。一方で、1台のサーバーの中では、Webサーバー・メールサーバー・DNSサーバーのように複数のアプリが同時に動いていることがよくあります。この「同じコンピューターの中で、どのアプリ宛ての通信か」を区別する役割を持つのがポート番号です。

通信の宛先は、IPアドレスとポート番号をセットにして「203.0.113.10の80番」のように表現されます。IPアドレスで建物(サーバー)を指定し、ポート番号でその建物の中の部屋(アプリ)を指定するイメージで捉えると整理しやすくなります。ポート番号は0〜65535の範囲の数字で表され、アプリ側がどの番号で通信を受け付けるかを決めています。

なぜIPアドレスだけでは足りないのか

もしポート番号がなければ、1台のサーバーに届いた通信を、どのアプリに渡せばいいのか判断できません。例えば1台のサーバーでWebサーバーとメールサーバーを同時に動かしている場合、IPアドレスだけでは「Web宛てなのかメール宛てなのか」を区別できないのです。

そこで、サーバー側のOSは受信した通信のポート番号を見て、それを待ち受けているアプリにだけ処理を渡します。利用者側のPCやブラウザも、通信を送るときに宛先のポート番号を指定することで、「このサーバーのこのアプリと話したい」という意図を伝えています。IPアドレスが宛先の建物、ポート番号が宛先の部屋という役割分担があるからこそ、1台のサーバーで複数のサービスを同時に動かせるわけです。

よく使われるポート番号

多くのアプリは、あらかじめ決められた番号(ウェルノウンポート)を使うのが一般的です。代表的なものは次のとおりです。

ポート番号用途補足
80Web(HTTP)暗号化されない通常のWeb通信
443Web(HTTPS)暗号化されたWeb通信。現在の主流
22SSHサーバーへのリモートログインに使う
53DNS名前解決のための通信に使う
25メール(SMTP)メールサーバー間でメールを送る通信

これらの番号は国際的な取り決めで決まっているため、Webサーバーを構築すれば自動的に80番や443番で通信を受け付けるようになっています。番号を覚えることよりも、「アプリごとに決まった番号がある」という考え方を理解しておくことの方が実務では役に立ちます。

ポート番号とファイアウォール・NATの関係

ポート番号は、セキュリティや通信制御の場面でも重要な役割を持ちます。ファイアウォールとは?で解説したように、ファイアウォールは通信を許可・拒否する判断基準の一つとしてポート番号を使います。例えば「22番(SSH)は社内からだけ許可」「443番は誰からでも許可」といった設定が典型的です。

また、NATとは?で扱ったように、1つのグローバルIPアドレスを複数の端末で共有する仕組みでも、ポート番号を使って通信を振り分けています。どの端末からの通信かをポート番号の違いで区別しているため、NATの動きを理解するにはポート番号の考え方が前提になります。

ポート番号を使った通信の多くは、TCPとUDPの違いで解説したトランスポート層の仕組みの上で動いています。障害対応では、次のような切り分けの考え方をよく使います。

  1. 通信できない: 宛先のIPアドレスまで届いているか、ポート番号が許可されているかを分けて確認する
  2. 遅い: 特定のポート番号だけ遅いのか、通信全体が遅いのかを分けて確認する
  3. 一部だけつながらない: ファイアウォールのポート設定が、意図した番号と一致しているかを確認する

現役でインフラの現場にいる立場から言うと、障害調査のときに「80番は通ってるけど443番が通ってない」のように、ポート番号単位で状況を切り分けて報告する場面はかなり多くあります。番号そのものを暗記する必要はありませんが、ポート番号ごとに通信の状態を分けて考えられることが、調査をスムーズに進めるコツです。

InfraDojoで学ぶ

InfraDojoなら、ブラウザ上の演習環境でコマンドを実際に打ちながら、ポート番号が通信のどこに関わっているのかを手を動かして確認できます。IPアドレスやポート番号のようなネットワークの基礎は、知識だけで終わらせず、コマンドの実行結果と結び付けて理解すると定着しやすくなります。ネットワークの学習をどこから始めればいいか迷う場合は、ロードマップで全体の流れを確認しておくと進め方が判断しやすくなります。

よくある質問

Q. ポート番号は自分で自由に決めてよいのですか?

0〜1023番は国際的な取り決めで用途が決まっている番号が多く、Webサーバーなど一般的な用途では決められた番号を使うのが基本です。それ以外の番号は、社内システムの独自アプリなどで使われることもあります。

Q. 同じポート番号を2つのアプリで同時に使えますか?

通常、同じコンピューターの中で同じポート番号を複数のアプリが同時に待ち受けることはできません。1つのポート番号は1つのアプリに割り当てられるのが基本の考え方です。

Q. 未経験のうちからポート番号を覚える必要はありますか?

すべての番号を覚える必要はありません。80・443・22・53あたりの代表的な番号と、「アプリごとに番号で区別する」という考え方を押さえておけば、学習を進める中で必要な番号は自然に身についていきます。

Reo|インフラエンジニアのアイコン

この記事を書いた人: InfraDojo運営者(Reo|インフラエンジニア)

現役インフラエンジニア。SESの現場経験に基づき、未経験からのインフラ転職と学習を支援しています。InfraDojoは、ブラウザ上のターミナルで実際に手を動かして学べるインフラ学習サイトです。

@Reo_engineer_

読むだけで終わらせず、今日から手を動かす

InfraDojoは、ブラウザを開くだけでLinux・ネットワーク・AWSの演習ができる学習サイトです。登録は30秒、最初のコースは無料です。