コンピュータネットワークのプロトコル階層とは?基本要素と5層モデルの仕組みを解説
プロトコルとは、データ通信を行う際に通信主体(エンティティ)が従うべき一連の規則のことです。コンピュータ同士が正しく情報をやり取りするためには、共通の「約束事」が必要であり、それを担うのがプロトコルです。
プロトコルを構成する3つの要素
- 構文(シンタックス) − 送受信されるデータの形式・フォーマットを定義します。
- 意味(セマンティクス) − 転送される各ビット列が持つ意味を定義します。
- タイミング − データをいつ送信するか、どの速度で転送するかといった時間的な規定を指します。
インターネット上のコンピュータ間通信は、さまざまなプロトコルによって定義されています。中でもTCP(Transmission Control Protocol:伝送制御プロトコル)とIP(Internet Protocol:インターネットプロトコル)は、インターネット通信の基盤となるプロトコルです。この2つを組み合わせたものがTCP/IPプロトコルと呼ばれ、多くの大規模ネットワークで標準として採用されている体系です。
各プロトコルの詳細に入る前に、まずプロトコル階層の中でそれぞれのプロトコルがどのような位置関係にあるのかを確認しておきましょう。
プロトコル階層(プロトコル・ハイアラーキ)とは
プロトコルは、コンピュータ端末間の接続・通信・データ転送を制御または実現するための標準規格です。プロトコルはハードウェア、ソフトウェア、あるいはその両方の組み合わせによって実装されます。
一般に、ネットワークソフトウェア設計の複雑さを軽減するため、ほとんどのネットワークは複数の「階層(レイヤー)」に分けて構成されます。階層の数、各階層の名称、そして各階層が担う機能は、ネットワークごとに異なります。
各階層の目的は、上位の階層に対して特定のサービスを提供することにあります。このとき、そのサービスが実際にどのように実装されているかという詳細は、上位階層からは隠蔽(ブラックボックス化)されます。
あるマシンの第n層は、別のマシンの第n層と対話を行います。この対話で使用される規則や取り決めの集合を、第n層の「プロトコル」と呼びます。つまりプロトコルとは、通信当事者間で交わされた「通信をどのように進めるか」についての合意なのです。
5層プロトコルの構造
5層モデルの基本的な構造は以下の通りです。
- ステップ1 − 異なるマシン上に存在する同じ階層のエンティティ同士を「ピア(peer)」と呼びます。
- ステップ2 − あるマシンの第n層から、別のマシンの第n層へデータが直接転送されることはありません。
- ステップ3 − 各階層は、データと制御情報を下位の階層へ渡していき、最下層に到達するまでこれを繰り返します。
- ステップ4 − 第1層の下には「物理媒体」があり、実際の通信はここを通じて行われます。
- ステップ5 − 図において、破線は仮想通信を、実線は物理通信を表しています。
- ステップ6 − 隣接する階層どうしの間には「インターフェース」が存在し、このインターフェースは、下位層が上位層に対して提供する操作やサービスを定義します。
- ステップ7 − システムで使用されるプロトコルの一覧(1階層につき1プロトコル)を「プロトコルスタック」と呼びます。
5層ネットワークにおける通信の流れ
次に、5層ネットワークで最上位層への通信がどのように実現されるかを見てみましょう。
- メッセージMは、第5層で動作するアプリケーションプロセスによって生成され、送信のために第4層へ渡されます。
- 第4層は、メッセージMを識別するために先頭に「ヘッダ」を付加し、その結果を第3層へ渡します。
- 多くのネットワークでは、第4層プロトコルにおけるメッセージサイズに制限はありませんが、第3層プロトコルにはほぼ必ずサイズ制限が課されています。
- そのため、第3層は受け取ったメッセージを小さな単位(パケット)に分割し、それぞれのパケットの先頭に第3層のヘッダを付加しなければなりません。
- この例では、メッセージMはM1とM2の2つに分割されています。
- 第3層はどの出力回線を使用するかを決定し、パケットを第2層へ渡します。
- 第2層は各パケットにヘッダとトレーラを付加し、その結果を物理伝送のために第1層へ渡します。
- 受信側のマシンでは、メッセージは階層を順に上がっていき、その過程でヘッダが剥ぎ取られていき、最終的にメッセージMが第5層のアプリケーション層に届きます。
-
C#のコメントとは?複数行・単一行コメントの書き方を解説
コメントは、コードの内容や意図を説明するために記述する注釈です。コンパイラはコメント部分を完全に無視するため、プログラムの動作には一切影響しません。C#では、複数行にわたるコメントは「/*」で始まり、「*/」で終わります。 複数行コメント /* 以下はC#における 複数行コメントの例です */ 「/* ... */」で囲まれた範囲はすべてコンパイラによって無視されます。処理の概要や注意点など、複数行にわたる説明を残したい場合に使用します。 単一行コメント // 変数の宣言 int a = 10; 単一行コメントは「//」から行末までがコメントとして扱われます。変数の意味や処理の意図を手軽にメモ
-
トランスポート層プロトコルが直面する課題とは?役割と課題をわかりやすく解説
OSI(Open System Interconnection)参照モデルは、ネットワーク通信を7つの階層に分割して定義したものです。その中でもトランスポート層は、インターネット上で送信者と受信者の間のエンドツーエンド通信を担う非常に重要な層です。トランスポート層は送信側と受信側の間に論理的な通信経路を提供し、パケットが確実に相手まで届くことを保証します。トランスポート層の主なプロトコルトランスポート層で利用される代表的なプロトコルは以下の通りです。TCP(Transmission Control Protocol:伝送制御プロトコル)UDP(User Datagram Protocol:ユー