ネットワークの基礎 データ伝送の仕組み Inf.Math.5 2018/9/18
データ伝送(1) OSI参照モデル Open System Interconnection 1984年、ISOが発表 様々なネットワークテクノロジーの間の互換性を保証する概念的枠組み AのアプリケーションからBのアプリケーションへのデータ移動の方法を 記述 7つの層(伝送作業の機能を階層化したもの、次ページ参照)に沿って、 Aではデータが人間に近いものからコンピュータに近いものへと変換さ れ、それが伝送路にはき出され、Bではその逆の変換が行われて元の データを復元する データ伝送路 データ伝送路 ネットワーク ホストA ホストB Inf.Math.5 2018/9/18
データ伝送(2) IP IP アプリ アプリ ケーシ ケーシ ョン層 ョン層 データ伝送路 OSI参照モデル TCP/IPプロトコル データ送出 データ復元 OSI参照モデル TCP/IPプロトコル TCP/IPプロトコル データ アプリケ ーション層 アプリ ケーシ ョン層 アプリ ケーシ ョン層 アプリケーションに依存 プレゼンテー ション層 アプリケーションプロトコル ヘッダ データ SMTP セッション 層 HTTP DHCP DNS HTTP DHCP DNS SMTP FTP telnet POP/IMAP POP/IMAP FTP telnet トランス ポート層 TCP UDP TCP UDP TCP/UPIプロトコル ヘッダ データ ネットワーク 層 IP IPプロトコル ARP IP データ転送 ARP ICMP ICMP ヘッダ データ データ リンク層 ネットワーク アクセス層 LAN(イーサネット・ トークンリング・FDDI) 専用回線,PPP WAN(フレームリレー) ネットワーク アクセス層 LAN(イーサネット・ トークンリング・FDDI) 専用回線,PPP WAN(フレームリレー) ネットワークアクセスプロトコル 物理層 ヘッダ データ データ伝送路 Inf.Math.5 2018/9/18 出典:森本喜一郎、『通信とネットワークの基礎理論」、昭晃堂、2001
データ伝送(3a) OSI参照モデル 各層の機能 上位3層 この色で示したものは代表的なプロトコル 上位3層 この色で示したものは代表的なプロトコル アプリケーション層 ・・・ HTTP, FTP, SMTP この層では、ユーザが使う様々なアプリケーションのプロトコルを処理する 機能を規定している(プロトコルの例:HTTPはウェブに関する、FTPはファイ ル転送に関する、SMTPは電子メールに関するプロトコルである) プレゼンテーション層 ・・・ ネットワーク管理プロトコルSNMP この層では、送信元と宛先の間のメッセージのフォーマットの違いを変換し たり、暗号化/復号やデータの圧縮/伸張などの処理をしたりすること等を 規定している セッション層 この層では、通信し合うアプリケーションの間の対話の確立とか同期とか等 の対話の制御に関することを規定している・・・長いファイルを分割する等の 処理はこの層で行う Inf.Math.5 2018/9/18
データ伝送(3b) OSI参照モデル 各層の機能(つづき) トランスポート層 ・・・ TCP/IP, UDP 下位4層 トランスポート層 ・・・ TCP/IP, UDP この層では、送信元から宛先へのend to end の通信機能について規定している。 セッション層が必要とするトランスポートコネクション(伝送の単位)ごとに(あるいは、 いくつかをまとめて1つとして)ネットワークコネクション(ネットワーク上で行われる 通信の単位)を作成する ネットワーク層 ・・・ ARP, ICMP この層では、送信元から宛先へパケット(データを小さく分割して、それぞれに宛先 アドレスなどの制御情報をヘッダとして付けたもの)を送る経路を決定する (netstat コマンドを試してみよ) データリンク層 この層では、伝送誤りを防ぐための仕組みを提供する(パケット⇔フレームの変換、 データの誤り検出、伝送確認=フレームの重複・消失の確認と再送、データのオー バーフロー等の制御) 物理層 この層では、ビット列を物理信号としてネットワークへ送り出す/受け取る機能を規 定している。例えば、コネクタの形状とピンの配置、電気的インターフェース、ビット レベルの同期などが規定されている (MAC アドレス → arp, ipconfig コマンド を試してみよ) Inf.Math.5 2018/9/18
TCP/IP:信頼性を保障する通信プロトコル 接続フェーズ データ送信の開始を知らせる 受信準備OKの返答を返す。こちらからもデータ送信することを知らせる 了解の返答をする データの送受信フェーズ データを送信する 受信したことの確認応答を送り返す ・・・ サーバー クライアント データを送信する 受信したことの確認応答を送り返す 切断フェーズ データを送り終わったことを知らせる 了解したことを知らせる データ送信を終了することを知らせる 了解したことを知らせる Inf.Math.5 2018/9/18 TCP/IPと違い、UDPではデータは送りっぱなし
通信の記録を見てみよう (1) Inf.Math.5 2018/9/18
通信の記録を見てみよう(2) ・(1)初めに、コマンドプロンプト(DOS窓)から次のように入力してみよう: > netstat -n ・(2)次いで、ブラウザを1つ立ち上げてから netstat コマンドを投入してみよう どう変化したか? ・(3)さらに、もう一つブラウザを立ち上げてから netstat コマンドを投入してみよう ・(4)次に、EDU システムにログインしてから netstat コマンドを投入してみよう ・(5)最後に、すべてを終了してから netstat コマンドを投入してみよう Inf.Math.5 2018/9/18
通信の記録を見てみよう(2a) Inf.Math.5 2018/9/18 ポート番号 80 : http 22 : ssh 443 : https 通信中か 待機中か ローカルループバックアドレス ゲートウェイ(PC上で使っているブロードバンドルータ)のアドレス Inf.Math.5 2018/9/18
特別な用途のプライベートIPアドレス 127.0.0.1(クラスA) 127.0.0.1 はローカル・ループバック・アドレス(local loopback address)といい、自分自身を指す特別なIPアドレスである localhost という名前で参照することもある 自分自身の上で動作しているアプリケーション・サービスへ接続する場 合に使う 192.168.0.0~192.168.255.255 (クラスC) PC上でゲートウェイ(ブローバンドルータ)を指すアドレスと して使われることが多い 224.0.0.0~2240.0.255 (クラスD) マルチキャストアドレス(multicast address)といい、複数の宛て 先に同時にデータを送信する場合などに使用される Inf.Math.5 2018/9/18
通信の記録を見てみよう(2b) コマンドプロンプト(DOS窓)から次のように入力してみよう: Inf.Math.5 2018/9/18 netstat と netstat –n を見比べてみる Inf.Math.5 2018/9/18
通信の記録を見てみよう(2c) コマンドプロンプト(DOS窓)から次のように入力してみよう: 守屋の自宅PC netstat –o と netstat –a と netstat -ano 守屋の自宅PC 14-504コンピュータ教室のPC Inf.Math.5 2018/9/182018/9/18
通信の記録を見てみよう (3a) Inf.Math.5 2018/9/18
通信の記録を見てみよう (3b) Inf.Math.5 2018/9/18
通信の記録を見てみよう(4) 同じことを EDU システム上で試してみよう: Inf.Math.5 2018/9/18 netstat –a (すべての情報) と netstat –r (経路情報) Inf.Math.5 2018/9/18
通信の記録を見てみよう (4a) Inf.Math.5 2018/9/182018/9/18
通信の記録を見てみよう (4b) Inf.Math.5 2018/9/182018/9/18
通信の記録を見てみよう (5) Inf.Math.5 2018/9/18
ポート番号 IPアドレス → 通信相手のコンピュータを指定する ポート番号 IPアドレスと組み合わせて 133.9.34.141:22 ポート番号 そのコンピュータ上で動いている複数のプログラムのうちの一つを通信相手として指定 ポートとは論理的な通信の口 ポート番号の例 20 FTP (データ) 21 FTP (制御) 22 SSH 23 telnet 25 SMTP 53 DNS 67 DHCP(サーバ) 68 DHCP(クライアント) 80 HTTP 110 POP3 443 HTTPS IPアドレスと組み合わせて 133.9.34.141:22 のように書くことがある ポート番号の一覧については https://ja.wikipedia.org/wiki/TCPやUDPにおけるポート番号の一覧 を参照せよ Inf.Math.5 2018/9/18
データ伝送(4a) パケットのカプセル化 電子メールのメッセージ アプリケーション層 データ(ストリーム) セグメント データ データ(ストリーム) セグメントヘッダ データ セグメント パケット(データグラム) ネットワークヘッダ セグメントヘッダ データ フレーム フレームヘッダ ネットワークヘッダ セグメントヘッダ データ ネットワーク トレーラ Inf.Math.5 2018/9/18
データ伝送(4b) 各層におけるデータの伝送単位 TCP/IPモデル TCP IP データのカプセル化の過程 アプリケー ション層 ホスト層 (+プレゼンテーショ ン層+セッション層) データのカプセル化の過程 TCP ストリーム ホスト層 TCP UDP (トランスポート層) TCPヘッダ セグメント IP IPヘッダ データグラム (パケット) メディア層 (ネットワーク層) IPアドレス (ネットワーク上の位置を示すアドレス) ネットワーク アクセス層 (データリンク層・ 物理層) MACヘッダ フレーム MACアドレス (コンピュータの物理アドレス) ビット列 Inf.Math.5 2018/9/18
データ伝送(4c) TCPセグメントのフォーマット 4 8 16 24 32ビット TCPヘッダ データ (セグメント) 発信ポート番号 データ (セグメント) 4 8 16 24 32ビット 発信ポート番号 宛先ポート番号 シーケンス番号 受信確認の応答番号(ACK) オフセット 予約 フラグ ウインドウサイズ チェックサム 緊急ポイント オプション パディング データの種類ごとに専用の受け取り窓口がある→ポート番号(ftp=21, ssh=22, telnet=23, smtp=25, http=80 etc.) データは細切れのパケットにして送られる → シーケンス番号 宛先に届く順序は送った順序とは限らない 送信元と宛先の間で受け取ったかどうの確認をしあう → ACK(確認応答)番号 ACKを待たずに送信できるパケット数 → ウインドウサイズ Inf.Math.5 2018/9/18
データ伝送(4d) IPv4データグラム(パケット)のフォーマット IPヘッダ データ (データグラム) バージョン ヘッダ長 20~60バイト 20~65536バイト IPヘッダ データ (データグラム) バージョン ヘッダ長 サービスの種類 パケット全長 識別番号 フラグ フラグメント オフセット 生存時間 プロトコルタイプ ヘッダチェックサム 送信元IPアドレス 宛先IPアドレス オプション パディング Inf.Math.5 2018/9/18
データ伝送(4e) MACヘッダ ネットワークに送出されるパケット 6 12 14byte MACヘッダ データ (フレーム) 14バイト MACヘッダ データ (フレーム) 6 12 14byte 宛先MACアドレス 送信元MACアドレス イーサタイプ 自分(送信元)のMACアドレスは直ぐわかるけど、宛先のMACアドレスはどうやって知る?→後述 ネットワークに送出されるパケット プリアンブル スタートフレームデリミタ MACヘッダ IPヘッダ TCPヘッダ アプリケーションが作る データ データ損傷 の検出用 これはLANアダプタが作って添加する Inf.Math.5 2018/9/18
なぜMACアドレスが必要なの? イーサネットの仕組みはTCP/IPの仕組みとは異なる → MACアドレスを使う イーサネット Ethernet Xerox社とDEC社(現在はHewlett Packard社)が考案したLAN規格(IEEE 802.3委員会 によって標準化された) アクセス制御にはCSMA/CD(carrier sense multiple access with collision detection)を採用 現在、特殊な用途を除いて、ほとんどのLANはEthernet イーサネットの仕組みはTCP/IPの仕組みとは異なる → MACアドレスを使う 送信した信号(宛先MACアドレス付き)がLAN全体に届く→そのMACアドレスを持つコン ピュータがその信号を拾う LAN内のすべてのコンピュータを送信先とすることもできる(ブロードキャスト) ブロードキャストを使って、IPアドレスからMACアドレスを知ることができる(ARP:address resolution protocol) 各コンピュータは取得したMACアドレスを表(ARPテーブル)として保持する(一定時間(5分 くらい)だけ) → arp –a を試してみよ。 Inf.Math.5 2018/9/18
ネットワーキングデバイス に関する用語補足 MACアドレス Media Access Control すべてのコンピュータが一意的に持つ物理的アドレス NICに割り当てられている 16進12桁の数(arp –a や ipconfig –all を試してみよ) NIC(Network Interface Card) データパケットをネットワーク上で送信される信号に変換する 出荷前にメーカーによって物理アドレスが割り当てられる ネットワークセグメント ブリッジによって区分されたネットワークの単位 Inf.Math.5 2018/9/18
ARP (address resolution protocol) 宛先のMACアドレスを どうやって知る? ARP (address resolution protocol) 送った信号はEthernetセグメント内のすべての機器に届く 「このIPアドレスの持ち主がいたら、MACアドレスを教えて下さい」と問 いかける 返答があったら、使って、ARPテーブルにも一時的に保存 なかったら?→後述 ARPテーブルを見てみる Inf.Math.5 2018/9/18
データ伝送(5) パケットのネットワークへの送出 ネットワークケーブル ネットワーク機器 パケットはNIC(ネットワークアダプタ)によってネットワークに送出される 同一セグメント内の機器はどれもそのデータを読むことができる → 自分宛てで あるものだけを拾う 同一ネットワーク上に同時に2つの信号を送出すると衝突が起こり、データは壊 れる → 再送信 ネットワークケーブル より対線、同軸ケーブル 光ファイバーケーブル ネットワーク機器 ネットワーク範囲を拡張/制限する データの送信・受信を制御する 減衰したデータを増幅する リピータ(ハブ)、スイッチングハブ、ブリッジ、ルータ Inf.Math.5 2018/9/18
データ伝送(5a) 減衰した信号を増幅するのみ 信号を分配する役目も果たす 受け取ったら信号をすべての送信口(ポート)に送り出してしまう リピータ (ハブ) 半二重 減衰した信号を増幅するのみ 信号を分配する役目も果たす 受け取ったら信号をすべての送信口(ポート)に送り出してしまう 125 126 ハブ 124 128 127 Inf.Math.5 2018/9/18
データ伝送(5b) ブリッジ(スイッチングハブ) MACアドレスだけに基づいてフィルタリングを行なう。アドレステーブル(接 続するセグメントごとのMACアドレスのリスト)を持っていて、送られてきた データを解析して送出先のセグメントへだけデータを送り出す 2つのネットワークセグメント間でパケットの収集と受け渡しを行なう Ab X B PR Bc AL Ct Ct Ab AL X Bc B PR ブリッジ Ct Y AL D Bc F PR ブリッジ Y D F Inf.Math.5 2018/9/18
データ伝送(5c) ルータ ルータ間のルーティング情報の交換にはいろんな方法がある IPアドレス(ネットワーク層)を見て、パケットを送出する経路を決定す る(ルーティング) 複数のポートを持ち、宛先ネットワークとポートの対応表(ルーティン グテーブル)を持つ ルータ Inf.Math.5 2018/9/18
データ伝送(5d) ルーティング(1) ルータ ルーティングテーブル E0 E3 E0 E1 E2 ルーターは自分に接続しているネットワーク上のデバイスのIPアドレスとMAC アドレスを保持しているとともに、他のルータのIPアドレスとMACアドレスも保持して いる 179.16.2.10 02-60-8C-01-02-03 E0 179.16.2.11 00-56-8D-FF-02-21 179.16.2.12 11-78-98-11-12-B8 179.16.3.2 12-36-FC-00-01-34 E1 179.16.3.3 05-H1-76-2F-32-43 179.16.4.101 08-44-77-DD-32-10 E2 179.16.4.102 99-7B-65-G1-12-34 133.9.34.1 C1-24-5A-A2-G1-23 E3 ルーティングテーブル ルータ E0 133.9.34.1 C1-24-5A-A2-G1-23 179.16.2.10 02-60-8C-01-02-03 179.16.2.11 00-56-8D-FF-02-12 179.16.2.12 AB-78-98-11-A2-B8 上段:IPアドレス 下段:MACアドレス E3 E0 179.16.2.1 00-34-56-78-AB-CD 179.16.4.1 AB-34-21-A1-G2-13 E1 E2 179.16.3.1 87-39-87-65-43-21 179.16.3.2 12-36-FC-00-01-34 179.16.3.3 05-H1-76-2F-32-43 179.16.4.101 08-44-77-DD-32-10 179.16.4.102 99-7B-65-G1-12-34 Inf.Math.5 2018/9/18
ネットワーク192.168.11上のコンピュータへデータを送るには192.168.11.3のルーターに送り出せばよい ルーティングテーブルを見る 経路の距離 ネットワーク192.168.11上のコンピュータへデータを送るには192.168.11.3のルーターに送り出せばよい Inf.Math.5 2018/9/18
Inf.Math.5 2018/9/18 ローカルループバックアドレス(このPC自身) ローカルネット上のブロードキャスト ローカルネットのゲートウェイ マルチキャスト Inf.Math.5 2018/9/18
特別な用途のプライベートIPアドレス 127.0.0.1(クラスA) 127.0.0.1 はローカル・ループバック・アドレス(local loopback address)といい、自分自身を指す特別なIPアドレスである localhost という名前で参照することもある 自分自身の上で動作しているアプリケーション・サービスへ接続する場 合に使う 192.168.0.0~192.168.255.255 (クラスC) PC上でゲートウェイ(ブローバンドルータ)を指すアドレスと して使われることが多い 224.0.0.0~2240.0.255 (クラスD) マルチキャストアドレス(multicast address)といい、複数の宛て 先に同時にデータを送信する場合などに使用される Inf.Math.5 2018/9/18
データ伝送(5e) ルーティング(2) 隣り合うルータ同士がルーティングテーブルの情報を交換する ルーティングプロトコル ダイナミックルーティング 隣り合うルータ同士がルーティングテーブルの情報を交換する ルーティングプロトコル ディスタンスベクタルーティング リンクステート法(Shortest Path First) ルーティング プロトコル ルーティング プロトコル ルーティング テーブル ルーティング テーブル Inf.Math.5 2018/9/18
(具体例) ネットワーク上での通信(step 1) ウェブブラウザを立ち上げて、ウェブページを読むまで 1. ユーザが、ブラウザ上でURL (http://・・・,ftp://・・・,ailto:… など)を入力した 2. ブラウザは、そのURLを解読する http://www.edu.waseda.ac.jp/~moriya/index.html プロトコル ウェブサーバー名 データの所在(パス名) Inf.Math.5 2018/9/18
ネットワーク上での通信(step 2) 3.ブラウザは、相手のウェブサーバのIPアドレスを調べるために、 DNSサーバに問い合わせをする ライブラリ(プログラムの集まり。例えば、Socketライブラリ) の中にある リゾルバ(name resolver)と呼ばれるプログラムを呼び出し、相手サーバー の名前 www.edu.waseda.ac.jp を渡して、それに対応する IP アドレスを 調べてもらう リゾルバはDNSサーバに送る問い合わせメッセージを作る 問い合わせメッセージはUDPプロトコルに従って作られたパケットである 問い合わせメッセージは、OS内部にあるTCP/IPプロトコル処理用のプロ グラムに渡され、そのプログラムによりネットワークに送出される Inf.Math.5 2018/9/18
ネットワーク上での通信(step 3) 名前の解決 4.相手サーバのURL(ドメイン名)からIPアドレスを求めるには、 ・・・ 以下のようなやり取りが各階層のネームサーバとの間で行われる ルートネームサーバ edu.waseda.ac.jp のアドレス問い合わせ ② ③ jpのネームサーバを教える ④ j pネームサーバ edu.waseda.ac.jp のアドレス問い合わせ ① IPアドレス 問い合わせ ⑤ ac.jpのネームサーバを教える ⑩ ・・・ ⑫ edu.waseda.ac.jp のアドレス問い合わせ IPアドレス を教える ローカル ネームサーバ edu.waseda.ac.j pネームサーバ ⑪ edu.waseda.ac.jpの IPアドレスを教える Inf.Math.5 2018/9/18
ネットワーク上での通信(step 4) 5.ブラウザは、Socketライブラリ内のプログラムを呼び出して TCP/IPソフトに送受信の準備(送受信のために必要な制御情報 を保管するために、ソケット(socket)と呼ばれるメモリー領域を 作る)を促す 6.TCP/IPソフトは、ディスクリプタ(descripter)と呼ばれる値を ブラウザに返す → TCP/IPソフトが、動作中のアプリケーション(今の場合は ブラウザ)を識別するために発行するもの → これ以後、アプリケーションはTCP/IPに作業を依頼する ときは、このディスクリプタを提出する Inf.Math.5 2018/9/18
ネットワーク上での通信(step 5) 7.ブラウザは、取得したIPアドレスおよびポート番号(ポート番号は アプリケーションの種類によって値が決まっている(ウェブサーバー は80番)をディスクリプタと一緒に TCP/IP ソフトに渡して、 相手サーバーへの接続を依頼する 8.TCP/IP ソフトは、渡された IP アドレスの相手に制御用のパケット を送って通信開始を知らせる Inf.Math.5 2018/9/18
ネットワーク上での通信(step 6) 9.相手サーバは、ブラウザと同様に、通信に必要な準備(通信を許可 する相手のIPアドレス、自分のポート番号等を含むソケットを作る) をする 10.サーバは、相手(この例ではブラウザ)から来た通信開始の制御 パケットを、5で作ったソケットと照合して、通信を許可するか否か を判定し、応答パケットを返送する Inf.Math.5 2018/9/18
ネットワーク上での通信(step 7) 11.通信開始 メッセージを作成する ブラウザは、相手サーバへ送るための HTTP リクエスト ブラウザは、相手サーバへ送るための HTTP リクエスト メッセージを作成する GET /~moriya/index.html HTTP/1.1 ・・・ User-Agent: Opera/8.5 Host: www.somewhere.co.jp リクエストの内容(ファイル~moriya/index.htmlをGETしたい) 付加情報(ブラウザ名、URL、・・・) Inf.Math.5 2018/9/18
ネットワーク上での通信(step 8) 12. リクエストに対し、サーバからレスポンスメッセージが返ってくる 相手のウェブサーバー情報 HTTP/1.1 200 OK Date: Fri, 18 June 2006 10:12:56 GMT Server Apache/1.3.20 ・・・ ・・・ <html> <head> <title> 守屋研究室HP</title></head> <body> </body> </html> 相手のウェブサーバー情報 ファイル ~moriya/index.html の内容(htmlテキスト) Inf.Math.5 2018/9/18
参考書 森本喜一郎、『通信とネットワークの基礎』、昭晃堂、2001. 戸根勤、『ネットワークはなぜつながるのか』、日経BP社、2002. W.リチャード・スティーヴァンス、『詳解TCP/IPプロトコル』、ピ アソン・エデュケーション、2000. 戸根勤、『完全理解TCP/IPネットワーク』、日経BP社. 福永邦雄、『コンピュータネットワークの基礎』、共立出版、2010. 田村武志、『情報通信ネットワークの基礎』、共立出版、2013. 網野衛二、『ルーティング基礎講座』、技術評論社、2013. Inf.Math.5 2018/9/18