テクノロジー

2022年7月22日

ポート番号とは

目次

1. Webとは
2. Webを支えるクライアント / サーバとは
3. HTTPとは
4. URL / HTTPメソッドとは
5. Webアプリケーションとは
6. IPアドレスとは
7. TCP/IPとは
8. ドメイン / DNSサーバとは
9. ポート番号とは
10. 代表的なプロトコル
11. Webアプリケーションを支えるサーバの種類

*上記のリンクにアクセスすることで、続きをDIVER Learningsで確認できます。

ゴール

  • ポート番号のはたらきを理解する

ポート番号とはなにか

TCP/IPの仕組みで、郵便と比較したときに、住所の役割をするのがIPアドレスで、宛名に相当するものがポート番号であることを学習しました。あらためて、ポート番号はどのような役割をするものであるかをより詳しく見ていきます。

もともと、送り主のコンピュータは、相手先のコンピュータとアプリケーション同士の通信を行うために発信をしています。発信された内容を受け取るのは、相手先のコンピュータの同じ種類のアプリケーションです。Webブラウザでやり取りする相手は、Webサーバです。メールクライアントでやり取りする相手は、メールサーバです。
クライアントサーバ型のやり取りでは、クライアント側から発信し、サーバがそれを処理してレスポンスを返します。

あなたの使用するスマートフォンやPCでは、さまざまなアプリケーションが動いています。Web閲覧をするためには、ブラウザを起動して発信します。複数の相手先のコンピュータ(サーバ)に対して、複数の種類のブラウザを立ち上げて発信することもできます。また、同時にメールも利用できます。

今あなたは、一つのブラウザからHTTPを使用して、目的のサーバのURLに対してWeb閲覧をしようと考えます。URLはサーバの住所を示していますが、サーバの中で動いている目的のWebサーバまでは指示できません。相手のサーバでは、あなたのコンピュータと同じようにいろいろなアプリケーションが動いているかもしれません。あなたがやり取りしたいWebサーバを指名する必要があります。また、同時に、あなたがリクエストしたメッセージをサーバが処理した後、そのレスポンスを返すためには、あなたのスマートフォンやPCのIPアドレスだけではなく、どのブラウザから発信されたかを知らなければ、正しくレスポンスを返すことができません。
つまり、同じIPアドレスの場所にあるどの相手かを識別するものが必要になります。これがポート番号です。家の住所はわかるけど、相手の名前を指示しなければ、正しく手紙を渡せません。手紙をもらった相手も、相手の住所だけでなく、名前が分からなければ正しく返信できません。

次の図は、手紙とHTTP通信が、同じような関係でやり取りされていることを示しています。住所は、IPアドレスに相当し、各々の相手先は、ポート番号で識別されます。

Image from Gyazo

TCP/IPでは、TCPのトランスポート層と IPのインターネット層のそれぞれが果たす役割があります。IPパケットを目的の場所に届ける役目をIPプロトコルが行います。該当場所に届いたIPパケットの中身を目的の相手に届けるのは、TCPプロトコルが行います。
TCPは、アプリケーションのメッセージを自身の扱う封筒に入れて(カプセル化して)、送り主のポート番号と宛先のポート番号を書きます。
発信するときに、送信元のアプリケーションに割り振られたポート番号(送信元ポート番号)とともに、目的のコンピュータのポート番号(宛先ポート番号)を指定することで、相手のアプリケーションを特定し、届けることができます。

TCPでもUDPでも、送り主と宛名を表現するものがポート番号になります。繰り返しになりますが、郵便が住所と名前で特定されるように、TCP/IPの通信では、IPアドレスとポート番号で特定されます。

Image from Gyazo

実は、あなたが自分のコンピュータでアプリケーションを起動したとき、あなたの知らないところで、それぞれの起動されたアプリケーションごとにポート番号が自動で割り振られています。
例えば、ブラウザを立ち上げると、自動でランダムにポート番号が割り振られます。ブラウザは、Webクライアントの役割を果たすソフトウェアです。ブラウザとWebサーバを起動したコンピュータとの間で、Webページの閲覧やWeb検索、Webアプリケーションといった通信を行います。

ブラウザは、サービスを提供してもらうために、該当のコンピュータのWebサーバに対して、HTTPリクエストを送信します。このとき、相手先のWebサーバを指定してあげなければ、リクエストを届けても該当のWebサーバに届けることはできません。ポート番号は、TCP/IP通信において、IPアドレスと併せて欠かせない要素になります。

ウェルノウンポートとは

では、先ほどの例で、ブラウザはどのようにして、目的のコンピュータのWebサーバのポート番号を知るのかを学びましょう。

初めて通信する相手のコンピュータで動いているWebサーバのポート番号は、教えてもらわない限りわかりません。
そこで、サービスを提供する側のサーバのアプリケーションに対して、あらかじめ決められたポート番号を割り振っておきます。この周知のポート番号をウェルノウンポートといいます。

主なウェルノウンポートには、次のようなものがあります。

ポート番号 サービス/プロトコル はたらき
20, 21 FTP ファイル転送
22 SSH 暗号化されたリモートコンピュータ接続
23 Telnet リモートコンピュータ接続
25 SMTP メール送信
53 DNS IPアドレス検索
80 HTTP Web通信
110 POP3 メール受信
443 HTTPS 暗号化されたHTTP

先ほどのブラウザの例に倣って見てみましょう。
ブラウザでは、HTTPまたはHTTPSプロトコルを使用して Web通信を行います。Googleのサーバへ接続するとき、例えば次のようなURLを指示します。

http://www.google.com または https://www.google.com

このリクエストの指示では、HTTP、HTTPSのプロトコルを使用するため、ウェルノウンポート番号は、それぞれ80443になりますが、URLには明示されていません。実は、このリクエストの裏には、ポート番号が隠されています。

次のようにブラウザに打ち込んで、送信してみてください。

http://www.google.com:80 または https://www.google.com:443

エラーとならず、指定しないときと同様の結果が返ってくるはずです。
つまり、ウェルノウンポートのときは、いちいちポート番号を指定する必要はなく、省略できるのです。

もし何らかの事情で、GoogleのWebサーバが80443ではなく、他のポート番号で起動されていると、このリクエストは失敗に終わります。ポート番号を指定して起動することも可能なため、ウェルノウンポート番号以外で起動されているWebサーバでは、ポート番号を指定して接続することが必要になります。仮にGoogleのWebサーバがポート番号4000で動いているとすれば、あなたは次のように指定することで、このGoogleのWebサーバに接続できます。

http://www.google.com:4000 または https://www.google.com:4000

まとめ

  • TCP/IP通信において、ポート番号は郵便の宛名に相当し、相手先コンピュータの該当のアプリケーションを特定し、アプリケーション情報を引き渡す上で重要な役割を果たす。
  • ウェルノウンポートは、サーバとなるコンピュータのアプリケーションにあらかじめ周知されたポート番号を提供するもので、ウェルノウンポートを利用することで、標準的なサーバ接続を可能にする。

関連記事

次回:10. 代表的なプロトコル
前回:8. ドメイン / DNSサーバとは

*上記のリンクにアクセスすることで、続きをDIVER Learningsで確認できます。

DIVE INTO CODEのことをもっと知ってみませんか?