pie新人教育セッション 詳解TCP/IP Vol.1 ~Chapter2~
Download
Report
Transcript pie新人教育セッション 詳解TCP/IP Vol.1 ~Chapter2~
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