ポート番号とは、コンピュータがTCP/IP通信に使用するプログラムを識別するための番号です。
と説明されても、初心者にとっては理解しづらいはずです。
このページでは、そもそも「ポートって何?」「ポートってなんで必要なの?」という素朴な疑問をお持ちのIT初心者の方向けに初歩の初歩から解説します。
システムエンジニアやプログラマーであれば知らないと恥ずかしい超・基本知識です。是非最後までご覧ください。
コンピューター同士が「通信」をするために
普段何気なく利用しているインターネット。この「インターネット」という仕組みは、一言で説明すると世界中のコンピューターとコンピューター(もしくはサーバー)をつなげた仕組みであると言えます。
今、あなたはこのWebページ(ビズドットオンライン)を開いて「ポート番号とは何か?」について調べています。
このページの情報は日本のとある場所に存在するコンピューター(サーバー)上に保存されているのですが、その情報を取得し画面上に閲覧している、というのがあなたの今の状況です。
つまり、あなたのスマートフォン or PCとビズドットオンラインのサーバーが「通信」を行っているとことです。
そこで気になるのが、「どうやってあなたのスマートフォンとビズドットオンラインのサーバーが通信をしているのか?(どうやってお互いのコンピューターを特定しているのか?)」という点です。
どのコンピューターと通信すれば良いか
インターネットに接続されたコンピューターは世界中で何十億台と存在します。これらの中から適切なコンピューターを探し出し通信を行うためには現実世界でいう「住所」のようなものが必要となってきます。
この「住所」にあたるのが、インターネット上における「IPアドレス」と呼ばれるものです。
IPアドレスはインターネットに接続する全てのコンピュータ(スマートフォン)1つ1つに、割り当てられており、コンピューターを一意に特定することができます。
例えば、googleのサーバーにも「XXX.XXX.XXX.XXX」というIPアドレスが割り当てられています。ブラウザ上に「XXX.XXX.XXX.XXX」というように入力すれば、googleのサーバーに接続することが理論上可能です。
「192.168.100.0」などのIPアドレスの数字が表す意味や、IPアドレスが世界でどのように管理されているか?など、以下のページでより詳しく解説しています。
気になった方は、是非ご覧になってみてください。
したがって、このIPアドレスを便りにあなたは今このWebページを参照することができていると言えます。
住所さえ分かっていれば日本全国どこでも手紙を出すことができるように、インターネットの世界でもIPアドレスさえ分かっていれば、相手先のコンピューターとやり取りすることが可能です。
ポート番号とは?
実は、ポート番号もIPアドレスと似たような役割を持っています。ポート番号も、相手先の居場所を示します。
種類 | 現実世界で例えると・・・ | 例 |
---|---|---|
IPアドレス | 住所 | 東京都千代田区永田町1−1−1 |
ポート番号 | 部屋番号 | 101号室 |
マンションで言えば、IPアドレスが番地までの住所を示すのに対して、ポート番号は部屋番号を表します。
これだけ説明すると、なぜわざわざIPアドレスとポート番号を別に管理する必要があるのか分かりませんね。
ポート番号=プログラムの識別
ご存知のように1つのコンピューターでできることは実に膨大です。「メールを送受信する」「Webページを閲覧する」「ファイルの編集をする」等々。
で、実はこの「メールを送受信する」というプログラムと「Webページを閲覧する」というプログラムは同じコンピューターでも別の部屋に存在しているのがコンピューターの基本の仕組みです。
つまり、「メールを処理するAさん」は101号室に、「ファイル編集をするB」さんは102号室にいるような仕組みになっているので、ポート番号まで適切に記載していないとやりたいことができないのです。
メールを送りたいのであれば「メールを処理するAさん」に依頼を届けなければなりません。「ファイルを編集するBさん」に依頼しても、Bさんはメールの処理の仕方が分からないので何もしてはくれません。
このAさん・Bさんというのは、具体的にいえばプログラムなので、ポート番号はすなわち「プログラムの識別」をしていると説明できます。
ポート番号のルール
ポート番号は0番~65535番まで存在し、かつポート番号ごとに利用するソフトウェアが定められています。
例えば、Webサーバとの通信ではHTTPSがポート443を使用し、メールの送受信にはSMTPがポート25 / POP3がポート110といったように具体的なポート番号が決まっています。
ポート番号は世界共通の仕組みなので、各人が適当に番号を付けていると不都合な部分も出てきてします。
また同時に、自由に使えるようなポート番号もあります。
ここでは、以下の3種類にわけてポート番号を分類して解説していきたいと思います。
ウェルノウン(Well Known)ポート番号:0番~1023番
IANA(Internet Assigned Numbers Authority)という団体によって、あらかじめ用途が決められているポート番号です。0番~1023番がそれに該当します。
メール送信を行う「smtp」という処理を呼び出したいときはポート番号は「25」にしましょう、ファイル転送を行う「ftp」をしたいときは「20」にしましょう、と決められており、これらはWell Knownポート番号と呼ばれます。
ここでは、「へえ、そんなのがあるんだなあ」という程度の理解でOKです。
ポート番号 | サービス名 | 説明 |
---|---|---|
20 | ftp-data | File Transfer [Default Data] |
21 | ftp | File Transfer [Default Data] |
22 | ssh | SSH Remote Login Protocol |
23 | telnet | Telnet |
25 | smtp | Simple Mail Transfer |
53 | domain | Domain Name Server |
67 | bootps | Bootstrap Protocol Server |
68 | bootpc | Bootstrap Protocol Client |
70 | gopher | Gopher |
79 | finger | Finger |
80 | www-http | World Wide Web HTTP |
110 | pop3 | Post Office Protocol - Version 3 |
119 | nntp | Network News Transfer Protocol |
123 | ntp | Network Time Protocol |
137 | netbios-ns | NETBIOS Name Service |
138 | netbios-dgm | NETBIOS Datagram Service |
139 | netbios-ssn | NETBIOS Session Service |
161 | snmp | SNMP |
162 | snmptrap | SNMPTRAP |
179 | bgp | Border Gateway Protocol |
443 | https | http protocol over TLS/SSL |
445 | microsoft-ds | Microsoft-DS |
636 | ldaps | ldap protocol over TLS/SSL |
- QなぜWell Knownポート番号が必要なのか?
- A
Well Knownポート番号があることで、特定のサービスやアプリケーションがどのポート番号を使用するのかが共通認識となります。これにより、ユーザーやシステムが特定のサービスを利用する際に、そのサービスがどのポート番号で動作するのかをあらかじめ知ることができ、通信がスムーズに行われます。
登録(REGISTERED PORT)ポート番号:1024番~49151番
1024から49151までのポート番号の範囲に割り当てられています。この範囲のポート番号は、公式には予約されていないものの、一般的には特定のアプリケーションやサービスが利用することが多くあります。
- Qなぜ登録ポート番号が必要なのか?
- A
今後、どんどんサービスが増えていく未来に備えて。→ウェルノウン(Well Known)ポート番号と同様にちゃんと管理していきましょうというのが登録ポート番号の役割。
参考 登録ポート番号の例
- MySQL(データベース): ポート3306
- PostgreSQL(データベース): ポート5432
- Microsoft SQL Server(データベース): ポート1433
これらはあくまで一例であり、多くの他のアプリケーションやサービスもこの範囲のポート番号を使用しています。
ダイナミック/プライベート(DYNAMIC AND/OR PRIVATE PORTS)ポート番号:49152番~65535番
IANAによる制約がないポート番号です。世界中の誰でも自由に設定することができる範囲です。
自作のWebアプリなどでは、よくポート50000番などが利用されたりしますが、それは50000がIANAの制約がないためです。
さらに、IPアドレスやポート番号など、実践レベルまでスキルを身につけたい!という方は以下の書籍で学習してみましょう!
ネットワーク学習の決定版(ネットワークエンジニアを目指すなら必見!)
↑ページ数が多く誰でも手軽に読める内容ではありませんが、ネットワークエンジニアであれば、ほぼ全員が一度は読んだことがある超・有料書籍。是非一度読破しておきたい1冊のご紹介です。
読者特典> 0から学ぶネットワーク入門