第7章

データリンク層プロトコル

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


 第6章で見た「ネットワーク層」は,対外接続にかかわるインターネットワークの間での論理的コネクションを提供するプロトコルスタックでした.これに対して,データリンク層は,物理的に直接接続されている一つのネットワークの中の二つ又はそれ以上のDTE間のデータ伝送手段を提供するプロトコルです.
 すでに,第1章でネットワークの種類として紹介しておきました各種のネットワークの中でのデータ伝送の接続手順がこの階層のプロトコルです.したがって,それらに準じてここでは見ていくことにします.なお,データリンク層のパケットは,
フレーム(Frame)と呼ばれることになっています.

 用語集


 

1.Ethenetフレーム 

2.IEEE802.3 

 3.FDDI 

 4.PPP

5.VPN 


第1節 Ethernetフレーム

 Ethernetは,CSMA/CD型のネットワークでした.
 DIXヴァージョンのEthernetフレームの時間構造(Frame Formatと言います)は下の図のようになっています.図中の数値は,バイト(octets)を単位とします.DIXとは,Ethernetを開発したアメリカのコンピュータメーカーDEC(Digital Equipments Co.)社,Intel社,Xerox社の3社をいいます.


 図7.1.1 Ethernetフレームフォーマット 

1.1 Preamble(前文):フラッグ+フレーム開始開始デリミタ:

 10101010 10101010 10101010 10101010 10101010 10101010 10101010 10101011
のように8octetsを送出します.駆動回路の安定のための時間確保と受信側の同期化のための7octetsのフラグ同期ビットコード(preamble=前文),および信号の先頭を知らせるためのフレーム開始デリミタSD10101011です.この開始デリミタが来ると,各DTEはこれ以降が情報フレームであると認識します. 

1.2 宛先アドレス(Destination MAC address):

 接続相手のハードウェアアドレス,またはMAC( Media Access Control )アドレスで,6octets=48ビットのフィールドです.ところで,このMACアドレスは,IEEEによって管理されていて,世界中でユニークに(世界に二つと無いアドレスで)設定されています.実際にはLANボードメーカーに管理が割り当てられているため,上位3octetsがベンダーコード,下位3octetsが同一ベンダーではユニーク番号です.ただし,FF-FF-FF-FF-FF-FFは,特別に確保されていてブロードキャストのために使います.ARPなどを使う時はこのブロードキャストアドレスを利用します.
 自分のMACアドレスを知るには,UNIXマシンでは立ち上げ時に表示されますし,Windows PCなどでは,DOSモードに切り替えた上で,winipcfgと入力してみれば分かります.16進数でたとえば「00-60-08-A5-99-2F」のように表示されてきます.ここで,先頭部の00-60-08は某ベンダーのIDです.
 ところで,私たちは普段同じ(サブ)ネットワークに接続されている他人のコンピュータのMACアドレスなど知りません.(第一,自分のものだって知らないのだから??) しかし,コンピュータ同士はよく知っています.これはARP (Address Resolution Protocol)が動作しているからでした.(ARPについては第6章参照のこと
 ところで,コンピュータ通信ではアドレスとして,データリンク,ネットワーク,トランスポートの各層にわたって存在していますので注意が必要です.データリンク層では,「ハードウェア(MAC)アドレス」であり,ネットワーク層では「IPアドレス」,トランスポート層では「プロセスポート番号」でした.混乱しないように!!!
 

1.3 送信元アドレス(Source MAC Address):

 同様に,自分のMACアドレスです.おなじく6オクテットです. 

1.4 ETYPE:Ethernet Type:

 ETYPEフィールドの次にはDATAがきますが,そのデータ中にはその先頭部にネットワーク層のデータグラムのヘッダがきます.このプロトコルのタイプを表示するのがETYPEフィールドです.2オクテットで表現され,RFC1340で規定されており,詳細は下の表のようになっています.ちなみに,16進数表現で,IPでは080016,前章で学習したARPは080616RARPは803516です.
 たとえばARPであってこれによってMACアドレスを調べるのであれば0806と入れて,DATAフィールドにARPパケットが入ることになります.また,普通のインターネット通信であれば,IPを示す0800が入って,IPデータグラムがDATAフィールドを埋めることになります.

表1

1.5 DATA:

 ここにデータが入ります.EthernetではMTU(最大転送単位)は1,500octetsですから,46〜1,500オクテットまでこのフィールドに入れることができます.MTUで最大値に制限を加えているのは,これを無制限にしますとイーサーネットのようなバス型ネットワークではアクセスに成功したDTEがネットワークを長時間占有してしまい他のDTEがアクセスできなくなるからです.
 また,46octetsという最小値も規格化されているのには別の訳があります.もしこの値が小さすぎますと,送ったフレームパケットがネットワークの何処かで衝突を起こしていてもそれに気がつかないで送信を終了したと判断してしまう可能性があります.特に総延長の長いネットワークではその可能性が高くなります.そこで最小値を規格化し,もしデータが無い場合にはここにパディング(擬似データを埋めこむこと)してでも最小データ46octetsを挿入します.こうすれば送信中に必ず自分の送信フレームと異なる信号が衝突検知システムによって検出され送信失敗を知ることが出来ます.
 こうして送信に失敗したDTEは,ジャムを発信して一旦送信作業を中止します.その手順は既に1.4.3で述べました.
 

1.6 CRC(Cyclic Redundancy Check):

 誤り訂正符号が入ります.その生成多項式は,

G(X)=X32+X26+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X+1

です.検査対象範囲は,プリアンブルと開始デリミタを除き,宛先アドレスからDATAまでのすべてです.これによって,二つのDTE間でフレームが正しく伝送されているか否かを判定します.この生成多項式に対する巡回シフトレジスタについては第二章を参照してください.

第2節 IEEE802.3 CSMA/CD

 IEEE802.3は,もともとDIXのEthernetをIEEEで標準化したものですから,両者はほとんど同一ですが,それでも下の図のように細部で若干異なります.そのため不幸にして両者は同一ネットワーク内に共存できますが,交信は出来ません.その相違点のもっとも本質的なところは,IEEE802.3は,データリンク層をを二分して,LLC層(Logical Link Control layer)MAC層(Media Access Control layer)を設けてあることです.そして,厳密に言えば,このIEEE802.3はMAC層を規定していて,LLC層はIEEE802.2という標準化規約に属します.


 図7.2.1 EthernetとIEEE802.3の相違 

 IEEE802.3 CSMA/CDのフレームフォーマットを下の図に示します.(数字はoctet数を表わす)


 図7.2.2 IEEE802.3 フレームフォーマット 

 Ethernetと異なる部分だけ説明します.

2.1 SD(starting delimiter開始デリミタ)

 10101011です.実効的にはEthernetと同一です.Ethenetではpreambleとして一括していたものをSDとして区分したという定義の違いだけです.

2.2 length

 2オクテットのフィールドで,DATAフィールドの長さをByte(octets)を単位として挿入します.DSAP,DATAの和が46octet以上で,MTU(最大転送単位)1,500octet以下と定められています.ゆえにDATAとしては1,492octet以下でなくてはなりません.これ以上のものは,上位のネットワーク層のフラグメンテーションの対象となります.また,46octet以下の場合にはDATAフィールドの最後にPadding(埋め込み)します.PADの内容の規定はありません.
 

2.3 LLC(Logical Link Control)

 3オクテットのLLC層は,論理リンク制御部でポーリング・セレクティング方式を意図して挿入されています.

2.3.1 DSAP:Destination Service Access Point

 DSAPとは,受信ノードに複数のDTEがある場合にその端末番号のことです.1octetのフィールド.DSAP,SSAP,制御部はLLC層に属します.ここには,HDLCのプロトコルが持ち込まれています.

2.3.2 SSAP:(Source Service Access Point)

 送信ノードに複数のDTEがある場合にその端末番号.1octetのフィールドです. 

2.3.3 制御部

 1octetのフィールドです.HDLCプロトコルのコマンド/レスポンスがここに持ち込まれているためEthernetに比べて複雑です.要は,送受信間の対話手順やフレームの性格規定が盛り込まれています.

 コマンド/レスポンス

2.4 SNAP(Sub-Network Access Protocol

 SNAPは,5オクテットのフィールドで,そのうち最初の3オクテットはDataフィールドのプロトコルタイプを示し,つづく2オクテットはEthernetのETYPEと同一のフィールドです.

2.5 DATA

 DIXヴァージョンに比べてLLC層を持つだけ減少して,38〜1492ctetsとなります. 

2.5 FCS: Frame Check Sequence

 4オクテットのCRC符号で,その生成多項式は上述のEthernetと同じで,

G(x)=X32+x26+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1 

です.検査範囲は,宛先アドレスからDATAまでのすべてであることもEthernetと同じです.

 動作説明


第3節 FDDI

3.1 FDDIトークン

 FDDIはトークンパッシングリングですから,伝送データが無い状態ではトークンだけが伝送されています.そのトークンは下図のような姿をしています.各8ビットの開始デリミタSD(Starting Delimiter),アクセス制御AC(Access Control),終了デリミタED(Ending Delimiter)からなります.


 図3.1.1 FDDIトークン 

SD:Starting Delimiter これは8ビットフィールドで,トークンまたはフレームの先頭を表わすフィールドです.「JK0JK000」となっていますが,<J>や<K>は波形であって意味を持ったコードではありません.こういうものをバイオレーションコードといいます.<0>は意味を持ったコードでこの場合は差分(マンチェスター)コード(<0>では,−Eから+Eへ,または+Eから−Eへ変化し,<1>では変化しない)が使われています.

 SDの波形

AC:Access Control 8tビットフィールド.優先度や優先予約をして,送り出したいフレームの局間調整を行うために設けてあります.「PPPTMRRR」となっていますが,ここに;

ED:Ending Delimiter  8ビットフィールドで,<JK1JK1IE>と入ります.<J>や<K>はバイオレーションコード,<I>は,Intermediate-frame Codeといい,トークンでは常に<1>が入り,後続のないフレームや単独のフレームではこれが最後であることを表わして<0>が入ります.<E>は通常は<0>が入りますが,FCSに誤りがチェックされたときは<1>とします.

3.2 FDDIフレーム

 下の図は,FDDIフレームの全体構造を示します.SD,AC,EDはトークンと同一ですから説明は省略します.


 図3.2.1 FDDIフレームフォーマット 

FC:Frame Control 8ビットフィールドで<FFZZZZZZ>となっています.後続のDATA部フィールドの性格を規定します.
DA: Destination Address 2または6octetのフィールド.CSMA/CD(Ethernet等)と同一規格のアドレスです.
 
SA: Source Address 2または6octetのフィールドです.CSMA/CDと同一規格のアドレスです.
 
FCS: Frame Check Sequence 32ビットのCRC符号を用います.生成多項式は既述のEthernetなどと同じです.
 
FS: Frame State 6ビットのフィールドで<ACrrACrr>となっています.フレームの扱いを規定します.

 FDDIの動作説明


第4節 PPP

4.1 PPPプロトコルとは

 PPP( Point-to-Point Protocol)は,リモートアクセス用のマルチプロトコルです.RFC1661に定義されています.インターネットでは電話回線によるダイアルアップ接続に使われていておなじみです.リモートユーザは,ネットワークサービスプロバイダが用意しているPPPポートを介してファイル転送,電子メール送受信,WWW受信ばかりでなく,インターネット活動の殆どすべてが行えるようになっています.HDLC( High level DataLink Protocol )に準拠しています.
 同種のプロトコルにSLIP(Serial Line IP)がありますが,これはIPデータグラムだけを送受信することのできるプロトコルです.これに対してPPPは,IP以外にIPX,DECnet,AppleTalkなど多様なネットワーク層のプロトコルを扱えるという特長を有しています.ただし,一つのパケットには一種類のプロトコルであることは言うまでもありません.
 PPPのフレーム構成を下の図に示します.


 図7.4.1 PPPのフレームフォーマット 

preamble: 同期用の24ビットフィールドのフラグコードです.
011111101111111100000011
が入ります.この24ビットについては規約上は,最初の8ビット「01111110」はフラグフィールド,次の「11111111」はアドレスフィールド,そして最後の「00000011」は制御フィールドというように定義されていますが,実際にこの区分は有効ではありませんので,ここでは一括してpreambleとしておきました.
 
protocol: 後続のデータの種別を16進数で指示します.たとえば,IPなら0x0021,Van Jacobson圧縮のIPデータグラムであれば0x002dです.また同時にネットワーク制御プロトコルNCP( Network Control Protocol)も併せて定義されていて,IPCP( IP Control Protocol)なら8021,パスワード認証プロトコルPAPならc021などです.ただし,これらのうちの一つだけが使われるだけで,同時に二つ以上のプロトコルを指定することはできません.これらは,RFC1340で規定されています.
 
DATA: 任意の長さのデータフィールドです.これについては4.2節で説明します.

FCS: 16ビットでIEEE802.3のフレームと同一です.

7E これはフラグで16進数では7Eですが,2進数で,
01111110
の8ビットが入ります.

4.2 PPP接続手順

 インターネットリモートユーザがPPPによってインターネットにログインする手順を見てみましょう.

@ まず,電話線(シリアルライン)に接続されているターミナルアダプタに接続要求を発します.
A すると,PPPはリンクの開設を始めます.つまりLCP( Link Control Protocol)によってリンクを開く動作に移ります.この場合IPリンクの初期設定ですから図7.4.1のProtocolフィールドには8021のIP制御プロトコルが指定されます.そしてそのデータフィールドには下の図7.4.2のLCPパケットが入れ込まれます.そのLCPの「Codeフィールド」には設定要求「00000001」が,「識別子フィールド」には適当なID番号が埋め込まれてセッションの識別に使われます.また,「長さフィールド」にはLCPパケットの全長がビット単位で表示されます.


 図7.4.2 PPPにおけるLCPパケットフォーマット 

B なお,上図のCodeフィールドには次のような番号が使われます.
1=設定要求,2=設定に対する応答(ACK),3=設定に対する否定応答(NACK),4=設定拒絶,5=終了要求,6=終了応答確認,7=コード拒絶,8=プロトコル拒絶,9=エコー要求,10=エコー応答,11=廃棄要求,12=識別,13=残存時間.
C 上図のCodeフィールドに00000001が埋め込まれた
設定要求を行う場合にはそのDataフィールドに下の図7.4.3のような設定要求Optionパケットが入れ込まれます.この場合のTypeフィールドには次のようなタイプ値が決められています.これらをDataフィールドに連続して入れ込むことでPPPの設定を終了します.
0=未使用,2=最大受信単位(MRU),3=認証プロトコル,4=品質プロトコル,5=マジックナンバー,7=プロトコルフィールド圧縮,8=アドレス及び制御フィールド圧縮,9=FCS選択,10=自己記述パディング,13=コールバック,15=複合フレーム,17=マルチリンク最大受信再構成単位(MRRU),18=マルチリンクショートシーケンス番号ヘッダ,19=マルチリンクエンドポイント識別子.


 図7.4.3 LCPオプション 

D PPPの初期設定が終了したら,IPデータグラムを送受信します.


 

第5節 VPN

 本社Aと支社B間で協働作業をするためにネットワークを構築するというような場合には,セキュリティを保持する立場から専用線サービスに頼るのが今までのやり方でした.専用線は,自分たちだけが占有して使えるのですからセキュリティでもトラフィック上でも優れているには違いないのですが,料金がかさむのはつらいことです.現代のようにすべてが国際化・分散化している時代には業務用のネットワークを全て専用線でまかなっていてはコストが膨大になります.まして,国外支社とのネットワーク化となればなおさらです.
 そこで,インターネットの共有性を使って,低廉で,しかもセキュリティに強いネットワークをという要求に応えて出現したのがVPN( Virtual Private Network)です.その大体のイメージを下図に示します.


 図7.5.1 VPNの概念図 

 上図のように今,本社Aからデータをパケットにカプセル化して支社Bに向けて送信する場合に,一旦VPN装置(ゲートウェイ)に送信します.すると,このVPN装置は,そのパケット全体を暗号化してVPNパケットの中にカプセル化して受信点のVPN装置宛に送信してくれます.受信地点では,VPN装置がカプセルを解いて支店B宛に届けます.
 このIP層の暗号化部分を司るプロトコルのことをIPsec( IP Security Protocol)といいます.その詳細については,RFC2402に詳しいのでここでは省略します.


 back to the Index page