💭

プロトコルについて軽く調べてみた

に公開

コンピュータとネットワークのプロトコル:通信を支える約束事

コンピュータやネットワークの世界におけるプロトコルとは、機器同士が通信を行う際に用いる共通の「約束事」や「手順」を定めたものです。日本語で「通信規約」と訳されることもあります。

私たちが海外の人と話すときに共通の言語(例えば英語)を使うように、コンピュータ同士も同じプロトコルを使うことで、メーカーやOSが異なっていてもスムーズにデータをやり取りできます。

これらのプロトコルは、役割ごとに階層構造(後述のTCP/IPモデルなど)をなして、複雑な通信を実現しています。


プロトコルの階層モデル:TCP/IP

現在のインターネット通信の多くは、「TCP/IP」というモデルに基づいています。これは、プロトコルを役割に応じて4つの階層に分けて整理したものです。

階層 名称 主な役割
第4層 アプリケーション層 私たちが直接利用するアプリケーションの通信サービス(メール、Web閲覧など)を規定
第3層 トランスポート層 データの信頼性や効率的な伝送を確保
第2層 インターネット層 ネットワーク上の最終的な宛先までデータを届けるための経路選択
第1層 ネットワークインターフェース層 直接接続された機器間でデータをやり取りするための物理的な仕様

代表的なプロトコルの種類

以下に、各階層で機能する代表的なプロトコルを紹介します。

アプリケーション層のプロトコル

私たちのインターネット利用に最も身近なプロトコル群です。

  • HTTP/HTTPS (HyperText Transfer Protocol/Secure)
    • Webサーバーとブラウザ間で、Webページや画像などの情報をやり取りするためのプロトコルです。HTTPSは通信内容を暗号化し、より安全性を高めたものです。
  • SMTP (Simple Mail Transfer Protocol)
    • 電子メールを送信する際に使われるプロトコルです。
  • POP/IMAP (Post Office Protocol/Internet Message Access Protocol)
    • 電子メールを受信する際に使われるプロトコルです。POPはメールを端末にダウンロードするのに対し、IMAPはサーバー上でメールを管理します。
  • FTP (File Transfer Protocol)
    • サーバーとクライアント間でファイルを送受信するためのプロトコルです。Webサイトのファイルをサーバーにアップロードする際などに利用されます。
  • DNS (Domain Name System)

トランスポート層のプロトコル

アプリケーション層から受け取ったデータを、どのように相手に届けるかを管理します。

  • TCP (Transmission Control Protocol)
    • 信頼性重視のプロトコルです。データを送る前に相手と接続を確認し(3ウェイハンドシェイク)、データが正しく届いたかを確認しながら通信を行います。データの欠損があれば再送を要求するため、Webページの閲覧やメールの送受信など、正確性が求められる通信で利用されます。
  • UDP (User Datagram Protocol)
    • 速度重視のプロトコルです。TCPのような事前の接続確認やデータ到着の確認を行わず、一方的にデータを送り続けます。そのため高速ですが、データの欠損や順序が入れ替わる可能性があります。動画ストリーミングやオンラインゲームなど、リアルタイム性が重要な通信で利用されます。

インターネット層のプロトコル

データの宛先を特定し、そこまでの最適な経路を決定します。

  • IP (Internet Protocol)
    • インターネット上の住所である「IPアドレス」を用いて、データをパケットという小さな単位に分割し、宛先のコンピュータまで届ける役割を担います。現在主流のIPv4と、IPアドレス枯渇問題に対応したIPv6があります。

ネットワークインターフェース層のプロトコル

物理的なネットワーク媒体(LANケーブルやWi-Fiなど)で、直接つながっている機器同士の通信を規定します。

  • Ethernet (イーサネット)
    • 有線LANで最も広く使われている規格です。機器固有の識別番号である「MACアドレス」を使って通信相手を識別します。
  • Wi-Fi (Wireless Fidelity)
    • 無線LANの規格です。IEEE 802.11という標準規格に基づいています。

これらのプロトコルが連携し合うことで、私たちは日々、世界中のコンピュータとスムーズに通信することができています。

GitHubで編集を提案

Discussion