【初心者わかりやすく】TCP/UDPポート番号のイメージ

HTTP は TCP の 80 番、DNS は UDP の 53 番のように、通信の話ではポート番号がよく出てきます。学び始めたころは「IP アドレスがあるのに、なぜポート番号も必要なのか」と疑問に思うかもしれません。

この記事では、細かい正確さより全体のつかみやすさを優先して、ポート番号をマンションの部屋番号にたとえて説明します。

この記事でわかること
  1. IP アドレスとポート番号の役割の違い(マンション名と部屋番号)
  2. ウェルノウンポートと、クライアントが使うポートの違い
  3. リクエストとレスポンスで、送信元と宛先のポート番号がどう入れ替わるか

ポート番号のイメージ

部屋が6万5千室以上もある、超大型のマンションを思い浮かべてください。しかもこのマンションには、TCP 棟と UDP 棟の2棟があります。

TCP 棟49152〜65535 号室動的ポート(空き部屋を一時的に使う)1024〜49151 号室登録済みポート0〜1023 号室ウェルノウンポート80 号室:HTTP サーバさんUDP 棟49152〜65535 号室動的ポート(空き部屋を一時的に使う)1024〜49151 号室登録済みポート0〜1023 号室ウェルノウンポート53 号室:DNS サーバさんマンション名192.168.1.1= IP アドレス
図1 IP アドレスはマンション名、ポート番号は部屋番号

マンション名が IP アドレスです。IP アドレスが「インターネットの住所」といわれるのも、このイメージからわかると思います。そして各部屋には、アプリケーションが住んでいます。部屋番号がポート番号です。

ポート番号は 0〜65535 の範囲で、TCP と UDP で別々に数えます。同じ 53 番でも、TCP 棟の 53 号室と UDP 棟の 53 号室は別の部屋です。

0〜1023 号室は、住む人が決まっています。たとえば、TCP 棟の 80 号室には HTTP サーバさんが、UDP 棟の 53 号室には DNS サーバさんが住みます。このように、よく使うサービスのために決められた番号をウェルノウンポート(Well-Known Port)といいます。

範囲呼び方主な使われ方
0〜1023ウェルノウンポートHTTP(80)や DNS(53)など、代表的なサービスの番号
1024〜49151登録済みポート特定のアプリケーション向けに登録された番号
49152〜65535動的・プライベートポートクライアントが通信のたびに一時的に使う番号
サービスプロトコルポート番号
FTPTCP20、21
SSHTCP22
TelnetTCP23
SMTPTCP25
DNSUDP(TCP も使う)53
DHCPUDP67(サーバ)、68(クライアント)
HTTPTCP80
NTPUDP123
SNMPUDP161
HTTPSTCP443

通信のイメージ

192.168.100.1 マンションにいる HTTP クライアントさんが、192.168.1.1 マンションの HTTP サーバさんへ荷物を届ける場面を考えます。

クライアントさんは、住む人が決まっていない部屋のうち、空いている部屋にまず住みます。ここでは 10000 号室に住み始めたとします。そして、192.168.100.1 マンションの 10000 号室から、192.168.1.1 マンションの TCP 棟 80 号室宛てに荷物を送ります。これで HTTP サーバさんに荷物が届きます。

HTTP クライアント192.168.100.1HTTP サーバ192.168.1.11000080リクエストレスポンス送信元 192.168.100.1:10000宛先 192.168.1.1:80送信元 192.168.1.1:80宛先 192.168.100.1:10000
図2 リクエストとレスポンスのポート番号

マンション名だけでは、荷物は自分の部屋に届きません。それと同じで、IP アドレスだけでは、どのアプリケーション(どの部屋)に渡せばよいかがわからず、データを届けられません。

HTTP サーバさんが返事をするときは、受け取った荷物の差出人が 192.168.100.1 マンションの 10000 号室だとわかるので、そこへ返します。返事では、送信元と宛先が入れ替わり、送信元が 80 番、宛先が 10000 番になります。

補足
  • クライアントが使う送信元ポートは、OS が空いている番号から自動で選びます。どの範囲から選ぶかは OS や設定によって違います。この記事の 10000 番は説明用の例です。
  • ブラウザでタブを2つ開いて同じサーバにつなぐと、それぞれ別の送信元ポートを使います。通信は「送信元 IP、宛先 IP、送信元ポート、宛先ポート、プロトコル」の組み合わせで区別されるので、返事が混ざることはありません。

通信が終わると、クライアントさんは部屋を出ます(ポートを解放します)。一方、HTTP サーバさんは、いつ荷物が届いてもよいように 80 号室に住み続け、待ち受けを続けます。

まとめ

たとえ実際役割
マンション名IP アドレスどの機器に届けるかを決める
TCP 棟と UDP 棟TCP と UDPポート番号は TCP と UDP で別々に数える
部屋番号ポート番号機器の中のどのアプリケーションに渡すかを決める
住む人が決まった部屋ウェルノウンポート(0〜1023)サーバが待ち受けに使う代表的な番号
空き部屋に一時的に住むクライアントの送信元ポート通信のたびに OS が空いている番号を選ぶ

これがポート番号のざっくりしたイメージです。この感覚を持ったうえで TCP/IP の参考書などを読むと、理解が深まると思います。

 

コメント