Transcript TCP/IP

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版 - ピアソンエデュケーション