通信プロトコルシミュレータ ProtoSimゲストユーザ

発展編 ~階層構造の良さを体感しよう~

階層構造の利点

最後に階層構造について振り返りましょう。これまで扱ってきた通信プロトコルは下表の通り 階層構造 を持っていますが、なぜ階層構造を使っているのでしょうか?

階層主な働き具体例
アプリケーション層通信プロトコルたちの階層のうち上から 1 番目の層。各アプリケーション特有の情報の制御を担当する。ウェブページ閲覧、電子メール送信など、それぞれのサービスに応じて情報を整理したりヘッダを追加したりするHTTPWeb ページ閲覧の仕組みを提供する通信プロトコル。
トランスポート層通信プロトコルたちの階層のうち上から 2 番目の層。情報を確実に送り届けるための制御を担当する。確実にデータを届けるTCPデータをパケットに分ける他、いくつかの制御を行って情報を確実に送り届ける通信プロトコル。データが通信途中に消えてしまった場合は再送も行う。
UDPデータをパケットに分ける他、いくつかの制御を行って情報を確実に送り届ける通信プロトコル。TCP と違って情報が通信途中に消えてしまったときの再送を行わない。
インターネット層通信プロトコルたちの階層のうち上から 3 番目の層。情報の宛先や通信経路の管理を担当する。データの宛先や通信経路を管理するIP情報の宛先などを管理する通信プロトコル。
ネットワークインタフェース層通信プロトコルたちの階層のうち上から 4 番目の層。ケーブルや電波などの通信方法に合わせた制御を担当する。ケーブルや電波など通信の方法に合わせてデータを 0 と 1 の列に変換するイーサネットLAN ケーブルなどを使うとき、電圧の高低と二進法の 1 と 0 を対応付けるなどの制御を行う通信プロトコル。

階層構造の各層には次のような特徴があります。

  • 上の層からどんなデータを渡されるかわからない。言い換えると、雲の上の存在から何を押し付けられるかわからない。
  • 下の層がどんな仕組みになっているかわからない。言い換えると、下の層に入れたデータがそのままの形で流れ着いてくるという海の性質だけがわかっている。

「わからない」ことだらけですが、実はこれらはとても良い性質なのです。次のような恩恵があります。

  • 途中の層に適当なデータを流し込んでテストができる。
  • 各層が独立しているのでどこかの層に修正を加えても他の層に影響が及ばない。

大きなシステムをただ分割するだけではなく、それぞれが綺麗な性質を持つように上手に分割してあげることで、システムがより扱いやすくなっているのです。

↓
HTTP
(アプリケーション層)
↑
↓
</>
TCP
(トランスポート層)
↑
</>
↓
</>
IP
(インターネット層)
↑
</>
↓
</>
イーサネット
(ネットワークインタフェース層)
↑
</>
スマートフォン
↓
HTTP
(アプリケーション層)
↑
↓
</>
TCP
(トランスポート層)
↑
</>
↓
</>
IP
(インターネット層)
↑
</>
↓
</>
イーサネット
(ネットワークインタフェース層)
↑
</>
Web サーバ