Networkゼミ 特別講義 ~仕組みがわかればネットワークはもっと楽しくなる~ [TCP/IP編] この特別講義の位置づけ ネットワークゼミのメンバー用の講義であり, インターネットの基盤となっている技術の基礎知識を 身につけるために行う. • • • • • TCP/IP編 TCP/IP(アプリケーション)編 IPマルチキャスト編 ネットワークプログラミング編 IPルーティング編 TCP/IPって何? TCP(Transmission Control Protocol) IP(Internet Protocol) この2つのプロトコルを並べた用語であるが、プロトコル群 としてどこまでを含めるかは諸説あり,明確な定義はない. プロトコルって・・? ネットワークプロトコルのことを意味し, ネットワーク上での通信に関する規約を定めたものである. 一つの通信でも、役割の異なる複数のプロトコルから 成り立っていることも多く,それらをまとめたものは プロトコルスタック.プロトコルファミリー, プロトコルスイートなどと呼ぶ. TCP/IPとプロトコルスタック TCP/IPのプロトコルスタックとは インターネットの通信技術であるTCP/IPで, 協力して通信を実現するため作成されたソフトウェア群. TCP/IPネットワーク TCP/IPネットワークでは,コン ピュータ はホストと呼ばれ,ホスト間は様々 な ネットワークによって接続される. ホスト同士は • • データリンクを介して直接接続 ルータを介して間接接続 パケット交換と呼ばれる技術を利用されている. パケットは「ヘッダ」と「ペイロード」から構成さ れる. パケット交換 パケット交換は以下の3段階で行われる. • データのパケット化 • パケットの転送 • データの復元 ソフトウェアとハードウェア 階層化されたプロトコルスタック プロトコルスタックの内部処理 •TCB (Transmission Control Block) TCPコネクションごとに用意 され,通信状態の管理や 制御を行う. •ルーティングテーブル パケットの経路を決定する. •ARPテーブル MACアドレスとIPアドレスの 対応表で,この表を元に データリンクでの配送先が 決定される. トランスポート UDP ネットワーク TCP IP ICMP ARP データリンク Ethernet Ethernet もっともポピュラーなデータリンク. EthernetではMACアドレスを識別子として使用する. データリンクの種類 • • • • • • Ethernet ISDN FDDI ADSL 無線 衛星 各リンクはそれぞれ性質が異なる. ▫ 規格・伝送媒体・信頼性・遅延 データリンクの種類(contd) • Multi Access Media ▫ MAC(Media Access Control)アドレスを用いて通信 ▫ Ethernet等 • Point to Point Media ▫ 通信相手が物理もしくは仮想I/Fで特定されるもの ▫ 64k,128k,1.5M,6M,45M,150M,600M,2.4G,10Gなどの専用線 ▫ フレームリレー、ATM等のPoint to Point Ethernetの形態 バス型接続 1. 10base2 2. 10base5 ハブによる接続 1. 10base-T 2. 100base-TX 3. 1000base-T Ethernetのフレームフォーマット 終点MACアドレス ・・・ 目的ホストのNICが持つMACアドレス 始点MACアドレス ・・・ 送信ホストのNICが持つMACアドレス タイプ ・・・ 上位層のプロトコル(例 IPv4 0x0800, IPv6 0x86dd) データ ・・・ データ FCS(Frame Check Sequence) ・・・ 終点MACアドレスからデータの終わりまでの破損チェック MACアドレス • • • • Media Access Control の略 ハードウェア(NIC)に固有の物理アドレス 世界中で一意な識別子 48ビット Ethernetの基本動作 同一のEthernetにいるすべて のホストが受信し,自分宛の MACアドレスであれば,タイプ フィールドを元に上位層を特定 して上位のモジュールに渡す. 同時に複数のホストがフレーム の送信を開始すると衝突が 発生し,データは失われる. CSMA/CD (Carrier Sense Multiple Access with Collision Detection) 衝突を回避するために,他の ホストが現在送信していないか 確認する. 衝突が起こった場合は, 乱数時間後に再送信する. トランスポート UDP ネットワーク TCP IP ICMP ARP データリンク Ethernet ARP Ethernetなどのブロードキャスト型データリンクで使用さ れる. ハードウェアアドレス(Ethernetの場合はMACアドレス)と IPアドレスの変換を行う. ARPパケットフォーマット ハードウェアアドレスフォーマッ ト ネットワークの物理的な媒体の 種類を表す,16bit幅の数値 (定義はRFC1700「Assigned Numbers」などに記載) プロトコルアドレスフォーマット 上位のプロトコルの種類 ハードウェアアドレス長 MACアドレスの長さを表す. イーサネットの場合はこの値は 「6」 プロトコルアドレス長 上位のプロトコルで利用される アドレス情報の長さを表す. Version 4のTCP/IPプロトコル ではIPアドレスは「4」(オクテッ ト) ARPの動作 • • • • 動作の流れ ブロードキャストでオペレーション1 (ARP要求)を送信する. ターゲットプロトコルアドレス(tpa)が自 分のホストが応答パケットを作成する. ARP応答の送信先アドレスは,ブロー ドキャストを送信したホストを指定する. 応答ホストはソースハードウェアアドレ ス(sha)に自分のMACアドレスを入れ る. 応答パケットはsha spaとtha tpaが 入れ替わることに注意 豆知識 MACアドレスの先頭24ビットはOUI(Organizationally Unique Identifier)と呼ばれ,メーカごとに 割り当てられている. http://standards.ieee.org/regauth/oui/oui.txt ARPの実験 arpコマンド arpキャッシュを操作する $ arp -n Address 133.31.103.1 133.31.103.40 133.31.103.201 HWtype HWaddress Flags Mask ether 00:14:F2:57:B2:BF C ether 00:80:6D:66:02:76 C ether 08:00:20:A6:76:2A C Iface eth0 eth0 eth0 # arp –set 192.168.0.1 AA:BB:CC:DD:EE:FF $ arp -n Address 133.31.103.1 133.31.103.40 133.31.103.201 192.168.0.1 HWtype HWaddress Flags Mask ether 00:14:F2:57:B2:BF C ether 00:80:6D:66:02:76 C ether 08:00:20:A6:76:2A C ether AA:BB:CC:DD:EE:FF C Iface eth0 eth0 eth0 eth0 同じIPアドレスのホストが2つあるとどうなるだろうか? ARPの応用 Proxy ARP 代理ARPと呼ばれ,ひとつのネットワークをさらに分割したい時に,ネットワーク内の ホストの設定を変えずに実現することができる. Ex: PPPによるLANの延長 RARP Reverse ARPと呼ばれる. ディスクレスマシンが,自分のIPアドレスを調べるために使われる. トランスポート UDP ネットワーク TCP IP ICMP ARP データリンク Ethernet IP Internet Protocolの略. IPネットワークと呼ばれるネットワークを構成するノード には,すべてIPアドレスと呼ばれる識別子が割り当てら れ, データの転送を行う際に利用される. IPヘッダ ヘッダ長 IPヘッダの長さ/4の値 サービスタイプ サービス品質の定義(ほとんど使用されな い) 識別子 IPフラグメンテーションにおいて利用される フラグとフラグメントオフセット フラグメンテーションにおいて利用される、 特別なフラグ情報とオフセット数値(後述) 生存時間 IPパケットの寿命(可能ホップ数) プロトコル番号 上位プロトコルの種類を示す番号を格納 IPアドレス • 世界中で一意な識別子 • version 4(32bit)とversion 6(128bit)が利用可能 • スコープ(通信可能範囲)によって以下の4つに分類される ▫ グローバルIPアドレス インターネットの接続用に利用され、ICANNを頂点とした階層的な委譲関係 によって世界的な管理が行われている。日本の組織はJPNIC ▫ プライベートIPアドレス プライベートネットワークのアドレスとして使用可能。 ▫ リンクローカルアドレス 単一のLAN内のみで通信できるアドレス ※IPアドレスについてはIPルーティング編の講義でいずれ詳しく説 明します. フラグとフラグメントオフセット IPフラグメント MTU(Maximum Transmission Unit) データリンクごとの最大フレーム長 FO フラグメントオフセットは8オクテット単 位 経路MTU探索 1. 2. フラグメントの問題点 ルータの負荷の上昇 フラグメント化データ喪失時の 転送効率低下 途中のルータでは出来るだけフラ グ メント処理を発生させない方が良い. が IPパケットのサイズを小さくすると 転送効率が悪くなる. この解決法が経路MTU探索である. ルーティング ルーティングテーブルの書式 [IPアドレス]/[ネットワーク部のビット長] [転送 先] IPアドレスの先頭から[ネットワーク部 の ビット長]を取り出し,[IPアドレス]に 一致したら[転送先]に送る. 複数の行に一致する場合は[ネット ワーク部のビット長]が一番長い行が 優先される. トランスポート UDP ネットワーク TCP IP ICMP ARP データリンク Ethernet ICMP Internet Control Message Protocolの略. IPを補助する機能を有し,配送中のエラー通知や ルーティング先変更などに使用される. ICMPエコー要求(応答) タイプ コード 識別子 い) シーケンス番号 データ ・・・ エコー要求(8)or エコー応答(0)が入る ・・・ 0が入る ・・・ パケットの識別に使われる.(固定値が使われることも多 ・・・ 送信側の送った順番.エコー応答は要求と同じ値を使用. ・・・ バイナリデータ.エコー応答は要求と同じ値を使用. (pingは時刻が入っている) ICMP到達不能 タイプ コード ICMP到達不能(3)が入る 0.ネットワーク到達不能 1.ホスト到達不能 2.プロトコル到達不能 3.ポート到達不能 4.フラグメントが必要だがDFフラグが たっている. 5.ソースルーティングが失敗した. 次のMTU 経路MTU探索で使用される. 次データリンクのMTUが入る. データ エラーを発生させたIPデータグラム の IPヘッダなどが入る. ICMPリダイレクト タイプ コード ICMPリダイレクト(5)が入る 0.ネットワークアドレスリダイレクト 1.ホストアドレスリダイレクト 2.そのネットワークとTOSに対する リダイレクト 3.ホストアドレスとTOSに対する リダイレクト ルータのIPアドレス ルーティングテーブルの転送先に 記述するIPアドレス 次データリンクのMTUが入る. データ リダイレクトが必要と考えられる IPデータグラムのIPヘッダなどが入 る. ICMP時間超過メッセージ タイプ コード ICMP 時間超過(11)が入る 0.時間超過(TTLが0になった) 1.フラグメントのリアセンブルが 失敗してタイムアウト データ リダイレクトが必要と考えられる IPデータグラムのIPヘッダなどが入 る. トランスポート UDP ネットワーク TCP IP ICMP ARP データリンク Ethernet UDP User Datagram Protocolの略. IPの機能をそのまま使うために作られたプロトコル. ポート番号とチェックサムの機能だけ付加されてい る. UDPヘッダ 始点ポート番号 終点ポート番号 パケット長 チェックサム 述) 送信ホストの使用するポート番号 受信ホストの使用するポート番号 UDPヘッダとデータの長さ データの信頼性を確かめる値 (後 トランスポート UDP ネットワーク TCP IP ICMP ARP データリンク Ethernet TCP Transmission Control Protocolの略. IPの機能を拡張し,ホスト間で信頼性のある通信を 実現するプロトコル. コネクション指向のプロトコルで,通信開始時にコネクショ ンを 確立し,終了時にはコネクションを切断する. TCPヘッダ シーケンス番号 送信したデータの位置(オクテット単位で表す) 確認応答番号 次に受信すべきシーケンス番号 データオフセット TCPのデータの開始位置(4オクテット単位) 通常5 フラグ コネクション確立・切断・強制切断・緊急・ACK・PUSH ウインドウサイズ データを受信側の空きバッファ領域の大きさ TCPコネクションの確立と切断 SYNフラグの設定されたセグメン ト を双方が送信する 最初のSYNフラグの設定されたセ グ メント以外はACKフラグを設定する FINフラグの設定されたセグメント も 双方が送信する ACKによる信頼性の提供 1001+1000 = 2001 2001+1000 = 3001 ウインドウ制御 ウインドウサイズ1000 ウインドウサイズ5000 ウインドウ制御(Contd) チェックサム アルゴリズム • • • • • TCPとUDPの場合は擬似ヘッダを作成する チェックサムフィールドに0を入れる データ長が奇数の場合は,16ビット単位になるように調整する 擬似ヘッダ,ヘッダ,データ長の部分を16ビット単位での1の補数で 加算する 求めた値の1の補数をヘッダチェックサムに格納する. 擬似ヘッダ チェックサム(計算例) 例:001001101001100101001000 わかり易いように8ビットにする データ1 データ2 データ3 : 00100110 : 10011001 : 01001000 受信側で検証 データ1 : 11011001 データ2 : 01100110 データ3 : 10110111 Checksum : 00001000 計 : 11111111 1の補数 データ1 データ2 データ3 : 11011001 : 01100110 : 10110111 合計 : 11110111 Checksum : 00001000 参考文献 • TCP/IP ネットワーク実験プログラミング - オーム社 • UNIXネットワークプログラミング - 第2版 ピアソンエデュケー ション • COMPUTER NETWORK – McGRAW-HILL • コンピュータネットワーク 第3版 - ピアソンエデュケーション
© Copyright 2024 ExpyDoc