概要

通信プロトコルとは、2台以上のコンピューティング機器が情報を信頼性高く交換できるようにする、形式化された規則の集まりです。プロトコルは、データの形式、セッションの開始と終了、エラーの検出と訂正、参加者同士の同期方法を定めます。こうした規則は複数の階層にまたがって存在し、低レベルの電気信号、ネットワーク上のパケット経路制御、プログラムが使うアプリケーション層のメッセージなどを扱います。

基本要素と特徴

典型的なプロトコルの要素には、次のようなものがあります。

  • 構文: メッセージの構造と符号化(各フィールド、ヘッダー、長さ)。
  • 意味: 各フィールドの意味と、メッセージによって引き起こされる動作。
  • タイミング: 信頼性のある配送のための順序、タイムアウト、再送規則。
  • 状態管理: 接続型で状態を保持するか、ステートレスか。

これらの要素は相互運用性を左右します。2つのシステムが通信できるのは、同じプロトコル規則を共有している場合に限られます。

歴史と発展

プロトコルは、それ以前の通信工学の研究から生まれ、パケット交換ネットワークとインターネットの発展に不可欠でした。1960年代から1970年代の研究により基礎的な設計が生まれ、その後はTCP/IPのような標準的な体系が、リンク、ネットワーク、トランスポート、アプリケーションの各層に役割を分けることで主流になりました。時代が進むにつれて、セキュリティ、モビリティ、リアルタイムメディアといった新たな要件が追加のプロトコルや拡張を生みました。

代表的な例と用途

よく知られたプロトコルは、さまざまな階層で動作します。トランスポート層では、TCPが信頼性のある順序付き配送を提供し、UDPは低遅延のデータグラムを提供します。アプリケーション層では、HTTP、SMTP、FTPが、それぞれWebページ、電子メール、ファイル転送の仕組みを定義します。TLSのような安全な派生版は、暗号化と認証を追加します。プロトコルは、インターネット、ローカルネットワーク、産業制御システム、組み込み機器、IoT全般で利用されています。

設計上のトレードオフと区別

プロトコル設計では、信頼性と性能、単純さと柔軟性、公開性と安全性といった相反する目標のバランスが求められます。重要な区別としては、接続型と接続レス、ステートフルとステートレス、人間が読める表現とバイナリ表現があります。プロトコルはAPIとは異なります。プロトコルは独立したシステム同士が通信するための共通言語を定義するのに対し、APIは通常、特定のソフトウェア部品へのインターフェースです。

標準化と参考情報

プロトコルは、異なるベンダーや実装間の相互運用性を確保するため、標準化団体によって記述・維持されることが多くあります。開発者やエンジニアは、互換性のあるシステムを構築する際に仕様書や参照実装を参照します。入門向けの技術資料や標準については、関連資料および開発者向けサイトの実装ガイドを参照してください。