リンク層
arch 輪講会 by hoshikyu
!
イントロダクション リンク層の役割
①IPモジュールに対するIPデータグラムの送受信
②ARPモジュールに対するARP要求・応答の送受信
③RARPモジュールに対するRAP要求・応答の送受信
!
!
!
ARP
リンク層
RARP
ハードウェア
!
IPICMP IGMP
ネットワーク層
EthernetとIEEE802カプセル化
EthernetとIEEE802カプセル化
・Ethernetは、1982年にDEC、インテル、
ゼロックスの3社によって策定された標準規格。
・CSMA/CD(Carrier Sense,Multiple Accsess
with Collision Detection)と呼ばれるアクセス
方式を利用している。
・伝送速度は10Mビット/秒で、48ビット・アド
レスを用いる。
・数年後、IEEEの802委員会が若干修正加えた
あと、標準規格として採用した。
EthernetとIEEE802カプセル化
IEEEの標準規格の
802.3 → CSMA/CDネットワーク
802.4 → トークンパス・ネットワーク
802.5 → トークンリング・ネットワーク
を定義。
!
これら3方式に共通するものは、他の802ネット
ワークの多くにも共通する論理リンク制御
(LLC)を定義した802.2。
EthernetとIEEE802カプセル化
TCP/IPの世界では、IPデータグラムのカプセル化
は、
!
Ethernet → RFC894
IEEE802ネットワーク → RFC1042
!
で定義されている。
EthernetとIEEE802カプセル化
ホスト要求RFCでは10Mビット/秒のEthernetケーブルに接続
されたすべてのInternetホストに対して次のように求めている。
!
①RFC894(Ethernet)カプセル化のパケットの送受信が可能で
なければならない。
②RFC894パケットと混在したRFC1042(IEEE802)パケット
の送受信が可能であるべきである。
③RFC894カプセル化のパケットの送信が可能であったほうが
よい。もし、ホストが2つのタイプのパケットを送信できる場合、
送信パケットのタイプは設定可能でなければならず、かつ設定オ
プションのデフォルトはRFC894パケットでなければならない。
EthernetとIEEE802カプセル化
IEEE802の図
EthernetとIEEE802カプセル化
Ethernetカプセル化の図
EthernetとIEEE802カプセル化
・2つのフレーム形式とも48ビット(6バイト)
の宛先及び発信元アドレスをもつ。
これらは文書全体を通じてハードウェア・アドレ
スと読んでいるもの。
・802のデータ長フィールドは、それ以降、最後
尾のCRCを除くバイト数の合計を示す。
・Ethernetのタイプ・フィールドは、以下に続く
データのタイプを特定する。
EthernetとIEEE802カプセル化
・802フレームでは、同じタイプ・フィールドは
SNAP(サブネットワーク・アクセス・プロトコ
ル)ヘッダの最後に置かれる。
・Ethernetフレームでは、データはタイプ・フィー
ルドの直後に続くが、802フレーム形式では、3
バイトの802.2LLCと5バイトの802.2SNAPが続
く。
EthernetとIEEE802カプセル化
・DSAP(宛先サービス・アクセス・ポイント)
とSSAP(送信元サービス・アクセス・ポイント)
は、双方とも0xaaに設定される。コントロール・
フィールドは3に、次のオリジナルコードの3バ
イトはすべて0に設定される。それに続く2バイ
トのタイプ・フィールドは、Ethernetフレーム形
式と同じもの。
EthernetとIEEE802カプセル化
・CRCフィールドは、循環冗長チェック(チェッ
クサム)であり、フレームのエラーを検索するた
めのものである。
!
・データの最小値は、802.3では38バイト、    
Ethernetでは46バイト。
↓
そこで、フレームのデータ長をその長さにするた
めに、パッドデータが挿入されることもある。
トレーラーカプセル化
トレーラーカプセル化
・RFC893で定義されている、Ethernetの別のカ
プセル化。
・DECのVAX上で稼働していた初期のBSDシス
テムの実験的なもので、IPデータグラムのフィー
ルドの順序を入れ替えて処理性能の改善を図ろう
としたもの。
15
トレーラーカプセル化
Ethernetフレームのデータ部分の最初に置かれる
可変長フィールド(IPヘッダとTCPヘッダ)が、
最後尾(CRCの直後)に移動してある。
↓
これにより、フレームのデータ部分がハードウェ
ア・ページにマップされ、データがカーネルにコ
ピーされている時、メモリー間のコピー処理を省
略できるようになる。
!
今は殆ど使われていない・・
SLIP(Seril Line IP)
SLIP
・シリアル回線上のIPデータグラムための単純な
カプセル化したもの。
・RFC1055で定義されている。
・(当時は)ほとんどのパソコンが内蔵している
RS-232シリアルポートと高速モデムを経由して
インターネットに接続する方法として一般的。
(現在はPPPに取って代わられている ※後述)
SLIPのルール(1)
・END(0xc0)と呼ばれる特別なキャラクタで終
了する。
・データグラムの転送を確実なものにするため、
ほとんどの実装ではノイズを排除する目的で、
データグラムの先頭にもENDキャラクタを転送す
るようになっている。
    
c0 c0
先頭にもつける!
SLIPのルール(2)
・もしIPデータグラムの中の1つのバイトがEND
キャラクタと同じであれば、2バイト・シーケン
スの0xdb、0xdcをかわりに転送する。
・これはSLIP ESCキャラクタと呼ばれ、ASCII
ESCキャラクタとは別物。
    
db
c0
変更!
dc
SLIPのルール(3)
・もしさらにIPデータグラムの中の1つのバイト
がSLIP ESCキャラクタと同じであれば、2バイ
ト・シーケンスの0xdb、0xddをかわりに転送す
る。   
db
cb
変更!
dd
SLIPの欠点
①それぞれのエンドは、予め双方のIPアドレスを
認識している必要がある。
②タイプ・フィールドがない。
(Ethernetフレームのフレーム・タイプフィール
ドに該当するものがない。)
③SLIPで追加できるチェックサムはない。
(EthernetフレームでCRCフィールドに該当す
るものがない。)
圧縮SLIP
・SLIP回線は低速であり、双方向トラフィックに
頻繁に利用されるので、SLIP回線上には小さいパ
ケットが大量に流れる傾向にある。
(TelnetやRloginなど)
・1バイトのデータを仮に転送するだけでも、2
0バイトのIPヘッダと20バイトのTCPヘッダが
必要となり、オーバーヘッドは40バイトになっ
てしまう。
20バイト 120バイト
圧縮SLIP
・処理速度の改善のため生まれたのがCSLIP。
・40バイトのヘッダを3∼5バイトにできる。
・SCLIPリンクの双方のエンドで最大16のTCP
コネクションの状態を維持し、各コネクションの
2つのヘッダにあるいくつかは不変であることを
認識することによって圧縮している。
13∼5バイト
PPP
(ポイント・ツー・ポイント・プロトコル)
PPP
・SLIPの欠点をすべて改善したプロトコル。
・シリアル・リンク上でIPデータグラムをカプセ
ル化する方法。
・8ビット、パリティなしの非同期リンクとビッ
ト指向の同期リンクの双方をサポートする。
・データ・リンク接続を確立し、コンフィギュレー
ションし、テストするリンク制御プロトコル
(LCP)
・各種のネットワーク層プロトコルに対応した一
連のネットワーク制御プロトコル(NCP)
PPPのルール
・各フレームの最初と最後には、0x7eという値
を取るフラグ・バイトが置かれる。その次に必ず
0xffという値をとるアドレス・バイトが続き、そ
の後に0x03という値の制御バイトが続く。
・それに続くのがプロトコルフィールド。
・CRCフィールドは循環冗長チェック。
7eff7e 03 情報 CRC 7e
フラグ アドレス 制御  プロトコル              フラグ
PPPのルール
・0x7eという値のバイトはフラグ・キャラクタ
であるため、PPPではそれが情報フィールドに現
れた場合、エスケープする必要がある。
・同期リンクでは、ビット・スタッフィング(埋
め込み)と呼ばれるテクニックを用いてハードウェ
アが処理する。
・一方、非同期リンクでは、0x7dという特別な
バイトエスケープ・キャラクタとしては用いられ
る。
PPPのESC
・PPPフレームにこのエスケープ・キャラクタが
現れると、フレームの特定のキャラクタ第6番目
のビットの補数がとられる。
①0x7eは、0x7d、0x5eの2バイト・シーケンス
として転送される。これはフラグ・バイトのエス
ケープである。
    
0x7e
変更!
0x7d 0x7e
PPPのESC
②0x7dは、0x7d、0x5dの2倍とシーケンスと
して転送される。これはエスケープ・バイトのエ
スケープである。
    
0x7d
変更!
0x7d 0x5d
PPPのESC
③デフォルトでは、0x20位家の値(すなわち
ASCⅡ制御キャラクタ)もエスケープされる。
このようなことを行う理由は、これらのバイトが
ASCⅡ制御キャラクタとして、双方のホストのシ
リアル・ドライバやモデムに認識されることを防
ぐため。
0x01
変更!
0x7d 0x21
例えば0x01なら
PPP(圧縮)
・PPPはSLIPと同様、しばしば低速なシリアル・
リンク上で利用されるため、フレームあたりのバ
イト数を減らすことが、インタラクティブ・アプ
リケーションのレスポンス向上につながる。
↓
・ほとんどの実装は、リンク制御プロトコルを用
いて、値が一定のフラグやアドレス・フィールド
を省略し、プロトコル・フィールドのサイズ2バ
イトから1バイトに削減できるようにしてある。
PPP(まとめ)
①単一のシリアル回線上で、IPデータグラムだけ
でなく、複数のプロトコルをサポートする。
②循環冗長チェックをすべてのフレームで行え
る。
③各エンドとIPアドレスを動的に交渉できる。
④CSLIPと同様の方法で、TCPとIPヘッダを圧縮
することができる。
⑤リンク制御プロトコルで様々なデータリンク・
アプションが交渉できる。
ループバック・インターフェース
ループバック・インターフェース
・ほとんどの実装では、同一ホスト上のクライア
ントとサーバーがTCP/IPで通信できるようにす
るループバックインターフェースをサポートして
いる。
・クラスAのネットワークID127はループバック
インターフェースのために予約されている。
・従来からほとんどのシステムは、このインター
フェースに127.0.0.1というIPアドレスと
localhostというホスト名を割り当てている。
ループバック・インターフェース
・あて先のエンドがループバックインターフェー
スだということを検知したら、トランスポート層
やいくつかのロジックとネットワーク層のロジッ
クをショートカットする?
↓
・そうはせず、ほとんどの実装ではトランスポー
ト層とネットワーク層のデータ処理がすべて実行
され、その後ネットワーク層の下から出たデータ
グラムはそのまま元に回帰するようになってい
る。
ループバック・インターフェース
MTU
MTU
・Ethernetカプセル化 → 1500バイト
・802.3カプセル化   → 1492バイト
というフレームサイズの限界がある。
!
このリンク層の特徴を 
MTU(最大転送ユニット) という。
!
IPが送信するデータグラムがリンク層のMTUより大
きい場合IPはデータグラムをMTUより小さなサイズ
に断片化する フラグメンテーション を行う。
MTU
MTUの例
!
!
!
!
!
ポイント・ツー・ポイント・リンクなどのMTU
は、ネットワーク伝送媒体の物理特性というわけ
ではなく、妥当なレスポンスタイムを維持するた
めの論理的な限界を表している。
パスMTU
パスMTU
!
同一ネットワーク上の2代のホストが相互に通信
するとき、ネットワークのMTUが重要となる。
↓
!
しかし、2代のホストが別々のネットワーク上に
存在するときは、それぞれのリンクで異なるMTU
を持つことになる。
↓
パスMTU
↓
その場合に重要となるのは双方のホストが接続さ
れている2つのネットワークのMTUではなく、2
代のホスト間でパケットが流れるデータリンク上
の最小のMTUである。
↓
それがパスMTU
パスMTU
・2台のホスト間にあるパスMTUは一定ではない。
それらはつねに伝送回路に依存する。
・ルーティングは必ずしも対照的であるとは限ら
ないため、MTUは方向の経路で同じである必要は
ない。
!
!
!
!
詳しくは11章へ続く・・・
A
ルーティングが方向によって変わるかも?
B
シリアル回線スループット計算
シリアル回線スループット計算
回線速度が9600ビット/秒で、8ビット長、
1スタートビット、1ストップビットの場合
↓
回線の速度は960バイト/秒 になる
↓
この速度で1024バイトのパケットを送信する
↓
所要時間は1066ミリ秒 となる
シリアル回線スループット計算
SLIPリンクのMTUを256バイトに削減すると
↓
単一のフレームがリンク状を流れる時間の総量は最大
で266秒となり、その半分の時間(平均待ち時間)は
133ミリ秒となる。
↓
この程度であれば悪くはないが、それでも十分とは言
えない。
↓
MTUを256より小さくすると、大容量データ転送の最
大スループットも落ちてしまう。
シリアル回線スループット計算
しかし、ここでの平均待ち時間の計算(最大サイズフレーム
の転送に要する時間の2分の1)は、SLIPリンクがインタ
ラクティブ・トラフィックと大容量データ転送の両方に用い
られている場合のみ適用される。
↓
インタラクティブ・トラフィックだけのやりとりであれば、
双方向の1バイトのデータ転送に要する往復時間は、9600
ビット/秒でおよそ12.5秒となる。
↓
この時間なら、人間工学的にも十分に妥当な時間!
(ヘッダが削減されることで、1バイトのデータに要する往
復時間が大幅に改善されている)
シリアル回線スループット計算
・こうした計算は、エラー訂正やデータ圧縮機能
が搭載された新しいモデムが利用されているとき
は、残念ながらなかなか困難である。
!
・とはいえ、こうした計算が、正しい判断を行う
ときのスタート・ポイントになることは間違いな
い。
!
・・・後の章でシリアルリンク上を流れるパケットを観察するときの
タイミング検証をこのシリアル回線スループット計算で行うようです
END

リンク層