0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

🔌 ポート番号とプロトコルを理解しよう【基礎編】HTTP・HTTPS・SSH・FTP・メール系プロトコルを完全解説!

0
Posted at

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)

ポート番号 用途
3000 React・Next.js・Node.jsの開発サーバー
8000 Python(FastAPI・Django)の開発サーバー
8080 Java・一般的なWebサーバーの代替ポート
3306 MySQL
5432 PostgreSQL
6379 Redis

これらは「登録済みポート」の範囲にあるため、
管理者権限なしで手軽に起動できます。

💡 ウェルノウンポート(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モデル・セキュリティ(近日公開)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?