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

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

IPアドレスが判明していれば、相手方までに届くという認識は間違っていません。ただし、実際の通信は機器の中で動いている特定のサービス(アプリケーション)と取る形になるので、各機器にIPアドレスで情報が届くだけでは通信が成立しません。機器は通常、複数のサービスが同時に稼働しているため、どのサービスと通信を取ろうとしているのか特定する必要があり、そのための識別子がポート番号だと思ってください。
1-1_ポート番号を使用する際の流れを図解
①WebサーバへWeb通信を取る際のPCの出入り口としてポート49153を利用
②サーバまでにたどり着くまでの情報としては、IPアドレスを利用(MACアドレスも併用)
③サーバ側まで通信がたどり着いた後、サーバ内のどのサービス(アプリケーション)と通信を取ろうとしているかは、ポート番号を使用し判断する。


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

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

なれない概念かもしれませんので、初心者は「ポート=サービスの入口」と覚えれば日常的な理解は十分です。
2_TCPとUDPでのポートの扱いの違い
まず、TCPとUDPは通信が相手方に届くまでの順序制御や信頼性に関するルールを指します。
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 | ポート番号 | サービス名(用途) |
|---|---|---|
| TCP | 20/21 | FTP(ファイル転送) |
| TCP | 22 | SSH(リモートログイン) |
| TCP | 25 | SMTP(メール送信) |
| UDP | 53 | DNS(名前解決) |
| TCP | 80 | HTTP(Web通信) |
| TCP | 110 | POP3(メール受信) |
| TCP | 443 | HTTPS(暗号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
実行結果↓↓↓

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
実行結果↓↓↓

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



コメント