見出し画像

コンピュータの中の「トビラ」にデータを届けよう!「ポート番号」の話

はい、こんにちは!松井真也です。シリーズ「ネットワークからアプリへの橋渡し:トランスポート層の世界」第2回でございます!

前回は、このトランスポート層の役割を概観しました。「データ伝送の開始と終わり」を担当するという重要な役割を担っていましたね。そして、主にTCPとUDPというプロトコルがあり、TCPは信頼性を、UDPは速度を優先するのでした。

さて、今回は、ポート番号とは何か?というお話です。クライアントやサーバにデータが届いたとして、どのアプリにデータを配送すればいいのでしょうか?その各アプリへの窓口になるのが、仮想的な経路「ポート番号」です!とても重要な概念ですので、しっかり押さえておきましょう!

では、いってみましょう!

ポート番号とは「ドア」みたいなもの?

ポート番号とは、ITの世界ではよく耳にする言葉ですが、普段はあまり聞きませんね。

簡単に言えば、コンピュータ間の通信を行うために必要な「住所の一部」であり、「ドア番号」みたいなものです。

例えば、あなたが誰かに荷物を送ったとしましょう。その受取人は、マンションの一室に住んでいます。荷物の宛名には、「●●マンション」までしか書いていなかったとしたらどうでしょう?どの部屋に届けていいか分かりませんね?部屋番号まで書かないと困ります。

このたとえでいえば、「●●マンション」はIPアドレス、部屋番号は「ポート番号」、受取人は「アプリケーション」にあたります。

実際、ポート番号は、0から65535までの数字で表される「架空のポート」です。パソコンなどの差込口のように物理的な穴があるわけではないですよ~

これによって、異なるサービスが同時に利用できるわけです。イメージはつかめましたでしょうか?

ポートの種類とその役割

ポート番号には、実は3つの種類があります。「ウェルノウンポート」「レジスタードポート」「エフェメラルポート」という三つのカテゴリです。結構、大事ですので違いを知っておきましょう。

1)ウェルノウンポート(Well-known port)

ウェルノウンポートは、0から1023(10ビットですね)までの番号で、インターネット上でよく使われる重要なサービスが割り当てられています。

例えば、ウェブサイトを閲覧するときに使われるHTTPは80番、より安全な通信を実現するHTTPSは443番として知られています。

「有名なポート」と言われるだけに、20個くらいは頭に入れておきたいところですが、なかなか思い出せないものですよね…。

2)レジスタードポート(Registered Port)

文字通りには、「登録済みポート」ですね。1024から49151までが割り当てられます。このレジスタードポートは、IANAという団体が特定のアプリケーションに割り当てられる番号です。企業や組織が自らのサービス用に予約することが多いです。

3)エフェメラルポート(Ephemeral port)

Ephemeralの意味は、「短命で、はかない」という意味です。IT用語にしては珍しく、少し切ないネーミングをするのですね…。ようは必要なときに一時的に割り当てられる番号のことです。ダイナミックポートととも言います。このネーミングの方が分かりやすいですね。49152~65535番が使われます。

よし3つの分類は分かりましたね!

ポート番号の使い方

では、ポート番号がどう使われるかイメージをはっきりさせていきましょう!

パソコンのブラウザが、ウェブサーバにリクエストする例です。ブラウザの番号は、エフェメラルで61234番、ウェブサーバの番号はセキュアなウェブサービスで443番が使われています。かように、ポート番号はクライアントいもサーバにもあるのです。

ポート番号の概念図

例えてみますか!あなたは、お店でピザを注文します。ここで、お店は「サーバ」で、ピザを注文するあなたは「クライアント」です。

  • サーバが使うポート
    サーバ(お店)が使うポートは、お店の「注文受付窓口」のようなものです。この窓口はお店が決めた固定の場所にあり、例えば「443番窓口」はウェブページの注文を安全に受け取るところです。このように、サーバのポートはあらかじめ特定の目的で決められており、クライアントがそこにアクセスして通信やサービスのリクエスト、注文を行います。

  • クライアントが使うポート
    一方、クライアント(あなた)が使うポートは、「お客さんの注文番号」みたいなものです。注文をするとき、お店にはたくさんのお客さんがいるかもしれませんが、あなたが注文したピザが自分のところに届くように、お店はあなたの注文番号(クライアントのポート)を使って、正確にあなたにピザを届けます。クライアントのポートは通常、その時々でランダムに選ばれ、一時的な通信に使われます。

つまり、サーバのポートは「常設のサービス窓口」、クライアントのポートは「その場限りの注文番号」と考えると、それぞれの役割が理解しやすいと思います。どうでしょう?ああ、ピザ食べたい!


はい、本日はここまで!今回は、重要な概念「ポート番号」についてお話ししました。

では!


この記事が気に入ったらサポートをしてみませんか?