title

Top  >> Network / Security Menu  >> ネットワークの基礎  >> ポート番号

ポート番号

 ポート番号

 ポート番号は、OSI 基本参照モデルのトランスポート層において、アプリケーションの識別を行うための番号です。 ルータやファイアウォール、セキュリティ問題においてもポートの概念は非常に重要です。 ポート番号は16ビットで表現される事から、0〜65535の範囲になります。 ネットワークに接続しているホストは、IP アドレスでお互いを認識して通信を行いますが、これだけでは相手を認識できてもアプリケーションまでは認識できません。 そこで、ポート番号とIP アドレスを組み合わせる事で、相手とアプリケーションを識別する事になります。 例えば、あるポート番号と特定のアプリケーションを結び付けておくと、○○のポート番号だからアプリケーションはXXXXだ、というように識別できます。 私達が、Web サイトを閲覧しながら、同時にメールの送受信やファイルの転送を行っても通信が正常であるのは、ポートという概念があるからです。 ポート番号はOS によって管理され、TCP/IP の通信ではプロトコル(TCP やUDP)の他に、送信元IP アドレス、送信元ポート番号、送信先IP アドレス、送信先ポート番号が必要になります。

ポート番号

 例えば、サーバ側でWeb サービスは80番のポートで接続を待ち受けている、メール転送サービスは25番のポートで接続を待ち受けている・・・というようになっています。 クライアントは、Web サイトを閲覧したいのであればWeb サービスを提供しているサーバの80番ポートへ接続を試みます。 Web ブラウザは、デフォルトの状態では80番ポートへ接続するようになっています。 同様に、メールソフトやFTP ソフトも、デフォルトで接続する相手先のポート番号が決められています。 このように、アプリケーションによってデフォルトでポート番号が決められているのは、利便性を高めるために標準化されているからです。 ○○ポートは、XXXXのアプリケーションである事が分かりやすいようになっています。 標準的に決められているポート番号を、「Well-Known ポート」と呼び、0〜1023番までを指します。 トランスポート層には、TCP とUDP というプロトコルがありますが、各ポートはこれらのプロトコルを別に扱うので、プロトコルが別であれば同時に同じポートを使う事ができます。

 一方、接続元であるクライアント側のポート番号は固定的に決められていません。 例えば、80番ポートで待ち受けているWeb サーバへ接続するのには、自分も80番ポートを使うという事はありません。 もしもお互いに80番ポートでWeb サービスを提供しているコンピュータだったならば、お互いの通信が衝突してなり立たなくなります。 このような事を避けるために、接続元であるクライアントが送信元ポート番号として使用するのはWell-Known ポート以外のポートです。 この1024番以降のポートを、「エフェメラルポート」あるいは「ダイナミックポート」と呼びます。 OS は、エフェメラルポートの範囲から空いているポートを動的に選択し、サーバへ接続を試みます。 基本的には、サーバが標準的なサービス(Web やメールなど)を提供する場合はWell-Known ポートを使用し、クライアントはエフェメラルポートを使用しますが、運用上の都合でデフォルトではWell-Known ポートで動作するサービスを、エフェメラルポートで動作させる場合もあります。

 現在使用中のポート番号は、「netstat コマンド」で表示させる事ができます。 Windows ならばコマンドプロンプトから、Linux ならばコンソールから「netstat -a」と入力すれば、プロトコルやホスト、ポート番号の状態が表示されます。 主に使用されるWell-Known ポートの一例を以下に示します。

Well-Known ポートの例
アプリケーション ポート番号
FTP(Data) 20
FTP(Control) 21
SSH 22
Telnet 23
SMTP 25
DNS 53
HTTP 80
POP3 110
NTP 123
netbios-ns 137
netbios-dgm 138
netbios-ssn 139
IMAP 143
SNMP 161
SNMPTRAP 162
HTTPS 443
Microsogt-DS 445
printer 515

このページのTop へ