pie新人教育セッション - 詳解TCP/IP Vol.1
~Chapter2~ リンク層
発表者: three
アドバイザ: egichan
質問者: yuuki, kanetaka
2.1 イントロダクション
リンク層の役割



1) IPデータグラムの送受信
2) ARP要求・応答の送受信
3) RARP要求・応答の送受信
TCP/IPは、Ethernetやトークンリング、
FDDI、RS-232シリアル回線など、ネット
ワーク・ハードウェアのタイプに応じて、多
種多様なリンク層をサポート。
2.1 イントロダクション
第2章で扱う内容





Ethernetリンク層の詳細
SLIPとPPP
ループバック・ドライバ
MTU
シリアル回線MTU設定方法
2.2 EthernetとIEEE802カプセル化
Ethernetとは? ①


1982年にDEC、インテル、ゼロックスの3社
によって策定された標準規格。今日のTCP/IP
を利用するほとんどのLANで用いられる。
CSMA/CD(Carrier Sense, Multiple Access
with Collision Detection:搬送波感知多重ア
クセス/衝突検出)と呼ばれるアクセス方式を
利用。
2.2 EthernetとIEEE802カプセル化
Ethernetとは? ②


開発から数年後、IEEEの802委員会が若干
の修正を加え、標準規格として採用。
IEEE標準規格の定義
 802.3
 802.4
 802.5
 802.2
・・・CSMA/CDネットワーク
・・・トークンバス・ネットワーク
・・・トークンリング・ネットワーク
・・・これら3方式に共通する論理リンク制御
を定義。
2.2 EthernetとIEEE802カプセル化
カプセル化 ①


IPデータグラムのカプセル化は、EthernetがRFC894、
IEEE802ネットワークがRFC1042に定義されている。
ホスト要求RFCでは、10MbpsのEthernetケーブルに
接続された全てのInternetホストに対して、次のように
求めている。
 RFC894カプセル化のパケットの送受信が可能であること。
 RFC894パケットと混在したRFC1042パケットの送受信が可
能であること。
 RFC1042カプセル化のパケットが送信で可能であったほうが
よい。もし、両者の送信が可能なら、送信パケットタイプは設
定可能で、かつ設定オプションのデフォルトはRFC894でなけ
ればならない。
2.2 EthernetとIEEE802カプセル化
カプセル化 ②

2つのフレーム形式とも48ビット(6バイト)の
宛先と発信元アドレスを持つ。
 これらは、ハードウェア・アドレスと呼ぶ


ARPとRARPプロトコルは、32ビットのIPアドレ
スと48ビットのハードウェア・アドレスを変換。
次の2バイトからデータフィールドまでは、フ
レーム形式で異なる。
2.2 EthernetとIEEE802カプセル化
カプセル化 ③

Ethernetカプセル化(RFC894)
 次の2バイトはタイプ・フィールドで、以下に続く
データのタイプを特定。
 その後に、データフィールドとCRCフィールドが続く。
2.2 EthernetとIEEE802カプセル化
カプセル化 ④

802.2/802.3カプセル化(RFC1042)
 次の2バイトはデータ長フィールドで、それ以降、最
後尾のCRCを除くバイト数の合計を表す。
 その次に、3バイトの802.2 LLCと5バイトの802.2
SNAP(サブネットワーク・アクセス・プロトコル)
フィールドが続く。(802.2 SNAPフィールドに含まれ
るタイプ・フィールドは、Ethernetフレームに含まれ
るタイプ・フィールドと同じ)
2.2 EthernetとIEEE802カプセル化
カプセル化 ⑤

CRCフィールド
 循環冗長チェック(チェックサム)であり、フレーム
のエラー検出に用いる。

802.3およびEthernetフレームには、最小サイ
ズがあり、その値は802.3では38バイト、
Ethernetでは46バイトとなっている。
2.3 トレーラー・カプセル化
RFC894とは別のEthernetカプセル化。
RFC893に定義されている。
Ethernetフレームのデータ部分の最初に置かれ
ている可変長フィールドを、最後尾に移動させる
ことにより、処理性能の改善を図ろうとしたもの。
ただ、今日ほとんど利用されていないため省略さ
れている。興味のある人は、RFC893の第11章8
節を参照!
2.4 SLIP: シリアル回線IP
シリアル回線上のIPデータグラムのための
単純なカプセル化。RFC1055に定義。
ほとんどのコンピュータが内蔵しているRS232シリアルポートと高速モデムを経由し
て、システムをInternetに接続する方法と
して一般的に。
2.4 SLIP: シリアル回線IP
フレーム構築には以下のルールが適用される。



IPデータグラムは、END(0xc0)と呼ばれる特別なキャ
ラクタで終了する。データグラムの転送を確実なもの
にするために、データグラムの先頭にもENDキャラク
タを転送するようになっている。
IPデータグラムの中の1つのバイトがENDキャラクタと
同じである場合、2バイト・シーケンスの0xdb、0xdcを
代わりに転送。(この特殊なキャラクタはESCキャラク
タと呼ばれ、ASCII ESCキャラクタとは異なる)
IPデータグラムの中の1つのバイトがSLIP ESCキャラ
クタと同じである場合、2バイト・シーケンスの0xdb、
0xddを代わりに転送
2.4 SLIP: シリアル回線IP
単純なフレーミング方法であるゆえに、いくつか
の欠点がある。



それぞれのエンドは、あらかじめ双方のIPアドレスを
認識している必要がある。一方のエンドから他方にIP
アドレスを通知する方法は無い。
タイプ・フィールドが無い。シリアル回線がSLIPに利用
されている場合、同時に他のプロトコルで利用するこ
とはできない。
SLIPで追加できるチェックサムは無い。転送中にデー
タグラムを破壊した場合、それは上位層で検出される
ことになる。そのため、上位層がある種のCRC形式を
提供する必要がある。
2.5 圧縮SLIP
SLIP回線は一般に低速で、双方向トラ
フィックに頻繁に利用されることから、SLIP
回線上には小さいTCPパケットが大量に流
れる傾向にある。
1バイトのデータを転送するだけでも、20
バイトのIPヘッダと20バイトのTCPヘッダ
が必要なため、オーバーヘッドは40バイト
になってしまう。
2.5 圧縮SLIP
この状況を改善するために、RFC1144で、
CSLIP(圧縮SLIP)と呼ばれるSLIPの新
バージョンが定義された。
CSLIPでは、40バイトのヘッダを3~5バイ
トに圧縮することができる。

これにより、双方向のレスポンス・タイムは劇
的に向上される。
2.6 PPP: Point to Point Protocol
SLIPの欠点を全て解決したプロトコル。

RFC1548で、カプセル化方法とリンク制御プロトコルを、
RFC1332で、IPのネットワーク制御プロトコルを定義。
以下の3つのコンポーネントで構成。



シリアル・リンク上でIPデータグラムをカプセル化する
方法。PPPは、8ビット、パリティ無しの非同期リンクと
ビット指向の同期リンクの双方をサポート。
データ・リンク接続を確立し、コンフィグレーションし、テ
ストするリンク制御プロトコル(LCP)。
各種のネットワーク層プロトコルに対応した一連の
ネットワーク制御プロトコル(NCP)。現在、IP、OSIネッ
トワーク層、DECnet、AppleTalk用の各RFCが発行。
2.6 PPP: Point to Point Protocol
フレーム形式 (Fig.2.3)




最初と最後に、0x7eと言う値をとるフラグ・バイトが置
かれる。
その次に必ず0xffと言う値をとるアドレス・バイトが続
き、その後に0x03と言う値の制御バイトが続く。
それに続くのがプロトコル・フィールドで、Ethernetのタ
イプ・フィールドと同等の役割を果たす。
その後に、CRCフィールドが続く。
(CRCフィールドは、フレームのエラーを検知するためのチェックサム)
2.6 PPP: Point to Point Protocol
PPPはSLIP同様、しばしば低速なシリアル・リンク
上で利用されるため、フレームあたりのバイト数
を減らすことが、インタラクティブアプリケーション
のレスポンス向上につながる。
ほとんどの実装では、リンク制御プロトコルを
使って、値が一定のフラグやアドレス・フィールド
を省略し、プロトコル・フィールドのサイズを2バイ
トから1バイトに削減できるようにしてある。また、
IPネットワーク制御プロトコルにより、CSLIPと同
様のヘッダ圧縮によりIPおよびTCPヘッダサイズ
を削減できるようになっている。
2.6 PPP: Point to Point Protocol
PPPとSLIPを比較して・・・

利点
 単一のシリアル回線上で、IPデータグラムだけでなく、複数の





プロトコルをサポートする。
循環冗長チェックを全てのフレームで行える。
各エンドとIPアドレスを動的に交渉できる。
CSLIPと同様の方式でTCPとIPヘッダを圧縮できる。
さまざまなデータリンク・オプションが交渉できる。
利点の代償
 フレームあたり3バイトの追加的なオーバーヘッド
 リンクを確立するときに必要な交渉のためのフレーム
 より複雑な実装
2.7 ループバック・アドレス
ほとんどの実装では、同一ホスト上のクライアン
トとサーバーがTCP/IPで通信できるようにする
ループバック・インタフェースをサポート。
クラスAのネットワークID127は、ループバック・
インタフェースのために予約されている。

従来から、ほとんどのシステムは、127.0.0.1というIP
アドレスをlocalhostと言うホスト名に割り当てている。
ループバック・インタフェースに送られるIPデータ
グラムは、他のいかなるネットワークにも送信さ
れない。
2.7 ループバック・アドレス
宛先のエンドが、ループバック・アドレスで
あると検知した場合・・・

ほとんどの実装ではトランスポート層とネット
ワーク層のデータ処理がすべて実行される。
トランスポート層とネットワーク層の処理が
全て行われるのは非効率的だが・・・

ネットワーク層に対してループバック・インタ
フェースはもう1つのリンク層として見えるため、
設計上は、そのほうが楽。
2.8 MTU
Ethernetカプセル化と802.3カプセル化にはフ
レームサイズに上限がある。その限界は、それ
ぞれ1500バイトと1492バイト。
このリンク層の特徴をMTU(最大転送ユニット)と
呼ぶ。ほとんどのネットワーク形式には、こうした
上限がある。
IPが送信しようとするデータグラムがリンク層の
MTUより大きい場合・・・

IPはデータグラムを小さな塊(フラグメント)に断片化
するフラグメンテーションを行う。
2.9 パスMTU
同一ネットワーク上の2台のホストが相互に通信するとき、
ネットワークのMTUが重要。
しかし、2台のホストが別々のネットワーク上に存在する
場合、それぞれ異なるMTUを持つ。その場合に重要にな
るのが、2台のホスト間でパケットが流れるデータ・リンク
上の最小のMTU(パスMTU)である。
パスMTUは、常に伝送経路に依存。また、ルーティング
が必ずしも対称ではないため、パスMTUは2方向の経路
で同一である必要はない。
パスMTUの決定方法として、RFC1191を定義。
2.10 シリアル回線スループット計算
回線速度が9600bpsで、8ビット長、1ス
タートビット、1ストップビットの場合・・・


回線の速度は、960バイト/秒
この速度で、1024バイト・パケットを転送する
と、所要時間1066ミリ秒
 1024バイト・パケットの送受信を行うFTPのような
アプリケーションとともに、SLIPリンク上でインタラク
ティブ・アプリケーションを利用すると、インタラク
ティブ・パケットを送信するまでに平均533ミリ秒待
たなければならない。
2.10 シリアル回線スループット計算
この計算は

インタラクティブ・パケットが、次の大きなパ
ケットの前にリンク上に送信されることが前提。
 ほとんどのSLIPの実装は、このタイプ・オブ・サービ
ス・キューイングを提供していて、大容量のデータ・
トラフィックの前にインタラクティブ・トラフィックを送
信する。
 一般的に、インタラクティブ・トラフィックとは、Telnet、
Rlogin、FTPの制御部分
2.10 シリアル回線スループット計算
533ミリ秒も待つことは、インタラクティブ
なレスポンスとは言いがたい。

人間工学的研究では、人は100~200ミリ秒
以上のレスポンス・タイムになると遅く感じる。
 このタイムは、一般的なインタラクティブ・パケット
の往復に要する時間。
2.10 シリアル回線スループット計算
SLIPリンクのMTUを256バイトに削減

すると、単一フレームがリンク上を流れる時間の総量
は最大で266ミリ秒。その半分は133ミリ秒となる。
 これでも悪くは無いが、十分とはいえない。
なぜ256バイトを選択したのか?

大容量データ転送の効率をよくするため。
 5バイトのCSLIPヘッダと256バイトのデータで構成されるフ
レームは、効率として悪くない。
 もし、MTUを256バイトより小さくすると、大容量データ転送
の最大スループットも落ちてしまう。
2.10 シリアル回線スループット計算
MTUの値リストでは、ポイント・ツー・プロト
コルで296バイトとなっているのは?

256バイトのデータと、40バイトのTCPおよび
IPヘッダを想定。
 MTUはIPがリンク層に照会する値であり、その値
にはTCPとIPのヘッダが含まれていなければなら
ない。この値によって、IPはフラグメンテーションの
決定を行う。
 IPは、CSLIPが行うヘッダ圧縮は何も知らない。
2.11 まとめ
この章では、次のような内容を扱った。








Internetプロトコル群の最下層であるリンク層
EthernetとIEEEカプセル化の違い
SLIPとPPPのカプセル化の違い
SLIPとPPPは低速なリンクで用いられ、共通フィールド
の圧縮によりレスポンスが向上
ループバック・インタフェースとアドレスの提供
ループバック・データはトランスポート層とIPによって
完全に処理され、プロトコル・スタックを周回する。
MTUとパスMTU
SLIPとCSLIPのリンクの待ち時間 …
2.11 まとめ
データリンク技術は、今日、TCP/IPで利用
されているさまざまな技術の1つに過ぎな
い。
TCP/IPが広く普及した理由の1つは、それ
があらゆるデータリンク技術の上で動作す
ることが可能であると言う点である。
練習問題
2.1 もし読者のシステムがnetstat(1)コマンドを
サポートしているなら、それを用いてシステムの
インタフェースとそのMTUを決定せよ。

私のマシンは、全てWindowsマシンで、netstatでイン
タフェース情報を示さない(というかやり方がよく分か
らない)ため、SFCのネットワーク経由アクセスホストで
ある、CCZ03を利用することにする。
練習問題
CCZ03のifconfig/netstatコマンド実行状況
% ifconfig -a
lo0: flags=849<UP,LOOPBACK,RUNNING,MULTICAST> mtu 8232
inet 127.0.0.1 netmask ff000000
ge0: flags=863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST> mtu 1500
inet 133.27.4.213 netmask fffffe00 broadcast 133.27.5.255
% netstat -I ge0
Name Mtu Net/Dest
Address
Ipkts Ierrs Opkts Oerrs Collis Queue
ge0 1500 ccz03
ccz03
44668 3157 1872 48690 1456 0
0
0
練習問題
<練習問題の解答>
CCZ03のシステムのインタフェースとそのMTU

lo0: ループバックインタフェース
 MTUは、8232バイト

ge0: Ethernetインタフェース(10Mbps?)
 MTUは、1500バイト
Discussantからの質問
From yuuki
From kanetaka
Question From yuuki ①
アナログの電話回線を介してPPP接続する
時、なぜモデムが必要なのでしょうか?

コンピュータで扱われるデータは、デジタル信
号であり、電話回線はアナログ信号(音声信
号)である。したがって、このデジタル信号をア
ナログ信号に変換したり、その逆を行ったりす
るためにモデムという装置が必要となる。
Question From yuuki ②
スイッチングHUBとリピータHUBの通信方式を比
較した際の、前者の優位点について述べなさい。

スイッチングハブは、送られてきたパケットのアドレス
を判別し、送り先のマシンが接続されているポートだ
けに流す。これはパケットをデータリンク層で認識し、
MACアドレスを元にスイッチングを行うためである。こ
れにより、接続された端末同士の通信では、そのパ
ケットがネットワーク全体に流れないため、効率的で
ある。また、100Base-TX・全二重で通信が行える場
合、理論値200Mbpsという通信速度を出すことがで
きる。
pie新人教育セッション - 詳解TCP/IP Vol.1
~Chapter2~ リンク層
発表者: three
アドバイザ: egichan
質問者: yuuki, kanetaka
ダウンロード

pie新人教育セッション 詳解TCP/IP Vol.1 ~Chapter2~