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
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とは? ② 802.3 ・・・CSMA/CDネットワーク 802.4 ・・・トークンバス・ネットワーク 802.5 ・・・トークンリング・ネットワーク 802.2 ・・・これら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) カプセル化 ③ Ethernetカプセル化(RFC894) 次の2バイトはタイプ・フィールドで、以下に続くデータのタイプを特定。 その後に、データフィールドとCRCフィールドが続く。
2.2 EthernetとIEEE802カプセル化 カプセル化 ④ 802.2/802.3カプセル化(RFC1042) カプセル化 ④ 802.2/802.3カプセル化(RFC1042) 次の2バイトはデータ長フィールドで、それ以降、最後尾のCRCを除くバイト数の合計を表す。 その次に、3バイトの802.2 LLCと5バイトの802.2 SNAP(サブネットワーク・アクセス・プロトコル)フィールドが続く。(802.2 SNAPフィールドに含まれるタイプ・フィールドは、Ethernetフレームに含まれるタイプ・フィールドと同じ)
2.2 EthernetとIEEE802カプセル化 カプセル化 ⑤ CRCフィールド カプセル化 ⑤ CRCフィールド 循環冗長チェック(チェックサム)であり、フレームのエラー検出に用いる。 802.3およびEthernetフレームには、最小サイズがあり、その値は802.3では38バイト、Ethernetでは46バイトとなっている。
2.3 トレーラー・カプセル化 RFC894とは別のEthernetカプセル化。 RFC893に定義されている。
2.4 SLIP: シリアル回線IP シリアル回線上のIPデータグラムのための単純なカプセル化。RFC1055に定義。 ほとんどのコンピュータが内蔵しているRS-232シリアルポートと高速モデムを経由して、システムを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 単純なフレーミング方法であるゆえに、いくつかの欠点がある。 SLIPで追加できるチェックサムは無い。転送中にデータグラムを破壊した場合、それは上位層で検出されることになる。そのため、上位層がある種のCRC形式を提供する必要がある。
2.5 圧縮SLIP SLIP回線は一般に低速で、双方向トラフィックに頻繁に利用されることから、SLIP回線上には小さいTCPパケットが大量に流れる傾向にある。 1バイトのデータを転送するだけでも、20バイトのIPヘッダと20バイトのTCPヘッダが必要なため、オーバーヘッドは40バイトになってしまう。
2.5 圧縮SLIP この状況を改善するために、RFC1144で、CSLIP(圧縮SLIP)と呼ばれるSLIPの新バージョンが定義された。 これにより、双方向のレスポンス・タイムは劇的に向上される。
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バイトに削減 なぜ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つに過ぎない。
練習問題 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: ループバックインタフェース 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