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

Post on 22-Jan-2018

1.016 Views

Category:

Internet

1 Downloads

Preview:

Click to see full reader

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

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

top related