第3章 プロトコルの構造

更新日:06/01/18 17:45:04


はじめに

 プロトコル(protocol)は,広辞苑では,「(1)(条約の)議定書・原案」,「(2)外交儀礼」とあって,最後に,「(3)コンピューターシステムで,データ通信を行うために定められた規約,情報フォーマット,交信手順,誤り検出法などを定める」とあります.これから分かるように,プロトコルとは,もとは外交官が外国との外交交渉において行う儀礼典礼,あるいは外交議定書などをさしていう言葉でしたが,コンピュータ通信やネットワークの広がりにつれて,(3)の方が市民権を得て日常用語になってきました.
 プロトコルは,コンピュータネットワークに限らず,アナログ通信においても存在していますし,まして通信業者が提供する各種の通信サービスにおいては無数のプロトコルが存在しいているのですが,私たちが日常的にそれを意識することはあまりありませんでした.ところがコンピュータの普及やネットワークの広がりにつれて,いやおうなしにプロトコルを意識せざるを得なくなりました.たとえば,自宅からインターネットにダイアルアップ接続をしようとしますと,とたんにPPPというプロトコルについての知識が要求されますし,LANに接続しようとしますとLANボードをコンピュータに装備し,DNSの設定やTCPアダプターの設定などをしなくてはならなくなります.こうして,好むと好まざるとにかかわらずプロトコルを日常的に意識しなくてはなりません.
ここでは,一般的にプロトコルの構造を理解することとし,次節以降で,インターネットで使われるプロトコルについて具体的にその内容を理解することにします.

用語集


1.プロトコルの標準化

2.プロトコルの階層化

3.インターネットのプロトコル構造

4.階層化プロトコルによる処理の流れ


第1節 プロトコルの標準化

 通信プロトコルの成り立ちは,はじめ企業(コンピュータメーカーや通信業者)や個人が始めた私的な通信方式にその起源を求められることが多いようです.それが,多くの人々の賛同を得て(あるいは政治的に多数派工作をして)業界標準(de-fact standard デ・ファクトスタンダード)に成長し,やがてそれを国際的な標準化組織や標準化機関で精査し,標準化するというわけです.私たちに馴染みの深いEthernetなどは,これがXerox社で開発され,Intel社・DEC社などと語らって,次第に業界標準として普及し,最終的にIEEEにおいて精査の後,IEEE802.3という名称の世界標準となっていきました(EthernetとIEEE802.3は不幸なことに標準化を進める過程で一部異なる部分が生じましたが,両者が並立して現存しています).こういう世界標準のことを和製英語でグローバルスタンダードなどと言い,新聞やテレビを賑わす時事用語にもなっています.
 世界的な規模での標準化をすすめている機関として,国際電気通信連合ITU(International Telecommunications Union)(旧CCITT)や国際標準化機構ISO(International Organization for Standardization)があります.ITUは,主に電気通信の立場からの標準化作業を,またISOはデータ処理方面からの標準化を分担しています.
 これら世界標準化の動きを受けて,国内的にはITUの流れの中では,総務省が電子情報通信学会やNTT,KDDIなどの通信業者などとともに国内標準化を担当し,ISO関連では,経済産業省が情報処理学会や通信機器メーカーなどとともにJIS-Cとして規格化作業を進めることが多く行われています.
 他方,プロトコルの標準化というのは,国際的な競争場裏にあります.そこでは,技術の創出力が第一ですが,加えて政治力や経済力も大きな要素になります.その点で現在アメリカが群を抜いています.アメリカの電気電子学会であるIEEE(Institute of Electoric & Elecoronics Engineers アイ・トリプルEと発音します)や標準化組織であるANSI(American National Standards Institute アンシーと発音します)は,しばしば事実上の世界標準を作り上げます.これらの活動は,もとをただせばアメリカの民間企業などが中心になってコンソーシアムを作り,そこで構築した業界標準をバックアップする形のものが多いようです.
 主な標準化プロトコルと標準化団体を下の表に示します.

 
標準化団体


第2節 プロトコルの階層化

 具体的なプロトコルではありませんが,プロトコル制定のための基本的な概念・構造をISO(International Organization for Standardization)が提示しています.それを開放型システム相互接続基本参照モデル(OSI参照プロトコル)(Open System Interconnection  Basic Reference Model)といい,1980年に発表されました.その構造は,図のように7つの階層からできています.こういう階層構造をプロトコルスタック(protocol stack)といいます.
 全体は,下位の4層上位の3層の間で大別されます.特に下位の4層はコネクション(接続)に関わるプロトコル群で具体的にこれに基づく標準化が進んでいますが,アプリケーションに関わる上位3層についても今後順次進められることになっていながらなかなか進展していません.
 OSI参照プロトコルの特徴は,隣り合う下の階層(layer)が隣り合う上の階層のサービスを責任を持って行い,上下の階層との間でインターフェースを提供し合いさえすれば,あとは同一階層の中だけで標準化規約を自由に定められることであって,2階層以上離れたすべての階層については一切考慮する必要がないことです.したがって,相互に接続された2つのノード(ノードとは具体的には通信端末/DTEのことですが,ハードウェアだけでなくソフトウェアが持つ機能やサービスをも含む概念)は,実際には物理層を介して接続されていますが,論理的には2つのノードのそれぞれの機能階層間がバーチャルに接続されたものとして動作します.とくに,ユーザから見れば,Applicationを二つのノードでやり取りしているように見え,それより下の層の構造を意識しなくてもよいことです.
 たとえば電子メールをやり取りしているような場合,私たちはメールに必要なデータやテキスト(文章)の作成にだけ注力しているのであって,その伝送経路や全体の仕組みなど念頭にありません.


図3.2.1 プロトコルの階層構造

 以下に,OSI参照プロトコルの下位層から順次見ていきましょう.
 

2.1 Physical層

 Modem,DSU,RS-232-C,NICボード/ネットワークインターフェースカードなど,ネットワークに接続されているデータ端末装置DTE(Data Terminal Equipment=コンピュータ)や,データ回線終端装置DCE(Data Circuit terminating Equipment )に要求される電気的・物理的規約を定めます.Modem,DSU,RS-232-C,NICなどのソケットの幾何学的形状・ピンの数や太さはもちろんのこと,さらにソケット内の各ピンに加えられる電圧やその波形などを規定しています.これによってメーカーの違いによらずに機器間の物理的な接続が保証されます.詳しくは,各装置についての技術資料を参照して下さい.
 

2.2 Datalink層

 同一のネットワーク上に設置されている2台のデータ端末(DTE)間でデータ伝送をする時に,
1.相手局が通信可能状態か否か,可能であるとした時,どういう順序でデータを交換し合うか,
2.伝送中にビット誤りがないかどうか,誤りがあった時にはそれをどのように確認しあい,その対処をどうするか,
3.ビット列がどういう配列(フォーマットという)になっているか,たとえば,始まりはどうなっていて,終りはどうなっているか,そのうちデータは何ビット目から始り何ビット目で終わるのか,
4.今送受信されているパケットは何を意味しているか,たとえば送信要求か,再送要求か,流量制御要求か,
5. 物理アドレスの制定規約.アドレスを何ビットとするか,その配列は昇順か降順か,アドレス付与を誰が責任を持つか,
6. パケットサイズを何ビットと定めるか,
などを規定するのがデータリンク層プロトコルの役割です.
 物理的に確立されているデータ端末間での論理的なネットワークの形成がデータリンク層の役割であって,ネットワーク層以上を介した接続には無関係です.BSC(ベーシック),HDLC,CSMA/CD,あるいはIEEE802シリーズ,ANSIのFDDI,ATM ForumのATM-LANなどがデータリンク層の有名なプロトコルです.
 

2.3 Network層

 2台のデータ端末間が同一ネットワークではなくて,間に複数の中継局を有するようなインターネットワークが介在する場合に,ネットワーク中に適切なルーティング経路を選択して,エンド・エンド間に相互のデータリンクを確立するための規約です.したがって,パケット交換における経路制御情報がこの層の主たる役割です.それに付随してデータ端末に設定されるアドレスなどの制定規約もこの階層に含まれます.
 また,誤まり率・通信速度/帯域設定・通信価格など
通信品質QoSなどの定義,およびパケット伝送中の異常事態の情報伝達もこの層の規約に含まれます.
 パケット交換における
X.25,インターネットにおけるIPプロトコル
などがこの層の代表的なプロトコルスイートです.
 

2.4 Transportation層

 この階層では,送受信データ端末間のプロセスを指定することでアプリケーション間のコネクションを確立します.また,パケットの再送制御順序制御フロー制御などを行うことによって,欠落無くパケットが確実にエンド・エンドで授受されるための規約を含みます.つまり,信頼性のあるコネクションがこの階層の役割です.
 アプリケーションの名前の設定と周知,緊急か否かなどアプリケーションに対して処理のタイミング指示などもこの階層の役割に入ります.
 インターネットにおけるTCPプロトコルはこの階層に属します.
 

2.5 Session層

 この層の役割は,トランスポート層で形成されたプロセス間の対話(dialogue)を成立させることです.そのためにネットワーク経路の確立切断時の回復データの同期などによって,途切れることのない信頼性のあるリンクを上位層(presentation層)に対して提供します.
 

2.6 Presentation層

 データの圧縮暗号化データ表現形式の変換など上位層のアプリケーション層の表現形式の相違を解消する機能を提供します.
 異機種間で情報の交換ができるのはこの層のおかげです.Eメールをやり取りしていて文字化けを経験した人がいると思いますが,あれはエンコードの規約の異なる端末間で相互にPresentation層が不完備であるために生じる例です.
 

2.6 Application層

 インターネットで言えば,電子メール(SMTP),ファイル転送(FTP),WWW(HTTP)などのアプリケーションに対応した規約を提供します.
 この層は,通信規約としては最上位階層ですが,実はそれよりもっと上に人間というユーザが位置しています.そのためこの層は人間とDTEとの間のインターフェース(マンマシンインターフェース)を構築することが目的となります.すなわち,ディスプレイに映像として静止/動画・白黒/カラーの画像や,テキストを表示したり,スピーカーを介して音を出したりというように人間の五感との対応を図るのがこの層の役割です.

第3節 インターネットのプロトコル構造

 OSI参照モデルに対応して,インターネットのプロトコル階層は下の図のようになります.OSIの上位3層は,HTTP,FTP,SMTP,等々のインターネットアプリケーションが一括して対応し,トランスポート層にはTCPやUDPが,ネットワーク層に対してはIP層が対応し,データリンク層にはEthernetやFDDIなど各種実在のネットワークが相当します.


図3.3.1 OSI参照プロトコルとTCP/IPの関係

 このような,プロトコル階層構造の中でインターネットをイメージしますと下の図のようになります.インターネットには,標準化されたアプリケーションも数多くありますが,TCPやIP層などがその主要プロトコルであり,細かく標準化がなされています.そこでインターネットのプロトコルセットを総称してTCP/IPと略して呼ぶことが多いようです.TCPもIPも,一つの特定のプロトコルを指していう呼び名ではありません.TCPプロトコル群,IPプロトコル群とでもいうべき多数のプロトコル体系から成り立っています.そして,これらはRFC(Request For Comment)という形で広く世界中から意見が提案され,それをインターネット活動委員会IAB(Internet Activities Board)が議決して標準化したものです.IABは原則として非営利のボランティア組織で,インターネットの普及に情熱を傾けている技術者や研究者が活躍する組織です.すなわち,インターネットは開放的で民主的な標準化プロセスを有しており,人類史上希に見る標準化の仕組だといっても過言ではありません.


図3.3.2 インターネットのイメージ図

 なお,ここでは扱いませんが公衆パケット通信網の世界標準であるX.25などは,物理層・データリンク層・ネットワーク層までを一括して記述していて,階層的な構造は希薄です.そしてこれらのレイヤで信頼性を確立しているため,それ以上のOSI参照プロトコル上位の階層についてはまったく規定していません.

第4節 階層化プロトコルによる処理の流れ

4.1 Eメールのプロトコルの流れ

 階層化されたプロトコル構造の中でデータ通信がどのように処理されていくのかを,身近なEmailを例にとって調べてみましょう.
アプリケーション層: ここでは,mail コマンドによって指示されるままにキーボードから記入します.以下はその例です.
  1. itoyo@pine[1 ]%  mail itoyo@pine.ese.yamanashi.ac.jp
    Subject: test
  2. 本文  こんちにちは,ご無沙汰していますがお元気ですか.これはテストです.ではさようなら.
  3. .
  4. EOT(End Of Text)
  5. itoyo@pine[2 ]%
 この記入の順序はSMTPというインターネットサービスプロトコルに合わせて行われていますが,この段階では人々がプロトコルを意識することはあまりないと思います.しかし,1から4までの作業がなされると,あとはSMTPが処理してバケツリレーによって宛先のメールボックスに転送してくれます.実際にEmailをパソコンなどから送信する場合には,ヒューマンインターフェースのよいユーティリティソフトウェアを使っているかもしれませんが,基本的には上のようにTELNETでのUNIXによるmailコマンドでの処理に適合させています.
プレゼンテーション層: 送信側では,上で入力したコードを標準バイナリーコードに変換し,セッション層に渡します.また,受信側ではセッション層から渡されたバイナリーコードのオブジェクトを,アプリケーション層の表現形式に変換してディスプレイなどに表示します.
セッション層: 送信側では,プレゼンテーション層で変換されたバイナリーコードのオブジェクトをTCP層の25番ポートに出力します.受信側では,TCP層から出力されたポート25から,送信側とパケットの流れを調整しながら受信し,それをプレゼンテーション層に渡します.
 ただし,SMTPでは上記のように三つの階層を厳密に意識して作られてはいません.インターネットのアプリケーションはOSI参照プロトコルの上位三層を渾然一体として作ってあるからです.
トランスポート層: 送信側では,上のセッション層からデータを受け取り,TCPセグメントを構成し,誤りがないかどうか,分割されたセグメントが順序どおり送られているかどうかなどを受信側と確認し合いながら送信します.受信側は,送信側とセグメントの誤りがないかどうかを確認し,誤りがあれば再送を要求し,受信すべき順序のセグメントがきていなければそのことを通知する,などしながら受信し結果をセッション層へポート25を介して届けます.
ネットワーク層: 送信側では,アプリケーション層で入力されたデータのうち送受信側のIPアドレスをデータグラムに入れます.宛先アドレスをみて,どのネットワーク経路で送り出すかも決定します.また,送信側のデータリンク層の最大転送単位に合致するようにデータをフラグメンテーション(細分化)したりします.受信側は,送信側のIPアドレスやハードウェアアドレスを記録し,返事を書く時のために備えたうえで受信し,結果をTCPセグメント分を抜き出してトランスポート層に出力します.
データリンク層: 送信側では,ネットワーク層のデータグラムを受け取り,データリンク層のフレームフォーマットに組み立てて物理層に渡します.渡すについて,物理層が他人によって使われていないかどうか,送信できるとすればそれを受信できる同一セグメント内のルータ等が受信可能になっているかどうかをチェックして転送します.これを受信したルータ等はフレームに誤りがないことを確認して,宛先セグメントのルータ等にフレームを転送します.受信側ノードのルータは,このフレームを受け取ると,IPアドレスからMACアドレスを調べ,これを宛先ホストに転送します.宛先ホストは,誤りをチェックした上で,データグラムを抽出して,ネットワーク層へ渡します.
物理層: 送信側の物理層ではフレームを,それぞれの物理層が決めているコードに変換し,それを電気信号等に変換してネットワークに送出します.受信側の物理層は,逆にデータリンク層を介して受信DTEにフレームを転送します.
 

4.2 パケットから見た処理の流れ

 具体的に,送信パケットから見た階層化プロトコルによる処理の流れを図に表したものが下の図です.まず,送信側ではインターネットアプリケーションを選択してそれにデータを入力します.たとえばEメールなら宛先やサブジェクトや本文などを入力します.それをTCP層に渡すと,そこでTCPヘッダーが付加されます.
 つぎにIP層では,宛先データなどをもとにしてIPデータグラムのヘッダー部が追加されます.これがデータリンク層に渡され,DNSの助けを借りて,IPアドレスに対応するMACアドレスなどを記入したデータリンクフレームが作られます.
 もし,宛先IPアドレスが,自分と直接つながっていないネットワークアドレスであれば,このデータリンクフレームはルーターに転送されます.ルーターは不要となったフレームヘッダーを棄てて,自分が持っている知識をもとにして最も適切なインターネット内ルータにIPデータグラムの形で転送します.


 図3.4.1 送信側における処理の流れ 

 IPアドレスをたよりにしながらインターネットを通過してきたIPデータグラムは,ARP機能によってIPアドレスとMACアドレスを照合し,判明したデータをもとにしてフレームヘッダーを付加し,LAN内に送り出します.MACアドレスにしたがってLAN内の適切なホストがパケットを受信し,フレームヘッダーを放棄,IPデータグラムヘッダーを廃棄して,TCP層に送ります.TCP層はそのセグメントヘッダーを解読して,送信先にデータの着信を知らせたり,付加すべきデータがあればその送信を促したりしながら,最終的にバッファに蓄積したデータの全てをアプリケーションに渡します.
 アプリケーションは,決められたフォーマットによってコンピュータを動作させます.


 図3.4.2 受信側における処理の流れ 

 上述のインターネット経由のパケットの流れの全体を下の図に示しました.まず,送信側のホストではアプリケーションが生成したデータにTCPセグメントヘッダーを貼り付けて,IP層に渡します.
 IP層はそれを受けて,宛先のIPアドレス等を記入したIPデータグラムヘッダーを添付してデータリンク層に渡します.
 データリンク層は,宛先IPアドレスから宛先MACアドレスを調べて,その結果をフレームヘッダーに記入して物理層を介して送信します.このとき,宛先IPアドレスが自分の所属するネットワークアドレスと違っていれば,ルータの宛先MAC アドレスを記入して送信します.

 このパケットを受け取ったルータは,フレームヘッダーは不要ですから削除し,IPデータグラムの形で,ルーティングテーブル情報に従って次のルータに送信します.ルータ間を転送されたIPデータグラムは,宛先ネットワークの入り口にあるBGPルータに到着します.

 受信先のBGPルータは,IPデータグラムの宛先IPアドレスから,適切なMACアドレスを記入したフレームヘッダーを貼り付けて,適切な受信ホストに転送します.
 これを受信したホストは,フレームヘッダーが不要になったのでこれを削除してIP層に送ります.IP層ではIPデータグラムヘッダーが正しいことを確認して,TCP層に送ります.
 TCP層は,次々と送られてくるセグメントパケットについて到着確認を送信元ホストに返事しながら,連続した全データの到着を待って,最後にそれらをまとめてアプリケーションに渡します.
 これを受け取ったアプリケーション層は,中のデータを取り出して,アプリケーションのサービスにあう表示をして通信を終了します.


図3.4.3 インターネットを経由したパケットの流れ


 to the Index page