Blog

通信プロトコルとOSI参照モデル

2024.12.28

本記事の目的


通信プロトコルの目的や、プロトコルがどのように分類されるか、
また通信プロトコルを設計するための標準的なモデルであるOSI参照モデルについて学びます。


通信プロトコルとは


コンピュータ同士が通信を行う際、相互のコンピュータが共通のルールに従って情報を交換することで、通信が成立します。この共通のルールを「通信プロトコル」と呼びます。
通信プロトコルは、主に「データ形式」と「通信手順」の2つの要素から成り立っています。


データ形式


データ形式は、コンピュータが送る情報を「どんな形にするか」を決めるルールです。これによって、送られた情報が受け取ったコンピュータで正しく解釈され、利用されることが保証されます。


具体例



  1. テキストデータ

  2. 画像や動画

  3. JSONやXML


このように、データ形式は、情報を「どんな形で送るか」を決めるルールであり、送る側と受け取る側が同じ形式を理解することで、データのやり取りがスムーズに行われます。


通信手順


通信手順は、コンピュータ同士がデータをやり取りする「順番やルール」を決めたものです。これにより、データが正しく、そして安全に送られることが保証されます。


具体例
①順番通りに送る
... 送信者はまずデータを送信し、受信者がそのデータを受け取る準備ができていることを確認します。例えば、HTTPでは、まず「リクエスト」を送って、サーバーから「レスポンス」が返されます。


②エラーがあった場合の対処
... 通信中に問題が起きた場合、どうやって再送するかも通信手順で決まっています。例えば、もしデータが途中で失われた場合、もう一度送信し直す手順が決まっています。


③接続の開始と終了
... 通信を始める前に、相手と「つながる」必要があります。この「接続を確立する」という手順も通信手順の一部です。例えば、電話をかけるときに相手が出るまで待つのと似ています。


通信の手順を決めるのは非常に複雑で膨大な作業です。なぜなら、起こりうる事象の組み合わせが非常に多く、それぞれについて「この場合はこうする」とルールを作らなければならないからです。
しかし、通常、1つのプロトコルが扱う範囲は限られており、大部分の通信は複数のプロトコルを組み合わせて行われます。


ちなみに、インターネットの世界で使われる通信プロトコルの多くは、「IETF」と呼ばれる標準化団体が策定し、「RFC」と呼ばれる英語文書としてネット上に公開されます。


レイヤー構造


レイヤー構造は、複雑な通信の処理を階層(層)ごとに分けて管理する方法です。
これにより、通信の各処理が役割ごとに整理され、効率的で理解しやすくなります。
通信プロトコルは、通常このレイヤー構造に基づいて設計されます。


OSI参照モデル


OSI参照モデルは、通信プロトコルを7つのレイヤーに分けて、各レイヤーが特定の役割を担当する仕組みです。以下の7つのレイヤーがあります。


1. 物理層


ビット列(0と1のデータ)を電気信号や光信号、無線などの物理的な手段で実際に送受信する。


2. データリンク層


同一ネットワークセグメント(LANなど)上でデータを正しく送り届けるための手段を提供します。誤り検出・制御やフレームの送受信、MACアドレスによる宛先指定などを行います。


3. ネットワーク層


異なるネットワーク間でデータを転送するための経路制御(ルーティング)や、通信先を特定するための論理アドレス体系(IPアドレスなど)を提供します。


4. トランスポート層


エンドツーエンド(端末間)の信頼性の高いデータ転送や、データの分割・再構成、フロー制御などを行います。アプリケーション同士が通信する際のポート番号の管理も担います。


5. セッション層


通信の開始から終了までの“セッション”を管理します。データの送受信の開始、終了の制御や、通信が途中で中断した場合の再開手順(チェックポイントなど)を提供します。


6. プレゼンテーション層


通信するデータの形式や構造を統一し、異なる機器や環境間でのデータ互換性を保ちます。
文字コードやデータの暗号化・圧縮、データ形式の変換などを行います。


7. アプリケーション層


ユーザーが実際に利用するアプリケーションに最も近い部分で、アプリケーションソフトウェアと通信プロトコルのインタフェースを提供します。具体的な通信サービスを実現する層です。


終わり


OSI参照モデルは、通信を7つの層に分け、それぞれの層が特定の役割を担うことで、通信プロトコルの設計やネットワーク管理を効率化するといった内容でした。
このように、責任を明確に分け、変更に強い構造を作るという点では、プログラム設計と似た部分がありますね。


それではここまでお付き合いいただき、ありがとうございました!


CONTACT

あくまでも本業がメインですが、休日や業務の隙間時間は個人でも動いております。
もしお手伝いできることがあれば、お気軽にお問い合わせください。

SNS