プロトコルとOSI基本参照モデル(3章)

プロトコル

パケットトレーサ 練習ファイル

プロトコルとは
プロトコルは、日本語では「儀礼、慣習」という意味です。ITの世界では、コンピュータ同士が通信するときの条件や手順を指しており、「通信規約」といいます。
私たち人間は何か想定外の出来事が起こった際でも、ある程度、状況を把握して柔軟に対応することができます。しかし、コンピュータはプログラムを読み込んで動作するため、プログラムに記述されていない処理を行うことはできません。そのため、通信を行う際に起こりうるあらゆる事態に対応できるよう、あらかじめ通信時の約束事を決めておく必要があります。これを「通信プロトコル」または、単に「プロトコル」といいます。
プロトコルには、通信相手の指定方法(アドレス情報)、やり取りするデータ形式(データフォーマット)、通信手順、エラー検出方法、エラー時の動作などが細かく定められています。そのため、通信を行うコンピュータ同士には同じプロトコルが実装されている必要があります。ちなみに、それぞれのプロトコルは、コンピュータ内でモジュール(まとまりのある機能を持ったプログラム部品)としてインストールされています。

ネットワークアーキテクチャ

プロトコルは、その機能や役割ごとにそれぞれ存在します。これら複数のプロトコルを組み合わせ、プロトコル同士が相互に連携することによって通信が成立しています。複数のプロトコルを体系的にまとめたものをネットワークアーキテクチャ(プロトコルスタック)といいます。
主なネットワークアーキテクチャとして、以下のようなものがあります。

  • TCP/IP(IETF)
  • OSI(ISO等)
  • SNA(IBM社)
  • DECnet(旧DEC社、現HP社)
  • FNA(富士通)
  • HNA(日立製作所)
  • DINA(日本電気)

ネットワークアーキテクチャは、プロトコルの機能ごとに階層構造を持っています。基本的に、システムが共通で利用する機能や単純な機能ほど下位の階層に、また、複雑な処理機能や個別の機能を実現するものほど上位の階層に含めます。 

階層化のルール

階層化には、以下のようなルールがあります。

同一階層間通信

通信は対向するコンピュータの同じ階層同士で行われます。同じ階層同士であっても、直結して通信するわけではなく、必ず伝送路を介して通信が行われます。そのため、実際には直接プロトコル同士で通信しているわけではなく、仮想的にプロトコル間で通信しています。この通信相手の同じ階層とやり取りする際の約束ごとをプロトコルといいます。

プロトコルの独立性

各階層のプロトコルは、それぞれ独立して存在します。そのため、上位層や下位層がどのような処理をしたか、その内容については一切関知しません。また、ネットワークアーキテクチャの一部に変更が生じた場合には、ネットワークアーキテクチャ全体を変更する必要がなく、変更するプロトコルを入れ替えるだけで済みます

上下階層間通信

個々のプロトコルは独立しているため、他の階層での処理内容を知る必要はありませんが、自身の1つ上と1つ下の階層にあるプロトコルとデータの受け渡しを行うための方法だけは知っている必要があります。上位層と下位層のプロトコル間でやり取りをするときの約束ごとをインタフェースと呼びます。
また、上下階層間のルールとして、上位層のプロトコルは、すべての下位プロトコルが正しく動作することによって、はじめて通信ができるようになります。逆に言うと、下位プロトコルのどれか1つでも正しく動作しなければ、上位プロトコルは正しく機能しません。

同一階層へのプロトコル実装

プロトコルは1つの階層に複数実装されていても構いません。ただし、同一階層内に複数のプロトコルがある場合は、何らかの方法で使用するプロトコルを特定できる仕組みが必要です。

プロトコルの標準化

標準とは

プロトコルは通信を行うためのルールですが、個々に通信のルールを決めてしまうと、プロトコルが多数存在することになってしまい、通信相手ごとにプロトコルを実装する必要があります。反対に、多くのユーザが共通のルールに基づいたプロトコルを利用して通信を行うことにより、共通の通信プロトコルをコンピュータに実装するだけで、多くのユーザと同じルールで効率よく通信できます。
このように、市場にある技術仕様の中から、多くのユーザが互いに利用するための仕様やガイドラインとなるものを標準といいます。また、この仕様やガイドラインを策定することを標準化といいます。

主な標準化団体

一般的に、標準の技術仕様は、それらを推進する標準化団体や企業などによって決定されます。標準仕様は、通信プロトコルだけではなく、さまざまな分野で仕様やガイドラインが策定されています。
主にネットワークの分野では、以下のような標準化団体があります。

ISO(International Organization for Standardization:国際標準化機構)

スイスのジュネーブに本部を置く非営利の国際的な標準化団体。各国の工業規格の標準化団体が参加していて、日本からはJISC(ジスク:Japanese Industrial Standards Committee:日本産業標準調査会)が参加しています。

ITU(International Telecommunication Union:国際電気通信連合)

スイスのジュネーブに本部を置く非営利の国際的な標準化団体で、国際連合(UN)の専門機関の1つ。主に有線の電気通信技術の標準化を行う電気通信標準化部門(ITU-T)と、無線通信の技術標準の策定を行う無線通信部門(ITU-R)、途上国の通信インフラ開発支援を行う電気通信開発部門(ITU-D)に分かれています。

ITU-T(ITU Telecommunication Standardization Sector:国際電気通信連合電気通信標準化部門)

世界規模の電気通信の標準化に関わる国際連合の機関です。ITU-Tでは標準を勧告(recommendation)という形で発表しているのが特徴です。技術領域に応じて、AシリーズからZシリーズに分類されています。

ITU-R(ITU Radiotelegraph Standardization Sector:国際電気通信連合無線通信部門)

ITUの3部門の1つで、主に無線通信に関する標準化を担当しています。

IEC(International Electrotechnical Commission:国際電気標準会議)

スイスのジュネーブに本部を置く非営利の標準化団体で、電気・電子技術に関する規格を策定する国際的な標準化団体。各国の工業規格の標準化団体が参加していて、日本からはJISC(ジスク:Japanese Industrial Standards Committee:日本産業標準調査会)が参加しています。

IETF(Internet Engineering Task Force)

インターネットで利用される技術の標準化を推進する標準化組織です。ISOC(Internet Society)を頂点とする組織の一部で、主にプロトコルの標準化に関する業務を担当します。

IEEE(アイトリプルイー:Institute of Electrical and Electronics Engineers:米国電気電子技術者協会)


アメリカに本部を置く非営利の電気・情報工学分野の技術標準化機関です。主にLAN技術に関する標準化を策定しています。 

標準の種類

ネットワーク技術の標準は、標準化した組織、技術仕様が標準に至るまでの経緯などによって、デジュールスタンダードとデファクトスタンダードに分類できます。
デジュールスタンダード(de jure standard)とは、ISO、IEC、ITU-Tなどの国際的な標準化団体が策定した標準規格のことです。デジュール(de jure)は、もともと「法律上の、道徳上の」といった意味を持つラテン語で、公的機関によって明文化され、公開された手続きによって策定された標準です。
一方、デファクトスタンダード(de facto standard)とは、民間企業などが策定した技術や規格などが、市場競争を経た結果、圧倒的多数の支持を受けて標準の地位を得たものです。デファクト(de facto)は、「事実上の、実際には」の意味を持つラテン語であることから、デファクトスタンダードのことを事実上の標準ともいいます。

OSI基本参照モデル

  • 異なる機種間でも通信できる世界標準のプロトコルスタックとして作られたのがOSI参照モデル。OSIはOpen System Interconnectionの略。
  • ISO(International Organaization for Standardization:国際標準化機構)によって策定された

OSI基本参照モデルとは

OSI基本参照モデルとは、ISO(国際標準化機構)とCCITT(国際電信電話諮問委員会:現ITU-T)が中心となって策定した、ネットワークアーキテクチャの参照モデルです。異なるベンダ(製造元)のコンピュータ同士を相互接続するための通信プロトコル(OSIプロトコル)として、1977年から1984年にかけて標準化が進められましたが、結論として、OSIは普及することなく、OSI基本参照モデルだけがネットワークアーキテクチャのモデルとして参照されるようになりました。

標準化の背景

OSI(Open Systems Interconnection:開放型システム間相互接続)の標準化が開始された1970年代は、コンピュータ同士が分散してデータ処理を行う仕組みが登場し始めた時期です。当時は、一部のコンピュータ同士がネットワークに接続してデータの送受信がされていましたが、データのやり取りは同じベンダのコンピュータ同士に限られており、IBM社のSNA、旧DEC社(現HP社)のDECnetなど、各ベンダは独自のネットワークアーキテクチャ(NA)により通信していました。

OSIプロトコルの策定開始

1970年代後半になると、コンピュータの小型化、低価格化が進み、企業にもコンピュータが普及し始め、異なるベンダのコンピュータ間での通信が求められるようになりました。そこで、1977年に完成したOSI基本参照モデルをベースとして、ISOとCCITT(現ITU-T)が中心となり、異なるベンダのコンピュータ同士であっても相互接続が可能なプロトコルとして、OSIプロトコルの策定が開始されました。

策定作業の難航

しかし、OSI基本参照モデル自体は、理論的に完成された通信モデルだったのですが、OSIプロトコル自身が大変複雑な仕組みで、実装作業が非常に困難であったことから、策定作業は難航することとなりました。
OSIプロトコルが標準化される1年前の1983年に、Sun Microsystems社(現Oracle社)がTCP/IPプロトコルを実装したUNIXマシンを販売開始し、これを機に各社からTCP/IPを実装したマシンが次々と登場することになりました。そのことから、1984年にOSIプロトコルは正式に標準化されるのですが、OSIを実装したマシンは普及することなく、通信プロトコルの機能や動作を参照するためのモデルとして利用されることとなりました。

OSI基本参照モデルの階層構造

OSI基本参照モデルは、プロトコルの機能や役割を7つの階層に分けて定義しています。下の階層から順番に、第1層、第2層、…第7層と数えていきます。また、それぞれの階層をレイヤ(層)と呼びます。

  • OSI参照モデルはネットワークで必要とされる機能を7つのレイア(階層)に分割し、それぞれのレイアで必要となるプロトコルを定義している。各レイアはレイア1・レイア2・・・、あるいはL1・L2・・・と呼ばれることもある。
  • レイアごとにプロトコルを切り分けることは(階層化)で各プロトコルの役割が明確になり、変更があっても最小限のプロトコルの変更で済むといったメリットもある。

各階層の役割は、大きくデータ通信に関する機能(第1層~第4層)、データ処理に関する機能(第5層~第7層)に分けられます。前者を下位層(下位レイヤ)、後者を上位層(上位レイヤ)と呼びます。ネットワークは、下位層で通信機能を担っており、処理内容に関係なく、単にデータを伝送する役割に特化しています。また、アプリケーションは上位層の機能として、それぞれのアプリケーションに応じた処理を実施します。

コンピュータがデータを送信する際、データは上位層から下位層に向けてデータが流れます。また、データ受信の際は、下位層から上位層に向けてデータが流れます。

  • 送信データはOSI参照モデルの高いレイヤから低いレイヤへと順に処理され、レイヤ1で信号として伝送される。
  • 受信データはOSI参照モデルの低いレイヤから高いレイヤへと順に処理され、レイヤ7のアプリケーションへと伝送される

下位層の機能

物理層

物理層では、伝送媒体ごとのビット伝送手順を定義します。
具体的には、伝送媒体にデータ送信する際にビット列をどのように信号に変換して媒体に流すか、流れてきた信号をどのようにビット列に変換処理するかを定義します。また、伝送媒体に使用するケーブルやコネクタ形状の規定など、媒体によって異なる物理的・電気的条件を定義します。

  • 物理層:機器や電気信号に関するプロトコル群
  • 2つのノードの間で確実に通信するために必要なプロトコルが定義される。

データリンク層

データリンク層では、ケーブルなどで直接接続されたコンピュータ(ノード)間での伝送手順を定義します(隣接ノード間通信)。
ノード間の接続形態はそれぞれの伝送媒体によって異なるため、物理層の規定に従って定義されます。そのため、ほとんどの場合、物理層とデータリンク層はセットで定義されます。
また、データリンク層では、隣接ノードの範囲がネットワークの最小単位(単一ネットワーク)になります。隣接ノードはルータによって区切られます。つまり、単一ネットワークとは、ルータを越えないで、伝送媒体によって直接接続された範囲となります。

  • データリンク層:隣接するノード間の通信に関するプロトコル群
  • 2つのノードの間で確実に通信するために必要なプロトコルが定義される。

なお、単一ネットワーク内では複数のノードが存在するため、個々のノードを識別する情報(アドレス情報)が必要です。データリンク層レベルのアドレス情報として、MACアドレス(Ethernetなど)があります。 

ネットワーク層

ネットワーク層では、発信元のノードから最終目的地のノードまでのデータ伝送路を提供します(End-to-End通信)。
データリンク層は、ルータで区切られた1つのネットワーク内(同一ネットワーク内)において、相手ノードまでのデータ伝送の機能を提供しますが、ネットワーク層ではルータを越えて、最終目的地のノードまでデータ伝送する仕組みを提供します。つまり、ネットワーク層の機能により、異なるネットワークに接続された終端のノード(エンドノード)同士の通信が可能になります。

  • ネットワーク層:エンドツーエンドの通信に関するプロトコル群。ネットワークをまたいだエンドツーエンドの通信をするために必要なプロトコルが定義される。
  • エンドツーエンド:データの送信元と宛先を結ぶ通信経路全体のこと

End-to-End通信を実現するために、各ノードはすべてのネットワークにおいて一意となるアドレス情報を持っています。ルータは、このアドレス情報をもとにして、次にデータ転送するネットワークを決定(経路制御)し、次のネットワークにデータを伝送することにより、異なるネットワークへ中継します。この経路制御を繰り返すことによって、最終的に目的のノードにデータが伝送されます。
ネットワーク層レベルのアドレス情報として、IPアドレス(TCP/IP)があります。

トランスポート層

トランスポート層はOSI基本参照モデルの下位層で最上位に位置する階層で、大きく2つの役割があります。
1つはプロセス間のEnd-to-End通信を定義する役割です。プロセスとは、エンドノード内で動作するプログラムの処理単位です。エンドノード内では複数のプロセスが動作しています。そのため、トランスポート層ではエンドノードがデータ処理するプロセスを一意に識別できる情報を持っています。

  • トランスポート層:通信における信頼性に関するプロトコル群
  • 通信方式、通信状態の確認方法、異常発生時の対処など、期待通り行われるためのプロトコルが定義される。

もう1つはEnd-to-End通信の信頼性を確保する役割です。通信における信頼性とは、パケットを確実に相手に届けることをいいます。End-to-End通信を実現するネットワーク層では、通信相手を指定して、データを届ける機能を持っていますが、必ずしもデータが確実に相手に届くことを保証するものではありません。そこで、一部のトランスポート層プロトコルでは、データが相手に届いたことを通知したり、エラーで失われたデータを再送したりするなどの制御を行うことによって、通信の信頼性を高める機能を持っています。
このように、トランスポート層は上位層と下位層の境界にある階層として、アプリケーションとネットワークの橋渡しをする重要な役割を担っています。
トランスポート層レベルのアドレス情報として、ポート番号(TCP/IP)などがあります。

上位層の機能

セッション層

セッション層では、データを意味的な単位に区切ることによって、アプリケーション処理の単位を定義します。
トランスポート層までの階層では、アプリケーションのデータのかたまりは意識せず、単にビット列の伝送を行う機能を目的としていました。セッション層では、開始から終了までの一連の通信方法を定義することによって、アプリケーションがデータ処理を効率的に実現できるようにします。

  • セッション層:アプリケーション間の接続に関するプロトコル群
  • アプリケーション同士の論理的な接続に関するプロトコルが定義されている。

プレゼンテーション層

プレゼンテーション層では、データの表現形式を定義します。
各ノードで使用される文字などのデータは、個々のシステム・プラットフォームによって表現方法が異なることがあります。プレゼンテーション層では、ノードで使用するシステムやプラットフォームが異なっていても、文字や画像などを正しく表現、理解できるために、ノード固有の表現形式とネットワーク全体で共通の表現形式に相互変換する役割を持ちます。

  • プレゼンテーション層:ユーザが見て触れるデータに関するプロトコル群
  • 文字・画像・動画といったユーザが扱うデータの変換に関するプロトコルが定義されている。

アプリケーション層

アプリケーション層では、個々のアプリケーションの通信機能を定義します。
アプリケーション層の機能は、アプリケーションそのものではなく、ユーザがデータ送信の操作を行った後に機能する部分を指します。

  • アプリケーション層:アプリケーション固有のプロトコル群
  • 電子メール・Webページの閲覧・ファイル転送といったユーザが操作するアプリケーションの動作を支えるプロトコルが定義されている。

伝送データの単位

ネットワークは階層構造で構成されており、各階層では階層の機能に応じたプロトコルが存在しています。各プロトコルは、アドレス情報やデータの長さ、データの順番など、各階層において通信に必要な情報に基づいて動作します。
このような通信の制御に関する情報は、PCI(Protocol Control Information)または、ヘッダ(header)といい、送信したいデータとは別に用意されます。また、送信対象となるデータは、SDU(Service Data Unit)または、ペイロード(payload)といいます。
ネットワーク上でデータを送信する際には、送信元のノードで、送信対象のデータであるSDUに制御情報であるPCIを付加して伝送します。SDUとPCIを組み合わせた単位を、PDU(Protocol Data Unit)といい、送信データをヘッダで包む小包に見立てて、一般的にパケット(Packet)と呼んでいます。

  • データ + ヘッダ(+トレーラ)のデータ単位をPDU(Protocol Data Unit) という。
  • PDUはどのレイヤのヘッダが付加されているかで呼び名が変わる。フレーム(L2:データリンク層)パケット(L3:ネットワーク層)セグメント(L4:トランスポート層)はよく使われる。

カプセル化

あるコンピュータから別のコンピュータへデータを送信する場合、送信するデータは送信側のアプリケーションが準備します。ユーザがアプリケーションを操作して送信処理が開始されると、各階層で必要な制御情報(ヘッダ)を付加し、1つ下の階層に送られていきます。
ここで重要なのは、下位層では、上位層から転送されたPDU(パケット)は、すべて単なるSDU(ペイロード)とみなして、その階層で必要なPCI(ヘッダ)を付加するだけということです。どこからどこまでが送信データ本体なのか、上位で付加された制御情報はどのようなものなのかなど、下位層では上位層でどのような処理が行われたかについては、まったく関知しません。
このように、下位層のヘッダが、上位層のヘッダやデータ本体を含めてパケットを生成することをカプセル化(encapsulation)といいます。

  • 送信データを各レイヤで処理していく際、ヘッダという制御情報を付加する。
  • データリンク層ではヘッダに加えてトレーラと呼ばれるエラーチェック用の情報も付加する。
  • この送信データを作るためにレイヤごとにヘッダ(+トレーラ)を付加していく処理をカプセル化という。

非カプセル化

送信元のコンピュータから宛先のコンピュータへ届いたPDU(パケット)は、各階層でPCI(ヘッダ)を処理したうえで取り外し、1つ上の階層に送られていきます。これを非カプセル化(decapsulation)といいます。
送信データに付加される制御情報であるPCI(ヘッダ)は、共通のものではなく、プロトコルによって異なります。これは、プロトコルの役割がそれぞれ異なるためです。また、通信を行うコンピュータ同士では、各階層で使用するプロトコルは各階層ですべて一致している必要があります。
プロトコルが一致しているということは、各階層のプロトコルが送信元のコンピュータで付加されたヘッダの長さを理解しているということになります。各階層では、プロトコルに応じたヘッダ長分のビット列を抜き出して、ヘッダの内容を読み取り、必要な処理を行います。処理が終了したらヘッダを取り外し、残りの部分をそのまま上位層へ転送します。

  • 受信データは各レイヤで処理されていく毎に送信時に付加されたヘッダ(+トレーラ)を外される。
      この処理を非カプセル化という。

上位プロトコルの指定

非カプセル化の際に、パケットは処理後に1つ上の階層へと転送されます。各階層には複数のプロトコルが実装されていることがほとんどのため、次に処理を行うプロトコルをあらかじめ指定しておく必要があります。各プロトコルでは、上位層プロトコルを指定するために以下のような情報をヘッダに含めています。

  • タイプ(Type)…Ethernet、IEEE802.3 SNAPフレームフォーマット
  • プロトコル(Protocol)…IPv4
  • 次ヘッダ(Next Header)…IPv6
  • 宛先ポート番号(Destination Port)…TCP、UDP

-ネットワーク基礎

© 2021 スタートダッシュ