1. 👋 はじめに
「ポート番号って何?」
「プロトコルってよく聞くけど、何のこと?」
「HTTPとHTTPSって何が違うの?」
Web開発をしていると必ず出てくるこれらの疑問。
今回は プロトコルとポート番号の基礎 を、初心者向けにやさしく解説します!
この記事を読めば:
- ✅ プロトコルとは何かがわかる
- ✅ ポート番号の役割がわかる
- ✅ 必ず覚えるべき基本プロトコルとポート番号がわかる
- ✅ ポート番号の3つの分類がわかる
2. 📡 プロトコルとは?
一言で言うと
プロトコル(Protocol)とは「コンピュータ同士が通信するための決まりごと(規約)」です。
身近な例で理解する
🤝 人間同士の会話でも「プロトコル」がある
日本語で話す場合:
「こんにちは」→「こんにちは」→ 会話が成立 ✅
片方が英語・片方が日本語:
"Hello" →「こんにちは?」→ 会話が成立しない ❌
→ 同じルール(言語)を使わないと通信できない!
コンピュータも同じ:
同じプロトコルを使わないとデータのやり取りができない
プロトコルの役割
プロトコルは以下のことを定めています:
| 決まりごと | 説明 |
|---|---|
| データの形式 | どんな形でデータを送るか |
| 通信の手順 | どの順番でやり取りするか |
| エラーの処理 | 失敗したときどうするか |
| セキュリティ | 暗号化するかどうか |
3. 🚪 ポート番号とは?
一言で言うと
ポート番号とは「サーバーのどのアプリケーションにアクセスするかを指定する番号」です。
0〜65535 までの番号があります。
マンションの例え
🏢 サーバー = マンション
🚪 ポート番号 = 部屋番号
🌐 IPアドレス = マンションの住所
住所(IPアドレス)だけではどの部屋(サービス)に
アクセスしたいかわからない。
部屋番号(ポート番号)まで指定することで
はじめて「どのサービスにアクセスするか」が決まる!
例:
192.168.1.1:80 → Webサーバー(部屋80番)
192.168.1.1:443 → HTTPSサーバー(部屋443番)
192.168.1.1:22 → SSHサーバー(部屋22番)
192.168.1.1:3306 → MySQLサーバー(部屋3306番)
URLにもポート番号が隠れている
https://example.com/users
実際には:
https://example.com:443/users
→ HTTPSのデフォルトポートは443なので省略されている!
http://localhost:3000
→ これは明示的にポート3000を指定している
→ Reactの開発サーバーなどでよく見る
4. 🗂️ ポート番号の3つの分類
ポート番号は用途によって3つに分類されます。
| 分類 | 範囲 | 説明 | 例 |
|---|---|---|---|
| ウェルノウンポート | 0〜1023 | 標準的なサービスに割り当てられた番号 | HTTP(80)・HTTPS(443)・SSH(22) |
| 登録済みポート | 1024〜49151 | 特定のアプリが使うために登録された番号 | MySQL(3306)・PostgreSQL(5432)・React開発(3000) |
| 動的ポート | 49152〜65535 | 一時的な通信に使われる番号 | OSが自動で割り当てる |
💡 Web開発でよく使う登録済みポート(1024〜49151)
ポート番号 用途 3000React・Next.js・Node.jsの開発サーバー 8000Python(FastAPI・Django)の開発サーバー 8080Java・一般的なWebサーバーの代替ポート 3306MySQL 5432PostgreSQL 6379Redis これらは「登録済みポート」の範囲にあるため、
管理者権限なしで手軽に起動できます。
💡 ウェルノウンポート(0〜1023)を使うには管理者権限が必要です。
Linuxでは一般ユーザーが1023番以下のポートを使おうとするとエラーになります。なぜ管理者権限が必要なのか?
悪意ある一般ユーザーが勝手に80番(HTTP)や22番(SSH)を立ち上げて、
偽のWebサーバーや偽SSHサーバーを作ることを防ぐためです。
管理者権限が必要にすることで「重要なポートは信頼できる人だけが使える」仕組みになっています。開発時に3000番・8000番などを使うのは、
これらが管理者権限なしで使える「登録済みポート」の範囲にあるためです。
5. 🌐 HTTP / HTTPS(ポート 80 / 443)
HTTPとは?
HTTP(HyperText Transfer Protocol)は「Webページのデータをやりとりするためのプロトコル」です。
バックエンド基礎講座の第一回でも登場しましたね。
ポート番号:80
使う場面:Webブラウザとサーバーの通信
特徴:暗号化なし(通信内容が見える)
HTTPSとは?
HTTPS(HTTP Secure)は「HTTPにTLS暗号化を加えたプロトコル」です。
ポート番号:443
使う場面:現代のほぼすべてのWebサイト
特徴:通信が暗号化されている(盗聴・改ざんを防ぐ)
HTTPとHTTPSの違い
HTTP(暗号化なし):
クライアント ──── パスワード: "password123" ──── サーバー
↑ 第三者に丸見え! 😱
HTTPS(暗号化あり):
クライアント ──── ********************** ──── サーバー
↑ 暗号化されて読めない ✅
| HTTP | HTTPS | |
|---|---|---|
| ポート番号 | 80 | 443 |
| 暗号化 | ❌ なし | ✅ TLSで暗号化 |
| URLの先頭 | http:// |
https:// |
| 現代での使用 | ほぼ使われない | 標準 |
| SEOへの影響 | 不利 | 有利 |
⚠️ 現代では HTTP は使わず HTTPS を必ず使いましょう!
GoogleもHTTPSを使わないサイトのSEO評価を下げています。
6. 🔐 SSH(ポート 22)
SSHとは?
SSH(Secure Shell)は「サーバーに安全にリモート接続するためのプロトコル」です。
暗号化された通信でサーバーのコマンドラインを操作できます。
ポート番号:22
使う場面:リモートサーバーへのログイン・ファイル転送
特徴:強力な暗号化・公開鍵認証に対応
【SSHの使い方のイメージ】
自分のPC ──→ SSH接続(暗号化) ──→ リモートサーバー
↓
コマンドを実行できる!
ls / cd / python app.py
SSHの公開鍵認証
【パスワード認証(古い方法)】
ブルートフォース攻撃(総当たり)のリスクがある
【公開鍵認証(現代の標準)】
秘密鍵(自分だけが持つ)と
公開鍵(サーバーに登録)のペアで認証
→ パスワードなしで安全にログインできる
→ GitHubへのSSH接続でもおなじみ!
💡 SSHのポートを22から変更するのがセキュリティの定番!
攻撃者はポート22に対して自動的に攻撃を仕掛けてくることが多いため、
本番サーバーではSSHのポートを2222などに変更することがよくあります。
7. 📁 FTP / SFTP(ポート 21 / 22)
FTPとは?
FTP(File Transfer Protocol)は「ファイルを転送するためのプロトコル」です。
ポート番号:21(制御)・20(データ転送)
使う場面:ファイルのアップロード・ダウンロード
特徴:暗号化なし(現代ではほぼ使わない)
SFTPとは?
SFTP(SSH File Transfer Protocol)は「SSHの仕組みを利用したファイル転送プロトコル」です。
ポート番号:22(SSHと同じ)
使う場面:サーバーへの安全なファイル転送
特徴:SSHで暗号化されている → FTPより安全
FTP → 暗号化なし ❌ → 現代では非推奨
SFTP → SSH暗号化あり ✅ → こちらを使う
💡 SFTPはFTPを暗号化したものではありません!
よく「FTPをSSLで暗号化したもの」と混同されますが、
SFTPは SSHのサブシステム(拡張機能) としてファイル転送を実現する
まったく別のプロトコルです。だからこそポート番号もSSHと同じ 22番 を使い、
SSH認証(公開鍵認証など)をそのまま利用できます。※ FTPをTLS/SSLで暗号化したものは「FTPS」と呼ばれ、SFTPとは別物です。
8. 📧 メール系プロトコル(ポート 25 / 110 / 143 / 465 / 587 / 993 / 995)
メールに関わる3つのプロトコル
メールの送受信には複数のプロトコルが関わっています。
【メールの流れ】
送信者 受信者
↓ ↑
SMTP ──→ 送信サーバー ──→ 受信サーバー ──→ POP3/IMAP
(送信) (受信)
SMTP(ポート 25 / 587 / 465)
SMTP(Simple Mail Transfer Protocol)は「メールを送信するためのプロトコル」です。
| ポート | 役割 | 使う場面 | 暗号化 |
|---|---|---|---|
| 25 | サーバー間のメール転送 | メールサーバー同士のやり取り | ❌ |
| 587 | メールクライアントからの送信 | GmailアプリやThunderbirdからの送信 | ✅ STARTTLS |
| 465 | SSL/TLSを使った送信 | セキュアな送信(587の代替) | ✅ SSL/TLS |
💡 個人がメールを送るとき(GmailやThunderbirdなど)は587番を使います。
25番はスパム対策でISP(インターネットプロバイダ)によってブロックされていることが多いです。
POP3(ポート 110 / 995)
POP3(Post Office Protocol 3)は「メールをサーバーからダウンロードして受信するプロトコル」です。
ポート番号:110(暗号化なし)・995(SSL/TLS)
特徴:
- メールをダウンロードしてサーバーから削除
- 1台のデバイスでのみ読む場合に向いている
- 現代ではIMAP推奨
IMAP(ポート 143 / 993)
IMAP(Internet Message Access Protocol)は「サーバー上のメールをそのまま管理するプロトコル」です。
ポート番号:143(暗号化なし)・993(SSL/TLS)
特徴:
- メールをサーバーに残したまま管理
- 複数デバイスで同じメールを確認できる
- Gmailなど現代のメールサービスはこちらが主流
POP3:ダウンロードして削除 → 1台専用
IMAP:サーバーに残して管理 → 複数デバイスで共有 ✅
9. 🌐 DNS(ポート 53)
DNSとは?
DNS(Domain Name System)は「ドメイン名をIPアドレスに変換するプロトコル」です。
インターネットの「電話帳」とも呼ばれます。
ポート番号:53(UDP・TCP両方)
使う場面:ドメイン名の解決(自動的に使われる)
【DNSの仕組み】
ブラウザで「example.com」と入力
↓
DNSサーバーに問い合わせ
「example.com のIPアドレスは?」
↓
「93.184.216.34 です」
↓
93.184.216.34 のサーバーにアクセス
↓
Webページが表示される!
💡 DNSはUDPとTCPの両方を使います。
プロトコル 使う場面 理由 UDP(ポート53) 通常のドメイン名前解決 データが小さく・高速性が求められるため TCP(ポート53) DNSサーバー同士の同期(ゾーン転送)・応答データが大きい場合 確実にデータを届ける必要があるため 普段は速さ重視のUDPを使いますが、
大きなデータを送るときやDNSサーバー同士の同期には確実性重視のTCPを使います。
TCPとUDPの違いは応用編で詳しく解説します!
10. 📋 基本プロトコルとポート番号 一覧表
| プロトコル | ポート番号 | 用途 | 暗号化 |
|---|---|---|---|
| HTTP | 80 | Web通信 | ❌ |
| HTTPS | 443 | 暗号化Web通信 | ✅ TLS |
| SSH | 22 | リモート接続・SFTP | ✅ |
| FTP | 21 | ファイル転送 | ❌ |
| SFTP | 22 | 安全なファイル転送 | ✅ SSH |
| SMTP | 25 / 587 | メール送信 | △ / ✅ |
| POP3 | 110 / 995 | メール受信(ダウンロード) | ❌ / ✅ |
| IMAP | 143 / 993 | メール受信(サーバー管理) | ❌ / ✅ |
| DNS | 53 | ドメイン名解決 | △ |
11. 🎯 まとめ
| 概念 | 一言で言うと |
|---|---|
| 📡 プロトコル | コンピュータ同士の通信の決まりごと |
| 🚪 ポート番号 | サーバーのどのアプリにアクセスするかを示す番号 |
| 🌐 HTTP/HTTPS | Web通信のプロトコル(現代はHTTPS必須) |
| 🔐 SSH | 安全なリモート接続のプロトコル |
| 📁 FTP/SFTP | ファイル転送(現代はSFTP推奨) |
| 📧 SMTP/POP3/IMAP | メールの送受信プロトコル |
| 🌐 DNS | ドメイン名をIPアドレスに変換 |
ポート番号は「サーバーの部屋番号」
IPアドレスで建物(サーバー)を特定し、
ポート番号で部屋(サービス)を特定する。
この組み合わせで「どのサービスと通信するか」が決まります💪
次回は 応用編 として、TCPとUDPの違い・OSI参照モデル・
開発でよく使うポート番号・ファイアウォールとセキュリティを解説します🌟
💬 質問や感想があれば、コメント欄でお気軽にどうぞ!
👍 役に立ったら、いいね&ストックをお願いします!
🎓 ここまで読んでくださって、本当にありがとうございました!
🔗 シリーズ記事
- 【基礎編】プロトコルとポート番号の基本(この記事)
- 【応用編】TCP・UDP・OSIモデル・セキュリティ(近日公開)