InfraAcademy

InfraAcademy Blog

【ITパスポート講座⑦】ポート番号とは?コマンドを打ちながら実践的に理解する

今回の記事ではポート番号について解説します。

ポート番号の概要や、コマンドを使って実践的に理解できるように解説します。結論から言うと、ポート番号とは、同じコンピュータの中で動く複数のサービスのうち、どのサービス宛の通信かを識別するための番号です。

ITパスポート試験では、ポート番号はプロトコルとセットで出題される定番のテーマです。仕組みをおさえたうえで、実際に自分のPCで確認するところまで進めていきましょう。

【ITパスポート講座⑦】ポート番号とは?

では早速、ポート番号について解説します。

まずは、IT用語辞典の定義から見てみましょう。

ポート番号とは、インターネットで標準的に用いられるプロトコル(通信規約)であるTCP/IPにおいて、同じコンピュータ内で動作する複数のソフトウェアのどれが通信するかを指定するための番号。単に「ポート」と略されることもある。

(IT用語辞典より)

つまり、ポート番号とはサービスの番号ということです。

定義だけ読むと難しく感じるかもしれませんが、実はとても身近な仕組みです。順番にかみ砕いていきますね。

ポート番号は役所の窓口

PCやサーバー内ではさまざまなサービスが動作しています。Webページを表示するサービスや、メールを送るサービスなどが、1台の中で同時に動いているのです。

大量のデータが送られてきても、受け付ける窓口がないと、このデータはどのサービスのデータなのか混乱してしまいます。メールサーバーにwebのデータを送っても何も動作しないですよね。

そこでPCはサービスごとに専用の窓口を設けて、メールの通信はメールの窓口で、ウェブの通信はウェブの窓口で受け付けるようになっています。

つまり、役所の窓口のように、サービスごとに窓口を設けているのです。その窓口をポート、窓口の番号をポート番号といいます。

役所でも、住民票の発行は1番窓口、税金の相談は2番窓口のように分かれていますよね。番号を見れば行き先が分かるという点が、ポート番号の役割そのものです。

IPアドレスとポート番号の関係

ポート番号とセットで必ず登場するのが、IPアドレスです。この2つの関係がうまく整理できていない方も多いのではないでしょうか。

IPアドレスは、ネットワーク上のどのコンピュータ宛かを示す住所のような番号です。一方のポート番号は、そのコンピュータの中のどのサービス宛かを示す番号です。

マンションにたとえると、IPアドレスが建物の住所で、ポート番号が部屋番号にあたります。住所だけ書いた荷物では、どの部屋に届ければよいのか分かりませんよね。

住所と部屋番号がそろって初めて荷物が届くように、通信もIPアドレスとポート番号の両方がそろって初めて目的のサービスに届きます。

IPアドレスの仕組みに自信がない方は、IPアドレスのクラスとCIDRを解説した記事を先に読むと理解がスムーズです。

ポート番号の範囲と3つの分類

ポート番号は、好きな数字を自由に使えるわけではありません。使える範囲と役割が、あらかじめ世界共通で決められています。

ポート番号として使えるのは、0から65535までの数値です。16ビットで表現できる範囲で、用途によって大きく3つに分類されています。

範囲 名称 主な用途
0〜1023 ウェルノウンポート HTTPやDNSなど主要サービス用に予約
1024〜49151 登録ポート 特定のアプリケーション用に登録
49152〜65535 ダイナミックポート クライアント側が一時的に使用

このうちITパスポート試験で問われるのは、ほぼウェルノウンポートです。まずは0〜1023の範囲に主要サービスの番号が予約されている、とおさえておきましょう。

ウェルノウンポートとは

ウェルノウンポートは、よく知られたポートという意味です。サーバー側の主要なサービスが使う番号として、世界共通で予約されています。

たとえばWebサーバーは80番、メールの送信は25番と、世界中どこでも同じ対応です。この共通ルールがあるからこそ、初めてアクセスするサーバーとも迷わず通信できるわけです。

クライアント側はダイナミックポートを使う

一方で、通信を始めるクライアント側は、49152〜65535の範囲から空いている番号を一時的に借りて使います。この一時的な番号は、エフェメラルポートとも呼ばれます。

たとえばブラウザでWebサイトを開くとき、自分のPCは50000番前後のポートを使って、相手サーバーの443番へ接続します。通信が終わればその番号は返却される、使い捨ての窓口のようなイメージです。

サーバー側は決まった番号で待ち受けて、クライアント側は一時的な番号を使う。この役割分担が分かると、後で紹介するコマンドの表示も読めるようになりますよ。

サービスごとに決められているポート番号の一覧

ポート番号はサービスごとに決められています。

前回の記事で解説したプロトコルとあわせて、ITパスポートでよく出題されるサービスのポート番号を一覧で紹介します。

サービス ポート番号 役割
FTP tcp/20, tcp/21 ファイル転送
SSH tcp/22 暗号化されるリモート操作
Telnet tcp/23 暗号化されないリモート操作
SMTP tcp/25 メール送信
DNS tcp/53, udp/53 ドメイン名とIPアドレスの変換
DHCP udp/67, udp/68 IPアドレスの自動割り当て
HTTP tcp/80 Webページの閲覧
POP3 tcp/110 メール受信(端末にダウンロード)
NTP udp/123 時刻合わせ
IMAP tcp/143 メール受信(サーバー上で管理)
HTTPS tcp/443 暗号化されるWebページの閲覧

この中でも、HTTPの80番とHTTPSの443番は特に出題されやすい番号です。SSHの22番とTelnetの23番は、暗号化の有無という違いとセットで問われます。

なお、最近のメールは暗号化して送受信するのが主流です。SMTPには587番や465番、POP3には995番、IMAPには993番という暗号化対応のポートもあると知っておくと、実務でも役立ちます。

TCPとUDPの違い

先ほどの表に、tcpとudpの2種類の表記があったことに気づいたでしょうか。

TCPとUDPとは、通信を保証するかどうかの違いです。TCPはPC同士で通信を確立してからデータを送る方式で、UDPは通信が確立しているかどうかに関わらずデータを送る方式です。

比較項目 TCP UDP
信頼性 高い(相手に届いたか確認する) 低い(確認せずに送る)
速度 UDPより遅い 速い
主な用途 Web、メール、ファイル転送 音声通話、動画配信、DNS

確実に届けたいWebやメールはTCPを使います。多少データが欠けても速さを優先したい音声や動画はUDPを使う、という使い分けです。

同じ53番でも、DNSはtcp/53とudp/53の両方に存在します。ポート番号はTCPとUDPのそれぞれに用意されている、という点も覚えておきましょう。

netstatで自分のPCで通信しているポートを確認する

では、netstatというコマンドを使って、自分のPCの通信しているポートを確認してみましょう。

コマンドプロンプトを起動して、以下のコマンドを入力します。

netstat -na

netstat使い方

コマンドを入力すると現在自分のPCで開けられているポート、通信しているポートが表示されます。

WEBに通信すると相手サーバのTCP/80やTCP/443にアクセスしていることが分かります。表示される主な状態の意味は、次のとおりです。

状態 意味
LISTENING 接続を待ち受けているポート
ESTABLISHED 現在通信が確立しているポート
TIME_WAIT 通信を終えて、閉じられるのを待っているポート

外部アドレスの列は、IPアドレス:ポート番号という形式で表示されています。IPアドレスとポート番号がセットで通信していることを、実際の画面でも確認できますね。

ちなみに、netstat -anoとオプションを変えると、そのポートを使っているプロセスIDまで表示されます。どのアプリがポートを開いているのか調べたいときに便利です。

telnetコマンドを使って空いているポートに接続する

次にtelnetコマンドについて説明します。

telnetコマンドは通信先のポートを指定して接続を行うコマンドです。リモートからネットワーク機器やサーバーを操作する用途で、長く使われてきました。

先ほどの一覧で紹介したとおり、Telnet自体も23番ポートを使うサービスとして試験に登場します。今回は、ポートに接続できるかを確かめる道具として使ってみましょう。

では早速使ってみましょう。

まず、telnetコマンドを有効にしましょう。Windowsでは初期状態で無効になっているためです。

コントロールパネルからプログラムへ進み、Windowsの機能の有効化または無効化を開いて、Telnet Clientにチェックを入れます。

telnet有効化1

telnet有効化2

コマンドプロンプトを開いて、以下のコマンドを入力します。

telnet 127.0.0.1 445

文法は telnet “通信先のIPアドレス” “ポート” です。

今回は自分のPC(127.0.0.1)の445番ポートにアクセスしています。127.0.0.1は自分自身を指す特別なIPアドレスで、ループバックアドレスと呼ばれます。

telnet使い方

enterを押して実行すると、、、画面が黒くなりました。

一応アクセスはできていると思います。

telnetは接続に成功しても画面が切り替わるだけなので、結果が少し分かりにくいのが正直なところです。WEBサーバーやメールサーバに対してtelnetでアクセスするとコマンドプロンプトからコマンドを打てるようになります。

PowerShellのTest-NetConnectionなら結果が分かりやすい

もっと手軽にポートの疎通を確認したい方には、PowerShellのTest-NetConnectionがおすすめです。

Windowsに標準で搭載されているため、telnetのような有効化の手順がいりません。PowerShellを開いて、次のように入力します。

Test-NetConnection 127.0.0.1 -Port 445

実行すると、次のような形式で結果が表示されます。

ComputerName     : 127.0.0.1
RemoteAddress    : 127.0.0.1
RemotePort       : 445
TcpTestSucceeded : True

注目するのは、最後のTcpTestSucceededという項目です。Trueなら指定したポートへの接続に成功、Falseなら失敗と、結果がひと目で分かります。

指定したポートに接続できるかの確認は、実務のトラブル対応でも頻繁に行う作業です。試験勉強のついでに、コマンドの存在だけでも覚えておくと得をしますよ。

ポート番号とセキュリティの関係

ポート番号は、セキュリティを今後勉強していく人にも必須の知識です。

なぜなら、不要なポートが開いていると、そこが攻撃者の侵入口になってしまうからです。ポートは通信の窓口なので、開いている窓口が多いほど狙われる場所も増えます。

攻撃者は、ポートスキャンという手法で標的の開いているポートを調べます。開いているポートが分かれば、そこで動いているサービスの弱点を突く攻撃につなげられるからです。

こうした攻撃を防ぐ基本の仕組みが、ファイアウォールです。ファイアウォールは通信のIPアドレスやポート番号を確認して、許可された通信だけを通します。

たとえば公開Webサーバーなら、80番と443番だけを許可して他のポートへの通信は遮断する、という設定にします。使っていないサービスは停止して、ポート自体を閉じておくことも大切な対策です。

先ほどのtelnetが現在あまり使われなくなったのも、セキュリティが理由です。通信が暗号化されないため、いまのリモート操作では暗号化されるSSHが主流になっています。

セキュリティはITパスポートでも配点の大きい分野です。頻出するセキュリティ問題を解説した記事で、続けて対策しておきましょう。

ポート番号のよくある疑問

最後に、ポート番号についてよくある疑問に答えていきます。

ポート番号はすべて暗記する必要がありますか?

すべてを暗記する必要はありません。65536個あるポートのうち、試験で問われるのは先ほどの一覧にある10個前後のウェルノウンポートだけです。

まずはHTTPの80番、HTTPSの443番、SSHの22番といった頻出の番号から覚えましょう。メール系はSMTPが送信で25番、POP3とIMAPが受信で110番と143番のように、役割とセットにすると忘れにくくなります。

ポートが開いているとはどういう状態ですか?

ポートが開いているとは、そのポートでサービスが接続を待ち受けている状態のことです。netstatで確認したLISTENINGが、まさにこの状態でした。

逆に、待ち受けているサービスがないポートは閉じている状態です。閉じたポートに接続しようとしても、通信は成立しません。

ポート番号は自分で変更できますか?

サーバー側の設定を変えれば変更できます。たとえばSSHを22番ではなく別の番号で待ち受けさせる、という運用も実際にあります。

ただし、ウェルノウンポートの対応はあくまで世界共通の標準です。試験対策としては、標準の番号をそのまま覚えておけば大丈夫です。

ネットワーク分野が苦手です。どう勉強すればいいですか?

ポート番号を含むネットワーク分野は、用語の丸暗記だけではイメージがつかめず、つまずきやすい分野です。今回のようにコマンドで実際の動きを見ながら学ぶと、記憶への残り方が変わってきます。

ネットワーク分野の全体像は、ITパスポートのネットワーク分野を解説した記事で整理しています。試験そのものが難しいと感じている方は、合格するための3つの手順も参考にしてください。

まとめ

今回の記事ではポート番号について解説しました。

ポート番号とは、同じコンピュータの中のどのサービス宛かを識別する番号のことでしたね。IPアドレスが住所で、ポート番号が部屋番号という関係もあわせておさえておきましょう。

試験対策としては、ウェルノウンポートの一覧表とTCP・UDPの違いを押さえれば十分に戦えます。80番、443番、22番あたりから、少しずつ覚えていってください。

ポート番号は通信を理解するために必要な知識です。また、セキュリティを勉強していくうえでも土台になる知識です。

ポート番号は基礎的な知識なので、しっかり理解しましょう。ネットワークの基礎をさらに固めたい方は、LANとWANの違いを解説した記事もあわせてご覧ください。

Next Action

記事で読んだ内容を、講座で実装してみましょう

InfraAcademyでは、ブラウザ上でLinuxやネットワークの実践環境を使いながら学習できます。無料で始められる講座から、学習の流れを試せます。

この記事を書いた人

ryu

InfraAcademy運営 / エンジニア

エンジニア歴10年。Linux、ネットワーク、クラウドを中心に、実務で役立つインフラ技術を初心者にもわかりやすく解説しています。

X: @ryu63614894

Related

関連記事

ブログ一覧へ

Roadmap

まずはこの4講座から

ログインすれば無料で始められる講座です。気になったテーマから手を動かして学べます。

講座一覧を見る