プロトコル/nat/http通信の中身 〜 ネットワーク勉強会資料
TRANSCRIPT
2017/9/28
佐々木 健
ネットワークの基本について学ぶ第2回
プロトコル/NAT/HTTP通信の中身
この文書について
前回の勉強会で沢山お菓子をもらえて嬉しかったのですが、沢山のお菓子がいつの間にか減ってきたので、また勉強会をやる気になりました。
前回質問を受けたことに関して説明をする、という内容になっています。
お願い
定時後の勉強会なので気楽に行きましょう。
飲食、雑談は自由にしてください。
みんなであれこれ雑談してくれるほうが私もおやつを食べやすいです。
わからないことがあったら遠慮せずに聞いてね。
#beginner-net-study というSlackチャンネルを作ったので雑談に使ってくださいませ。
本日のタイムスケジュール(予定)● 参加者の自己紹介(5分)
– 人数が少なかったら全員– 人数が多かったら近くにいる5人に自己紹介
● 前回のおさらい(5分)● 本編(15分)● 質疑(5分)
自己紹介タイム● 参加者の自己紹介(5分)
– 人数が少なかったら全員– 人数が多かったら近くにいる5人に自己紹介
● 前回のおさらい(5分)● 本編(15分)● 質疑(10分)
前回のおさらい説明したこと、疑問点のまとめ
パケット通信とは何か?
郵便でデータを運ぶイメージ
封筒には、宛先、差出元が書いてある
インターネットの基本アイディア● データをパケット通信で送る● パケットには宛先と差出元を書いておく● パケットを受けとった人は各自が適切に判断して
処理をする● 宛先、差出元はユニーク(世界でひとつだけ)
疑問点1● 宛先、差出元はユニーク(世界でひとつだけ)
いろいろなところで、同じIPアドレスを使ってる気がするけど、、、、
192.168.xxx.xxx とか
具体的には何が書いてあるの?
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
差出元
宛先
???
今日のお題1プロトコルって何?
そもそも通信とは何か?● オブジェクトとオブジェクトが協調動作を行なうための
手段
● 情報をやりとりする
● なにかを媒体としてやりとりする
● なんらかの目的があって行なわれる
● 決まった手順、約束事に従って行なわれる
そもそも通信とは何か?● オブジェクトとオブジェクトが協調動作を行なうための
手段
● 情報をやりとりする
● なにかを媒体としてやりとりする
● なんらかの目的があって行なわれる
● 決まった手順、約束事に従って行なわれる
プロトコル
(例)ハンバーガーを買いに行こう!!いらっしゃいませご注文は何になさいますか?
ビッグマックセットで
お飲み物は何になさいますか?
オレンジジュース
600円にいただきます。
スイカで払います
ありがとうございました
(例)ハンバーガーを買いに行こう!!
目的:ハンバーガーや飲み物を買いたい、売りたい
やりとりするもの:買うもの、値段
媒体:日本語、音声、空気
手順、約束事:接客マニュアル、商品メニュー、日本円決済、電子決済
通信条件が合わないと通信できないいらっしゃいませご注文は何になさいますか?
(私、セルクナム族!!)(日本語良くわからない!!)
..........
プロトコルの階層構造
日本の社会常識
ハンバーガーの注文
日本語
通信を正しく行なうためには、その通信を支えるプロトコルを
お互いに理解している必要がある
インターネットプロトコルの階層構造
TCP
HTTP
IP
Ethernet
Webを実現するためのHTTPの下には、TCP、IP、Ethernet等の下位プロトコルがある
インターネットプロトコルの階層構造
TCP
HTTP
IP
Ethernet
前回説明したところ
今日のお題2NATの仕組み
インターネットの基本アイディア● データをパケット通信で送る● パケットには宛先と差出元を書いておく● パケットを受けとった人は各自が適切に判断して
処理をする● 宛先、差出元はユニーク(世界でひとつだけ)
具体的なパケットのイメージ
送信元IPアドレスsrc IP
宛先IPアドレスdest IP
データ
1990年代● 宛先、差出元はユニーク(世界でひとつだけ)● アドレスの数足りなくね??
● IPv6でアドレスの数を増やす● NAT技術で延命?
プライベート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
NATの考え方● 自分達の組織の中はプライベートアドレスを使
う。● 外と通信するときだけグローバルアドレス(ユ
ニークに割り当てられたIPアドレス)を使う。● プライベートネットワークとグローバルネットワー
クの繋ぎ目にはルータを配置し、そこでアドレスの変換を行なう。
良くある構成
IPアドレス192.168.0.10
ウェブサーバルータ
IPアドレス192.168.0.1
IPアドレス198.51.100.1
IPアドレス203.0.113.1
※ルータは複数のIPアドレスを持っている
クライアントPC
クライアントPCからウェブサーバへの通信を考える
※ルータは複数のIPアドレスを持っている
インターネットの基本アイディア(再掲)● データをパケット通信で送る● パケットには宛先と差出元を書いておく● パケットを受けとった人は各自が適切に判断して
処理をする● 宛先、差出元はユニーク(世界でひとつだけ)
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
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
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
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
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
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
実際に使われてるNAT● この資料で説明した、IPアドレスだけを変換す
る、原始的なNAT(Network Address Translation)は現在はほとんど使われていない。
● IPアドレスに加えて、ポート番号の変換を行なう、NAPT(Network Address Port Transation)を使うのが普通。今では、NATと言えばNAPTのことを指すのが一般的。
● NAPTの説明は、ポート番号について説明してからのほうが良いかな。
今日のお題3HTTP通信を見てみようWebの裏側を覗いてみる
Google Chrome の Developer Tools
F12を押す!!
F12を押すとこうなる
Developer Tools(DevTools)
Webの中身がいろいろ見れる
今回は通信を見てみる
Networkを押す
DMMを見てみよう
URLを入力
どどどどっと出力される!!
Webページの表示の仕方● ブラウザからウェブサーバにHTMLを取りにいく● 取ってきたHTML情報を元に、さらに必要なデー
タをウェブサーバに取りにいく● 取ってきたデータを全部組み合わせて表示する
1ページを表示するだけでも、沢山の通信が発生する
表示エリアの説明
全ての通信の様子横軸は時間並列で複数の通信がされている
表示エリアの説明
1つ1つの通信の羅列
ウェブの構成要素毎に通信が行なわれていることがわかる
クリックすることで各通信の詳細を確認できる
Web通信プロトコル、HTTPの概要
こういう情報ください
こういう情報あげるよ
Web通信プロトコル、HTTPの概要
こういう情報ください
こういう情報あげるよ
Request Header
Respons Header+
データ本体
Request/Response Headerを見よう
DevToolsで
要素を選択してHeadersを押す
どのぐらい時間がかかっているか
Timingを選べばわかる
ゴチャゴチャしてきたら
Clearすれば消えます
インターネットプロトコルの階層構造
TCP
HTTP
IP
Ethernet
Chrome WebToolsで見ることができるのはHTTPだけ
インターネットプロトコルの階層構造
TCP
HTTP
IP
Ethernet
全部見るツールもある↓
Wireshark等
Wiresharkのデモ
質疑応答
拾った疑問への回答1● 講義資料のイラストが手紙っぽい感じだったからボンヤリとEmail
の話なのかと感じていたけど、多分違う。– うん、違う。– メールは、SMTP等のメール用のプロトコルについて調べると良いんだけ
どいろいろと複雑なので、まったくもってもはや初心者向き教材にはならないですw
● 差出人の情報はあまり要らないってコトだったけど、何かを送るってことは、送りっぱなしじゃなくてレスポンス欲しいことが多くない?なのに不要?– まったくその通りです。– レスポンス用に使います。– 不要ってのは言い過ぎでしたね。
拾った疑問への回答2● パケットを「送る」ことばっかり考えていたけど、「受取る」こともあるよね?具体的に何を行うのが「送る」で、何が「受取る」なのかな?– 送信側はパケットを作って送る– パケットを受けとったら適切に判断して処理する– 実際の通信においては、双方でパケットを送信しあっ
て、双方で受けとって、うまいことやる感じです。