ネットワーク初心者向け図解:ポート番号って何?仕組みと実例で理解する

IT基礎

1_ポート番号とは

ポートとは各情報機器(端末やサーバ等)におけるネットワーク通信の受付窓口を指しています。ポートは各種機器に複数存在し、利用する通信(アプリケーション)ごとに番号が振られているため、このポート番号を見ることでどのような通信をしているか判別することも出来ます。

バグ太郎
バグ太郎

通信はIPアドレスが分かっていれば相手に届くと思ったのですが、このポート番号は何のために必要なのですか?

C-3PU
C-3PU

IPアドレスが判明していれば、相手方までに届くという認識は間違っていません。ただし、実際の通信は機器の中で動いている特定のサービス(アプリケーション)と取る形になるので、各機器にIPアドレスで情報が届くだけでは通信が成立しません。機器は通常、複数のサービスが同時に稼働しているため、どのサービスと通信を取ろうとしているのか特定する必要があり、そのための識別子がポート番号だと思ってください。

1-1_ポート番号を使用する際の流れを図解

①WebサーバへWeb通信を取る際のPCの出入り口としてポート49153を利用
②サーバまでにたどり着くまでの情報としては、IPアドレスを利用(MACアドレスも併用)
③サーバ側まで通信がたどり着いた後、サーバ内のどのサービス(アプリケーション)と通信を取ろうとしているかは、ポート番号を使用し判断する。

ポート番号を使ってWebサーバへ到達する流れ図。クライアントの送信からサーバの受け口(ポート)までを示す図
C-3PU
C-3PU

簡単に言うとポート番号は「コンピュータの住所(IP)」の中にある「部屋番号」のようなものです。IPが建物の住所なら、同じ住所に複数のサービス(Webやメール、SSHなど)があり、それぞれが別々の部屋(ポート)で動いています。

バグ太郎
バグ太郎

なんとなくわかりました・・・

C-3PU
C-3PU

なれない概念かもしれませんので、初心者は「ポート=サービスの入口」と覚えれば日常的な理解は十分です。

2_TCPとUDPでのポートの扱いの違い

まず、TCPUDP通信が相手方に届くまでの順序制御や信頼性に関するルールを指します。
IPアドレスは機器同士が通信を取る際に相手方にたどり着くまでに必要な情報になりますが、TCPやUDPに代表されるトランスポート層のプロトコルは、どのようにして相手方までたどり着くかを決めたルールになります。※TCPとUDPに関しては、下記記事にて解説しています。

原則、ポート番号はそれぞれに1つのサービス(アプリケーション)が割り振られ、同時に複数のサービスが同じポート番号を利用することはありません。ただし、ポート番号はTCPとUDPそれぞれに用意されているため、【TCP53】と【UDP53】といった組み合わせは同時に利用することが可能です。

2-1_ポート番号の種類

ポート番号には、大まかな区分があり、番号範囲によって大体の用途が決まっております。
なおポート番号は、16ビットで表現されるため、番号の範囲が【0~65535】までとなっております。

種別番号範囲主な用途
ウェルノウンポート0 ~ 1023サーバ用
登録済みポート1024 ~ 49151特定のアプリケーション用
動的/プライベートポート49152 ~ 65535 クライアント用(PC等)
2-2_ポート番号の具体例

よく使用されるポート番号(ウェルノウンポート)について、具体例を見ていきましょう。
基本的にはサーバ側で利用されるポート番号は固定なケースが多く、実務でもよく出てきますが、クライアント側(PC側)にもポートがあり、出入口として利用されていることは忘れないでください。

TCP/UDPポート番号サービス名(用途)
TCP20/21FTP(ファイル転送)
TCP22SSH(リモートログイン)
TCP25SMTP(メール送信)
UDP53DNS(名前解決)
TCP80HTTP(Web通信)
TCP110POP3(メール受信)
TCP443HTTPS(暗号Web通信)

3_ポートの確認・監視コマンド(Windows環境の実例)

実際に現場で使う基本コマンドを覚えると、ポートに対する理解が深まりトラブル対応も早くなります。ここではWidnows PowerShellを使用して自身の端末のポート状態を確認してみましょう

3-1_端末で「待ち受けているポート」を一覧表示する

サンプルコード↓↓↓

Get-NetTCPConnection -State Listen |
  Select-Object LocalAddress, LocalPort, OwningProcess, @{Name='ProcessName';Expression={(Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).ProcessName}} |
  Sort-Object LocalPort

実行結果↓↓↓

Windows PowerShellで待ち受けポートを確認する手順のスクリーンイメージ。コマンドと出力の一部を見せる図
3-2_アクティブなポート状態を観察する

サンプルコード↓↓↓

Get-NetTCPConnection |
  Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort, State, @{Name='ProcessName';Expression={(Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).ProcessName}} |
  Sort-Object -Property State, LocalPort

実行結果↓↓↓

Windows PowerShellでアクティブなポート状態を確認するコマンドの出力結果を示す図

4_セキュリティ対策(不要なポート閉鎖・ポート変更の効果・IDS/IPS)

ポートは各機器のサービス(アプリケーション)の入口となっているため、設定によってはセキュリティのリスクとなり攻撃を受ける可能性があります。対策としては、主に以下が想定されます。

  • セキュリティの基本は「開けるポートは最小限に」が対策になります。
    不要なデフォルトサービスを無効化してポート自体を閉じることが第一です。
  • 特定のサービスのポート番号を変更(例:SSH【リモート接続】を22から別番号へ)することは「隠し場所」を変えるだけで根本対策にはならないが、スクリプト的な自動攻撃を減らす効果はあるため運用上の一環として有用です。
  • IDS/IPSと呼ばれる機器は、異常なポート接続試行を検知・阻止するツールで、ログと組み合わせて侵入の兆候を早期発見できます。

コメント

タイトルとURLをコピーしました