ポートとは、ネットワークでデータを通信するための扉のようなものだと思うとわかりやすいだろう。ポート番号はその扉の番号だ。
それぞれプログラムの種類によって、使うポート(扉)が違う。例えば、メールを送るにはこの扉、メールを受け取るにはこの扉、Webページを見てもらうのはこの扉、などと決まっているわけだ。
このページではポートとポート番号について初心者向けにわかりやすくご紹介しよう。
目次
そもそもポートとは?
実際TCPやUDPで通信を行うときは、コンピュータ一台という単位ではなく「プログラム単位」つまり「プロセスやスレッド単位」で通信が行われる。そのためプロセス同士、正しく受け渡しをする必要がある。
このとき通信しているプロセスには「ポート番号」というものが割り振られる。プロセスやスレッドはこのポート番号を目印にして、どのアプリケーションとどのアプリケーションが通信をとっているのかを判別することになる。
ポート番号
IPアドレスを建物の住所に例えるなら、ポート番号は「部屋の番号は何号室か?」という例えになる。コンピュータネットワークにおいて、プロトコル、IPアドレスとポート番号はまとめると、「どのような方法」で「どこ」の「何号室」に通信をとるのか?という形にいいかえることが出来る。
通信において重要なポート番号だがポートを開くということは、特定の部屋の扉をあけはなっている状態に等しいので、サービスを提供するサーバでもないかぎり、基本的に不必要なポートは開かないように設定しておかなければならない。
代表的なポート番号とプロトコル
それぞれ「どの様なプロトコルがどの様なポート番号で運用されるのか?」代表的な例をあげると以下のようになる。
- TCP 20 : FTP (データ)
- TCP 21 : FTP (制御)
- TCP 22 : SSH
- TCP 23 : Telnet
- TCP 25 : SMTP
- UDP 53 : DNS
- UDP 67 : DHCP(サーバ)
- UDP 68 : DHCP(クライアント)
- TCP 80 : HTTP
- TCP 110 : POP3
- UDP 123 : NTP
- TCP 443 : HTTPS
- WELL KNOWN PORT NUMBERS 0~1023
ポートとIPアドレスとプロトコルの例をあげるとWebサーバなどだろう。
特定のIPアドレス上で公開されているサーバ上で、HTTPというプロトコルにそったアプリケーション、Apacheなどが80番ポートで、クライアントとの通信を待機し、要求に応じてWebページの情報を送信するといった流れだ。
他のサービスも同様に特定のサーバ上でプロトコルを実装したアプリケーションを任意ポートもしくはウェルノウンポートを開放しサービスを提供することになる。
ウェルノウンポート番号
実際ポート自体は0から65535まで存在するが、そのなかでも0~1023までを「ウェルノウンポート番号」という。これらはIANAという団体により管理されている。
「よく知られているポート番号」というまさしくそのままの意味だ。
TCP/IPやUDPにおいて通信で利用されるポート番号のうち、メジャーなサービスやプロトコルが利用するために予約されているポート番号のことである。
80がHTTP、22がSSHとあるように、メジャーなサービスはポート番号が一般的に決め打ちされている。
それらはサービスごとに設定ファイルを編集し、待受のポート番号を変更することも可能だ。セキュリティの関係上意図的にポート番号を変更することもしばしあるが、基本的にはウェルノウンポート番号を使用するようにしよう。
レジスタードポート番号
1024~49151こちらもIANAで管理されている。
特定のアプリケーションなどが使用することになっているポート郡である。IANAが登録を受け付け、公開している。
その他のポート番号
49152~65535はユーザが自由にとりあつかえるポート番号となっている。IANAに登録をする必要もない。
ポート番号に関しては「実際どのサービスをどのポートで動かすのか?」というのは絶対の決め打ちが存在するわけではないので、任意で管理、わりふって使用することも出来る。
ポートの開放とセキュリティ
昨今のコンピュータは処理力が非常に高く、パーソナルなマシンの上でもサーバとして常駐するアプリケーションも増えている。
サーバとして機能するアプリケーションの場合、ローカル内だけでなく外部からの情報にも応答するようになっている場合がほとんどだろう。このサーバとして機能するアプリケーション、サーバアプリケーションはサービスを提供するため必然的にポートを開放することになる。
しかしサーバアプリケーションにセキュリティホールがあった場合、最悪サーバが乗っ取られる、もしくはサービスを提供できなくなる場合もある。サーバとして機能するアプリケーションは慎重に検討する必要がある。
そのほかにも、サーバとして動作しているコンピュータの場合「どのポートが開放されているのか?」「意図しないポートは開いていないか?」などを確認する必要がある、実働前にペネトレーションテストを行い、実際にポートスキャンし、状態を把握することを心がけよう。
ポートを閉じる方法
Firewallを使うのが一般的だ。下記の記事で詳しく解説している。
まとめ
このページではポート番号についてまとめてお伝えした。
ウェルノウンポートを使うと反対にセキュリティが落ちるということもあるが、一般的にはこの番号の通りに運用されているはずだ。
よく使うものは覚えてしまうと、ベテランエンジニアとの会話もスムーズに行くだろう。
ポート番号
通信において重要なポート番号だがポートを開くということは、特定の部屋の扉をあけはなっている状態に等しいので、サービスを提供するサーバでもないかぎり。基本的に不必要なポートは開かないように設定しておかなければならない。
かぎり の次は、句点ではなく、読点でしょうか。
ご指摘いただきありがとうございます。
該当箇所修正致しました。
引き続き、ご愛読の程宜しくお願い致します。
ポート番号について、ずっと生半可な概念だけで生きてきました。Apacheを使わなければならなくなって混乱していたところ、すごくいいページに出会えました。本当にありがとうございます。