はじめに
この記事では、インターネット通信の基礎となるTCP/IPについて、初めて学ぶ方にも分かりやすく解説します。
この記事で学べること
- TCP/IPの基本的な仕組み
- 階層構造の考え方
- IPアドレスの役割
- TCPとUDPの違い
- 実際の通信がどのように行われるか
想定読者
- プログラミングを学び始めた方
- ネットワークの基礎を学びたい方
- TCP/IPという言葉は聞いたことがあるが、詳しくは知らない方
TCP/IPとは何か
インターネット通信の基礎
TCP/IPは、インターネット上でコンピュータ同士が通信するための約束事(プロトコル)です。正式には「Transmission Control Protocol/Internet Protocol」と呼ばれます。
私たちが普段、Webサイトを見たり、メールを送ったりできるのは、すべてこのTCP/IPのおかげです。
TCP/IPが生まれた背景
1960年代、アメリカ国防総省は、核攻撃を受けても通信を維持できるネットワークを必要としていました。そこで開発されたのがARPANETで、これがインターネットの原型となりました。
TCP/IPは、異なる種類のコンピュータやネットワークでも通信できるように設計された、柔軟で堅牢なプロトコルです。
TCP/IPの階層構造
TCP/IPは、4つの階層に分かれています。この階層構造により、それぞれの層が独立して機能し、保守や拡張がしやすくなっています。
各層の役割
アプリケーション層
- 役割:ユーザーが直接利用するアプリケーションの通信を担当
- 例:Webブラウザ(HTTP)、メール(SMTP)、ファイル転送(FTP)
トランスポート層
- 役割:データを確実に届けるための制御を行う
- 例:TCP(信頼性重視)、UDP(速度重視)
インターネット層
- 役割:データをどの経路で送るかを決定し、宛先まで届ける
- 例:IP(インターネットプロトコル)
ネットワークインターフェース層
- 役割:物理的なネットワーク機器とのやり取りを担当
- 例:Ethernet(有線LAN)、Wi-Fi(無線LAN)
階層化のメリット
階層化することで、次のようなメリットがあります。
- 独立性:各層が独立しているため、一つの層を変更しても他の層に影響しない
- 再利用性:同じ層を異なるアプリケーションで共有できる
- 保守性:問題が発生した際、どの層に問題があるか特定しやすい
郵便システムに例えると、手紙を書く人(アプリケーション層)、配達方法を決める人(トランスポート層)、配達ルートを決める人(インターネット層)、実際に配達する人(ネットワークインターフェース層)のように、役割が分担されているイメージです。
IPアドレスとは
IPアドレスの役割
IPアドレスは、ネットワーク上のコンピュータを識別するための住所のようなものです。インターネット上の各デバイスには、固有のIPアドレスが割り当てられています。
例えば、192.168.1.1 のような数字の並びがIPアドレスです。
IPv4とIPv6
現在、主に2種類のIPアドレスが使われています。
IPv4
- 形式:
192.168.1.1のように、0〜255の数字を4つ並べた形式 - アドレス数:約43億個
- 課題:インターネットの普及により、アドレスが不足している
IPv6
- 形式:
2001:0db8:1234:5678:90ab:cdef:0123:4567のように、16進数で表現 - アドレス数:事実上無限(約340澗個)
- 特徴:IPv4の枯渇問題を解決するために開発された
プライベートIPアドレスとグローバルIPアドレス
グローバルIPアドレス
- インターネット上で一意に識別されるアドレス
- 世界中で重複しないように管理されている
- 例:自宅のルーターに割り当てられるアドレス
プライベートIPアドレス
- ローカルネットワーク内でのみ使われるアドレス
- 組織や家庭内で自由に使える
- 範囲:
192.168.0.0〜192.168.255.255など
自宅のWi-Fiに接続したスマートフォンやPCには、プライベートIPアドレスが割り当てられ、ルーターを通じてグローバルIPアドレスでインターネットに接続します。
TCPとUDPの違い
トランスポート層では、主にTCPとUDPという2つのプロトコルが使われます。それぞれ異なる特徴を持ち、用途に応じて使い分けられています。
TCPの特徴
TCP(Transmission Control Protocol) は信頼性を重視したプロトコルです。
- 接続確立:通信前に相手と接続を確立する(3ウェイハンドシェイク)
- 確実な配送:データが確実に届いたか確認する
- 順序保証:データが送った順番通りに届く
- 再送制御:データが届かなかった場合は再送する
使われる場面
- Webサイトの閲覧(HTTP/HTTPS)
- メール送信(SMTP)
- ファイル転送(FTP)
データの正確性が重要な場面で使われます。
UDPの特徴
UDP(User Datagram Protocol) は速度を重視したプロトコルです。
- 接続不要:事前の接続確立が不要
- 高速:確認処理がないため、TCPより高速
- 順序不保証:データが順番通りに届くとは限らない
- 再送なし:データが届かなくても再送しない
使われる場面
- 動画配信(ストリーミング)
- オンラインゲーム
- 音声通話(VoIP)
- DNS(ドメイン名解決)
多少のデータ欠損があっても問題なく、リアルタイム性が重要な場面で使われます。
それぞれの使い分け
実際の通信の流れ
Webページを表示するまでの流れ
ブラウザでWebページを開く際、次のような流れで通信が行われます。
各ステップの説明
- URL入力:ユーザーがブラウザにURLを入力
-
DNS問い合わせ:ドメイン名(例:
www.example.com)をIPアドレスに変換 - TCP接続確立:3ウェイハンドシェイクで接続を確立
- HTTPリクエスト:Webページのデータを要求
- データ受信:サーバーからHTMLデータを受け取る
- 表示:ブラウザがHTMLを解釈してページを表示
パケットの送受信
データは「パケット」という小さな単位に分割されて送信されます。
パケットの構造
各層で、データにヘッダー(制御情報)が追加されていきます。これをカプセル化と呼びます。
受信側では、この逆の処理(デカプセル化)が行われ、各層でヘッダーを取り除いていき、最終的に元のデータを取り出します。
まとめ
TCP/IPの重要ポイント
- TCP/IPはインターネット通信の基礎となるプロトコル群
- 4つの階層(アプリケーション層、トランスポート層、インターネット層、ネットワークインターフェース層)に分かれている
- IPアドレスはネットワーク上の住所
- TCPは信頼性重視、UDPは速度重視
- データはパケットに分割されて送受信される