TCP/IPとは
TCP/IP(Transmission Control Protocol/Internet Protocol)は、インターネットで使用される通信プロトコルの集まりです。1970年代にARPANET(インターネットの前身)で開発され、現在のインターネット通信の基盤となっています。
「TCP/IP」という名前は、最も重要な2つのプロトコルであるTCPとIPを組み合わせたものですが、実際には多くのプロトコル(HTTP、FTP、SMTP、DNSなど)を含むプロトコル群を指します。
ポイント: TCP/IPは「プロトコルスタック」とも呼ばれ、各層が特定の役割を担当する階層構造になっています。この設計により、各層を独立して改良・置換できます。
TCP/IPの4層モデル
TCP/IPは4つの層で構成されています。OSI参照モデルの7層と比較すると、より実用的にまとめられています。
| 層 | 名称 | 役割 | 主なプロトコル |
|---|---|---|---|
| 4 | アプリケーション層 | アプリケーション固有の通信処理 | HTTP, HTTPS, FTP, SMTP, DNS, SSH |
| 3 | トランスポート層 | エンドツーエンドの通信制御 | TCP, UDP |
| 2 | インターネット層 | IPアドレスによる経路制御 | IP, ICMP, ARP |
| 1 | ネットワークインターフェース層 | 物理的なネットワーク接続 | Ethernet, Wi-Fi |
データの流れ(カプセル化)
データを送信する際、各層で「ヘッダ」が追加されていきます。これをカプセル化と呼びます。
- アプリケーション層: アプリケーションデータを生成
- トランスポート層: TCPヘッダ(ポート番号、シーケンス番号など)を追加 → セグメント
- インターネット層: IPヘッダ(送信元/宛先IPアドレスなど)を追加 → パケット
- ネットワークインターフェース層: Ethernetヘッダ(MACアドレスなど)を追加 → フレーム
IPの役割 - 住所による配達
IP(Internet Protocol)は、パケットを宛先まで届ける役割を担います。郵便システムに例えると、「住所を見て手紙を届ける」部分です。
IPアドレス
インターネット上の各機器を識別するための番号です。IPv4では32ビット(例:192.168.1.1)、IPv6では128ビット(例:2001:0db8:85a3::8a2e:0370:7334)で表されます。
# IPv4アドレスの例
192.168.1.1 # プライベートアドレス
8.8.8.8 # GoogleのDNSサーバー
# IPv6アドレスの例
::1 # ループバックアドレス
fe80::1 # リンクローカルアドレス
IPの特徴
- コネクションレス: 事前に接続を確立せずにパケットを送信
- ベストエフォート: パケットの到達を保証しない(信頼性はTCPが担当)
- ルーティング: 複数のネットワークを経由してパケットを転送
IPだけでは不十分な理由: IPはパケットを「届けようとする」だけで、届いたかどうかの確認や、順番通りに届ける保証はありません。これらの信頼性はTCPが提供します。
TCPの役割 - 信頼性のある通信
TCP(Transmission Control Protocol)は、信頼性のあるデータ転送を実現します。
TCPの主要機能
- コネクション指向: 通信前に接続を確立(3ウェイハンドシェイク)
- 信頼性: データの到達確認と再送制御
- 順序制御: シーケンス番号でデータの順番を保証
- フロー制御: 受信側の処理能力に合わせて送信速度を調整
- 輻輳制御: ネットワークの混雑状況に応じて送信量を調整
3ウェイハンドシェイク
TCP接続の確立は、3つのメッセージ交換で行われます。
クライアント サーバー
| |
|-------- SYN (seq=x) -------->| 1. 接続要求
| |
|<--- SYN-ACK (seq=y,ack=x+1) -| 2. 接続要求の応答 + 自分の接続要求
| |
|-------- ACK (ack=y+1) ------>| 3. 接続要求応答の確認
| |
| 接続確立(通信開始) |
TCPとUDPの違い
| 特徴 | TCP | UDP |
|---|---|---|
| 接続 | コネクション指向 | コネクションレス |
| 信頼性 | あり(再送制御) | なし |
| 順序保証 | あり | なし |
| 速度 | 比較的遅い | 高速 |
| 用途 | Web、メール、ファイル転送 | 動画配信、ゲーム、DNS |
使い分けの基準: データの正確性が重要な場合はTCP、リアルタイム性が重要で多少のデータロスが許容される場合はUDPを選択します。
ポート番号の役割
ポート番号は、同じIPアドレスで複数のサービスを識別するための番号です。0〜65535の範囲があります。
ウェルノウンポート(0-1023)
ポート番号 プロトコル 用途
20, 21 FTP ファイル転送
22 SSH セキュアシェル
25 SMTP メール送信
53 DNS 名前解決
80 HTTP Web
443 HTTPS セキュアWeb
トラブルシューティングに役立つコマンド
# 接続確認
ping google.com
# 経路確認
traceroute google.com # macOS/Linux
tracert google.com # Windows
# TCP接続状態の確認
netstat -an | grep ESTABLISHED
# パケットキャプチャ(管理者権限必要)
tcpdump -i eth0 port 80
まとめ
TCP/IPは、インターネット通信を支える基盤技術です。IPがパケットを宛先まで届け、TCPが信頼性のある通信を実現します。4層のプロトコルスタックにより、各層が独立して機能し、柔軟で拡張性のある通信基盤を提供しています。
← 一覧に戻る