「HTTPとHTTPSの違いは?」「TCPとUDPはどう使い分けるの?」この記事ではWebエンジニアが必ず知っておくべきTCPとUDP、そしてHTTP・HTTPSの仕組みを解説します。
TCPとUDPの違い
| 比較項目 | TCP | UDP |
|---|---|---|
| 正式名称 | Transmission Control Protocol | User Datagram Protocol |
| 接続の確立 | 3ウェイハンドシェイクで確立 | 接続なし(コネクションレス) |
| 信頼性 | 高い(データ到達・順序を保証) | 低い(到達・順序を保証しない) |
| 速度 | 遅い(確認応答のオーバーヘッド) | 速い(オーバーヘッドが少ない) |
| 主な用途 | Web・メール・ファイル転送・SSH | DNS・動画ストリーミング・ゲーム・VoIP |
| プロトコル例 | HTTP・HTTPS・FTP・SMTP・SSH | DNS・DHCP・NTP・QUIC |
TCPの3ウェイハンドシェイク
TCPで通信を始める前に、送受信双方が「準備OK?」を確認し合う手順が3ウェイハンドシェイクです。
クライアント サーバー
| |
|--- SYN(接続要求)----→ |
| |
|←-- SYN-ACK(承認)--- |
| |
|--- ACK(確認応答)----→ |
| |
|====通信開始=========== |ポート番号と主要プロトコル
| ポート番号 | プロトコル | 用途 |
|---|---|---|
| 20・21 | FTP | ファイル転送 |
| 22 | SSH | 安全なリモートログイン |
| 25 | SMTP | メール送信 |
| 53 | DNS | 名前解決(TCP・UDP両方) |
| 80 | HTTP | Web通信(暗号化なし) |
| 443 | HTTPS | Web通信(TLS暗号化あり) |
| 3306 | MySQL | MySQLデータベース |
| 5432 | PostgreSQL | PostgreSQLデータベース |
HTTPとHTTPSの違い
HTTPは通信内容が平文(暗号化なし)のため、盗聴・改ざんのリスクがあります。HTTPSはTLS(Transport Layer Security)で通信を暗号化するため、パスワードやクレジットカード情報を安全に送れます。
# Linuxで使用中のポートを確認
ss -tlnp # TCP listening ポート一覧
ss -ulnp # UDP listening ポート一覧
nmap localhost # ローカルの開放ポートスキャン
# 特定ポートへの接続テスト
curl -v http://example.com:80
nc -zv example.com 443 # netcat でポート接続確認
# curlでHTTPS通信の詳細確認
curl -v https://example.com 2>&1 | grep -E "TLS|SSL|cipher"「なぜかAPIにつながらない」というトラブルで、ファイアウォールが443番ポートを閉じていただけということが実務では珍しくありません。ss -tlnpでサーバー側のポートが開いているか、ファイアウォールのルールを確認するのが先決です。
hobbyshift管理人
まとめ
- TCPは信頼性重視(Web・SSH・メール)、UDPは速度重視(DNS・ストリーミング)
- TCP通信は3ウェイハンドシェイクで接続確立してからデータ送受信を開始する
- ポート番号は通信の種類を区別するために使われる(80=HTTP・443=HTTPS・22=SSH)
- HTTPSはTLSで暗号化された安全なHTTP通信。現代のWebサイトでは必須


コメント