プロトコル/nat/http通信の中身 〜 ネットワーク勉強会資料

55
2017/9/28 佐々木 健 ネットワークの基本について学ぶ 第2回 プロトコル/NAT/HTTP通信の中身

Upload: ken-sasaki

Post on 22-Jan-2018

1.016 views

Category:

Internet


1 download

TRANSCRIPT

Page 1: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

2017/9/28

佐々木 健

ネットワークの基本について学ぶ第2回

プロトコル/NAT/HTTP通信の中身

Page 2: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

この文書について

前回の勉強会で沢山お菓子をもらえて嬉しかったのですが、沢山のお菓子がいつの間にか減ってきたので、また勉強会をやる気になりました。

前回質問を受けたことに関して説明をする、という内容になっています。

Page 3: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

お願い

定時後の勉強会なので気楽に行きましょう。

飲食、雑談は自由にしてください。

みんなであれこれ雑談してくれるほうが私もおやつを食べやすいです。

わからないことがあったら遠慮せずに聞いてね。

#beginner-net-study というSlackチャンネルを作ったので雑談に使ってくださいませ。

Page 4: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

本日のタイムスケジュール(予定)● 参加者の自己紹介(5分)

– 人数が少なかったら全員– 人数が多かったら近くにいる5人に自己紹介

● 前回のおさらい(5分)● 本編(15分)● 質疑(5分)

Page 5: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

自己紹介タイム● 参加者の自己紹介(5分)

– 人数が少なかったら全員– 人数が多かったら近くにいる5人に自己紹介

● 前回のおさらい(5分)● 本編(15分)● 質疑(10分)

Page 6: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

前回のおさらい説明したこと、疑問点のまとめ

Page 7: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

パケット通信とは何か?

郵便でデータを運ぶイメージ

封筒には、宛先、差出元が書いてある

Page 8: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

インターネットの基本アイディア● データをパケット通信で送る● パケットには宛先と差出元を書いておく● パケットを受けとった人は各自が適切に判断して

処理をする● 宛先、差出元はユニーク(世界でひとつだけ)

Page 9: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

疑問点1● 宛先、差出元はユニーク(世界でひとつだけ)

いろいろなところで、同じIPアドレスを使ってる気がするけど、、、、

192.168.xxx.xxx とか

具体的には何が書いてあるの?

Page 10: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

RFC:791INTERNET PROTOCOL

0 1 2 3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|Version| IHL |Type of Service| Total Length |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| Identification |Flags| Fragment Offset |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| Time to Live | Protocol | Header Checksum |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| Source Address |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| Destination Address |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| Options | Padding |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Example Internet Datagram Header

差出元

宛先

???

Page 11: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

今日のお題1プロトコルって何?

Page 12: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

そもそも通信とは何か?● オブジェクトとオブジェクトが協調動作を行なうための

手段

● 情報をやりとりする

● なにかを媒体としてやりとりする

● なんらかの目的があって行なわれる

● 決まった手順、約束事に従って行なわれる

Page 13: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

そもそも通信とは何か?● オブジェクトとオブジェクトが協調動作を行なうための

手段

● 情報をやりとりする

● なにかを媒体としてやりとりする

● なんらかの目的があって行なわれる

● 決まった手順、約束事に従って行なわれる

プロトコル

Page 14: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

(例)ハンバーガーを買いに行こう!!いらっしゃいませご注文は何になさいますか?

ビッグマックセットで

お飲み物は何になさいますか?

オレンジジュース

600円にいただきます。

スイカで払います

ありがとうございました

Page 15: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

(例)ハンバーガーを買いに行こう!!

目的:ハンバーガーや飲み物を買いたい、売りたい

やりとりするもの:買うもの、値段

媒体:日本語、音声、空気

手順、約束事:接客マニュアル、商品メニュー、日本円決済、電子決済

Page 16: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

通信条件が合わないと通信できないいらっしゃいませご注文は何になさいますか?

(私、セルクナム族!!)(日本語良くわからない!!)

..........

Page 17: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

プロトコルの階層構造

日本の社会常識

ハンバーガーの注文

日本語

通信を正しく行なうためには、その通信を支えるプロトコルを

お互いに理解している必要がある

Page 18: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

インターネットプロトコルの階層構造

TCP

HTTP

IP

Ethernet

Webを実現するためのHTTPの下には、TCP、IP、Ethernet等の下位プロトコルがある

Page 19: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

インターネットプロトコルの階層構造

TCP

HTTP

IP

Ethernet

前回説明したところ

Page 20: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

今日のお題2NATの仕組み

Page 21: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

インターネットの基本アイディア● データをパケット通信で送る● パケットには宛先と差出元を書いておく● パケットを受けとった人は各自が適切に判断して

処理をする● 宛先、差出元はユニーク(世界でひとつだけ)

Page 22: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

具体的なパケットのイメージ

送信元IPアドレスsrc IP

宛先IPアドレスdest IP

データ

Page 23: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

1990年代● 宛先、差出元はユニーク(世界でひとつだけ)● アドレスの数足りなくね??

● IPv6でアドレスの数を増やす● NAT技術で延命?

Page 24: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

プライベートIPアドレス● プライベートネットワーク(外部から利用できな

い社内LANなど)のアドレスとして使うことができる。– 10.0.0.0〜10.255.255.255– 172.16.0.0〜172.31.255.255– 192.168.0.0〜192.168.255.255

Page 25: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

NATの考え方● 自分達の組織の中はプライベートアドレスを使

う。● 外と通信するときだけグローバルアドレス(ユ

ニークに割り当てられたIPアドレス)を使う。● プライベートネットワークとグローバルネットワー

クの繋ぎ目にはルータを配置し、そこでアドレスの変換を行なう。

Page 26: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

良くある構成

IPアドレス192.168.0.10

ウェブサーバルータ

IPアドレス192.168.0.1

IPアドレス198.51.100.1

IPアドレス203.0.113.1

※ルータは複数のIPアドレスを持っている

クライアントPC

クライアントPCからウェブサーバへの通信を考える

※ルータは複数のIPアドレスを持っている

Page 27: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

インターネットの基本アイディア(再掲)● データをパケット通信で送る● パケットには宛先と差出元を書いておく● パケットを受けとった人は各自が適切に判断して

処理をする● 宛先、差出元はユニーク(世界でひとつだけ)

Page 28: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

1.クライアントPCから送信

IPアドレス192.168.0.10

IPアドレス192.168.0.1

IPアドレス198.51.100.1

IPアドレス203.0.113.1

192.168.0.10

data

203.0.113.1

Page 29: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

2.ルータが変換テーブルに記録

IPアドレス192.168.0.10

IPアドレス192.168.0.1

IPアドレス198.51.100.1

IPアドレス203.0.113.1

192.168.0.10

data

203.0.113.1

192.168.0.10 203.0.113.1

Page 30: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

3.ルータがアドレスを書き換えて送信

IPアドレス192.168.0.10

IPアドレス192.168.0.1

IPアドレス198.51.100.1

IPアドレス203.0.113.1

192.51.100.1

data

203.0.113.1

192.168.0.10 203.0.113.1

Page 31: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

4.サーバから返信(送信)

IPアドレス192.168.0.10

IPアドレス192.168.0.1

IPアドレス198.51.100.1

IPアドレス203.0.113.1

203.0.113.1

data

192.51.100.1

192.168.0.10 203.0.113.1

Page 32: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

5.変換テーブルと付き合わせ

IPアドレス192.168.0.10

IPアドレス192.168.0.1

IPアドレス198.51.100.1

IPアドレス203.0.113.1

203.0.113.1

data

192.51.100.1

192.168.0.10 203.0.113.1

Page 33: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

6.ルータがアドレスを書き換えて送信

IPアドレス192.168.0.10

IPアドレス192.168.0.1

IPアドレス198.51.100.1

IPアドレス203.0.113.1

203.0.113.1

data

192.168.0.10

192.168.0.10 203.0.113.1

Page 34: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

実際に使われてるNAT● この資料で説明した、IPアドレスだけを変換す

る、原始的なNAT(Network Address Translation)は現在はほとんど使われていない。

● IPアドレスに加えて、ポート番号の変換を行なう、NAPT(Network Address Port Transation)を使うのが普通。今では、NATと言えばNAPTのことを指すのが一般的。

● NAPTの説明は、ポート番号について説明してからのほうが良いかな。

Page 35: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

今日のお題3HTTP通信を見てみようWebの裏側を覗いてみる

Page 36: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

Google Chrome の Developer Tools

F12を押す!!

Page 37: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

F12を押すとこうなる

Developer Tools(DevTools)

Page 38: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

Webの中身がいろいろ見れる

Page 39: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

今回は通信を見てみる

Networkを押す

Page 40: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

DMMを見てみよう

URLを入力

Page 41: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

どどどどっと出力される!!

Page 42: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

Webページの表示の仕方● ブラウザからウェブサーバにHTMLを取りにいく● 取ってきたHTML情報を元に、さらに必要なデー

タをウェブサーバに取りにいく● 取ってきたデータを全部組み合わせて表示する

1ページを表示するだけでも、沢山の通信が発生する

Page 43: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

表示エリアの説明

全ての通信の様子横軸は時間並列で複数の通信がされている

Page 44: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

表示エリアの説明

1つ1つの通信の羅列

ウェブの構成要素毎に通信が行なわれていることがわかる

クリックすることで各通信の詳細を確認できる

Page 45: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

Web通信プロトコル、HTTPの概要

こういう情報ください

こういう情報あげるよ

Page 46: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

Web通信プロトコル、HTTPの概要

こういう情報ください

こういう情報あげるよ

Request Header

Respons Header+

データ本体

Page 47: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

Request/Response Headerを見よう

DevToolsで

要素を選択してHeadersを押す

Page 48: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

どのぐらい時間がかかっているか

Timingを選べばわかる

Page 49: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

ゴチャゴチャしてきたら

Clearすれば消えます

Page 50: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

インターネットプロトコルの階層構造

TCP

HTTP

IP

Ethernet

Chrome WebToolsで見ることができるのはHTTPだけ

Page 51: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

インターネットプロトコルの階層構造

TCP

HTTP

IP

Ethernet

全部見るツールもある↓

Wireshark等

Page 52: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

Wiresharkのデモ

Page 53: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

質疑応答

Page 54: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

拾った疑問への回答1● 講義資料のイラストが手紙っぽい感じだったからボンヤリとEmail

の話なのかと感じていたけど、多分違う。– うん、違う。– メールは、SMTP等のメール用のプロトコルについて調べると良いんだけ

どいろいろと複雑なので、まったくもってもはや初心者向き教材にはならないですw

● 差出人の情報はあまり要らないってコトだったけど、何かを送るってことは、送りっぱなしじゃなくてレスポンス欲しいことが多くない?なのに不要?– まったくその通りです。– レスポンス用に使います。– 不要ってのは言い過ぎでしたね。

Page 55: プロトコル/NAT/HTTP通信の中身 〜 ネットワーク勉強会資料

拾った疑問への回答2● パケットを「送る」ことばっかり考えていたけど、「受取る」こともあるよね?具体的に何を行うのが「送る」で、何が「受取る」なのかな?– 送信側はパケットを作って送る– パケットを受けとったら適切に判断して処理する– 実際の通信においては、双方でパケットを送信しあっ

て、双方で受けとって、うまいことやる感じです。