フルスタックエンジニアのノウハウ
2021.06.26    2022.05.08

ポート番号とは?

ポート番号とは?

この記事の動画版はこちら

チャンネル登録お願いします!


今回は「ポート番号」について、初心者向けに分かりやすく解説していきたいと思います。


・ポート番号というものがよく分からない
・具体的にどのような種類があるのかを知りたい
・セキュリティ的な注意点を知っておきたい


このような方は是非参考にしてみてください。



ポート番号とは?


結論から先に言うと


ポート番号というのは、コンピューター同士が通信する際に使う「通信用のドア」のようなものです。


コンピューター同士は、メールを送受信したり、Webページのデータや入力フォームの内容を送受信したり、FTPソフトを使ってファイルを送受信したり、といったように、ネットワークを介してさまざまなデータの送受信を行っています。


通信する際、相手のコンピューターの場所は「IPアドレス」という、ネットワーク上の住所によって分かります。




※IPアドレスについてはこちら

関連記事

IPアドレスの基礎(まずはここまで知っておこう)


コンピューターの中は、「通信用のドア」がいくつも用意されており、各ドアには番号が付いています。




「FTPで通信する場合は、この部屋に送ってね。」
「メールを送信する場合は、この部屋に送ってね。」
「Webページのデータを通信する場合は、この部屋に送ってね。」


といったように、通信するデータの種類によって、担当するドアが決まっています。


このドアのことを「ポート」といい、ドアに付けられた番号のことを「ポート番号」といいます。


コンピューターをマンションに例えるなら、ポート番号は「部屋番号」のようなイメージですね。



ポート番号の種類


コンピューターには、0番~65535番までの合計65536個のポートが用意されており、大きく3つの区分に分けられます。


①WELL KNOWN PORT NUMBERS(ウェルノウンポート番号)


0番~1023番は、「ウェルノウンポート番号」と呼ばれ、FTP、メール、HTTPといった主要な通信用に割り当てられています。


例えば、以下のような感じで、対応するポート番号があらかじめ予約されています。


FTPは「21番ポート」

SSHは「22番ポート」

メール送信は「25番ポート」

HTTP通信は「80番ポート」

HTTPS通信は「443番ポート」


なお、こういった「通信の種類」のことを「プロトコル」と言うんでしたね。


プロトコルについてはこちら

関連記事

プロトコルとは?



②REGISTERED PORT NUMBERS(登録ポート番号)


1024番~49151番は、「登録ポート番号」と呼ばれ、様々なアプリケーションが利用するために割り当てられています。


例えば、

データベースソフトのMySQLは「3306番」

PostgreSQLは「5432番」

を使用します。



③DYNAMIC AND/OR PRIVATE PORTS(ダイナミック/プライベートポート番号)


49152番~65535番は、「ダイナミック/プライベートポート番号」と呼ばれ、各自が自由に使用して良い番号の領域です。


独自のポート番号を使って通信を行いたいといった場合は、この番号帯を使うようにしましょう。



ポート競合とは?


このように、プロトコルやアプリケーションによって、使用するポート番号は決められています。


しかし、中には全く同じ番号を使うアプリケーションが複数存在する場合もあります。


例えば、HTTP通信に使う「80番ポート」は、Webサーバーの「Apache」やWindowsに標準搭載されている「IIS」、通話アプリの「Skype」なども使用しています。


そのため、これらのアプリケーションを同時に起動しようとすると、必要なポートがすでに使用されている状態となり、後から起動した方はエラーとなり起動することが出来ません。


これが、「ポート競合」という状態です。


ローカルPCにXAMPPをセットアップした際に、よく発生するエラーですね。



セキュリティ上の注意点


コンピューターには、65536個のポートが用意されていますが、その全てが開放されている訳ではありません。




ポートを開放するということは、その分、外部から侵入するための入り口を増やしてしまうということにもなります。


【Hacknet実況シリーズ #1】エンジニアがハッキング・シミュレーターゲーム「HACKNET」をやってみた


攻撃者はまず、対象のコンピューターの開放されているポートの一覧を調べます。


そして、開放されているポートが分かったら、そのポートに対して有効な攻撃手段をとってきます。


そのため、必要最低限のポート以外は開放しないようにするのが安全です。


また、ポートを開放する場合も、完全に一般開放するのか、特定のコンピューターのみに開放するのかといったセキュリティ設定をファイアウォールでしっかり行うようにします。


ちなみに、SSHなどの管理用のポートについては、あえてデフォルトのポート番号(22番)を使わずに独自のプライベートポート番号を割り当てることで、攻撃者に対して分かりづらくするというテクニックもあります。



まとめ


・ポートとは、コンピューター同士が通信する際に使う「通信用のドア」のようなもの
・全部で65536個のポートが用意されている
・ウェルノウンポート番号/登録ポート番号/ダイナミック/プライベートポート番号の3つの区分に分けられている
・プロトコルやアプリケーションごとに使用するポートが決められている
・セキュリティのため不必要なポートは開けないこと



おすすめ記事