Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ネットワーク基礎 - WEBページが表示されるまで
Search
tokku5552
May 11, 2022
Programming
1
230
ネットワーク基礎 - WEBページが表示されるまで
OSI参照モデル、TCP/IPの階層モデルからL2、L3でのルーティング、インターネットの話、WEB3層、SSL/TLSの仕組みをざっくり理解して、httpsで通信できるまでの流れをふんわり理解する
tokku5552
May 11, 2022
Tweet
Share
More Decks by tokku5552
See All by tokku5552
Google CloudとAWSのコンテナ実行環境比較
tokku5552
0
140
高スループット・低レイテンシを実現する技術
tokku5552
3
8.1k
AWS CDKのススメ
tokku5552
1
450
Messaging APIのメッセージオブジェクトを検証できるChrome拡張機能を作った話
tokku5552
1
110
FlutterにLINEログインを仕込んで通知メッセージを送る
tokku5552
2
860
AWS CDK × Reactでliffをつくる
tokku5552
1
480
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化
tokku5552
1
83
インフラエンジニアのお仕事(オンプレ)
tokku5552
0
110
hooks riverpod + state notifier + freezed でのドメイン駆動設計
tokku5552
0
340
Other Decks in Programming
See All in Programming
3 Effective Rules for Using Signals in Angular
manfredsteyer
PRO
0
100
WebフロントエンドにおけるGraphQL(あるいはバックエンドのAPI)との向き合い方 / #241106_plk_frontend
izumin5210
4
1.4k
as(型アサーション)を書く前にできること
marokanatani
10
2.6k
型付き API リクエストを実現するいくつかの手法とその選択 / Typed API Request
euxn23
8
2.2k
Amazon Bedrock Agentsを用いてアプリ開発してみた!
har1101
0
330
GitHub Actionsのキャッシュと手を挙げることの大切さとそれに必要なこと
satoshi256kbyte
5
430
とにかくAWS GameDay!AWSは世界の共通言語! / Anyway, AWS GameDay! AWS is the world's lingua franca!
seike460
PRO
1
860
RubyLSPのマルチバイト文字対応
notfounds
0
120
OSSで起業してもうすぐ10年 / Open Source Conference 2024 Shimane
furukawayasuto
0
100
cmp.Or に感動した
otakakot
2
140
Outline View in SwiftUI
1024jp
1
330
役立つログに取り組もう
irof
28
9.6k
Featured
See All Featured
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
25
1.8k
Making Projects Easy
brettharned
115
5.9k
Typedesign – Prime Four
hannesfritz
40
2.4k
Code Review Best Practice
trishagee
64
17k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
YesSQL, Process and Tooling at Scale
rocio
169
14k
BBQ
matthewcrist
85
9.3k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.8k
The Invisible Side of Design
smashingmag
298
50k
Automating Front-end Workflow
addyosmani
1366
200k
What's new in Ruby 2.0
geeforr
343
31k
Statistics for Hackers
jakevdp
796
220k
Transcript
ネットワーク基礎 WEBページが表示されるまで Flutter大学勉強会 2021/05/05 21:00~
1.前提知識 2.機器を繋いで通信する~L2での通信~ 3.IPアドレスとルーティング基礎 4.インターネット概要 5.WEB3層とは 6.SSL/TLS 7.httpsでの通信 8.まとめ
1.前提知識 2.機器を繋いで通信する~L2での通信~ 3.IPアドレスとルーティング基礎 4.インターネット概要 5.WEB3層とは 6.SSL/TLS 7.httpsでの通信 8.まとめ
の前に自己紹介と何故勉強するか ・とっく(30歳) 本業インフラエンジニア、オンプレミスでの サーバー構築を主にやっています ネットワークスペシャリスト保有 ・本講義のモチベーション IT技術の中で最も重要かつ普遍的 (フロントエン ド、バックエンド、PM、など関係なく という意味で)な分野であるので教養として
身に着けていただきたいため NWのことを少し理解して、「勉強してみようかな」 という気になってもらうことを目的としてお話します Twitter: https://twitter.com/tokkuu 鬼ロク: https://angless-production.web.app/
全体の構成図 https://www.slideshare.net/taijitsuchiya5/wakamonog6-tsuchiya-public
前提知識~OSI参照モデルとTCP/IPの階層モデル~ ・コンピューターの通信を役割に分けて、 仕様を定義したもの。 ・左がOSI参照モデル 右がTCP/IPの 階層モデル 第7層 アプリケーション層 アプリケーション層 第6層
プレゼンテーション層 第5層 セッション層 第4層 トランスポート層 トランスポート層 第3層 ネットワーク層 インターネット層 第2層 データリンク層 ネットワークインターフェース層 第1層 物理層 (ハードウェア)
TCP/IPによる通信 ・TCP(Transmission Control Protocol)、IP(Internet Protocol)は インターネット環境の通信を実現する ためのプロトコル ・プロトコルとは決めごと。 RFC(Request For
Comments)とい うドキュメントに内容が書かれてお り、誰でもインターネット上で閲覧す ることが出来る。 RFCってなに? - JPNIC : https://www.nic.ad.jp/ja/rfc-jp/WhatisRFC.html
1.前提知識 2.機器を繋いで通信する~L2での通信~ 3.IPアドレスとルーティング基礎 4.インターネット概要 5.WEB3層とは 6.SSL/TLS 7.httpsでの通信 8.まとめ
機器を繋いで通信する~L2での通信~ ・図は私の家のNW環境
機器を繋いで通信する~L2での通信~ ・MACアドレス:NIC(Network Interface Card)に紐づいたアドレス。 物理アドレスとも言う ・IPアドレス:IPv4とIPv6がある。ここではv4のみの話をする。 8bit×4の数字で表すアドレス。192.168.1.1のような形式。 ・ARP:Address Resolution Protocol。
IPアドレスからMACアドレスを得るためのプロトコル。逆はRARP 基本的にハブに繋いだ端末同士はそれぞれのARPテーブルを持っている。
機器を繋いで通信する~L2での通信~ ・PC①とNAS②の通信を考える ・スイッチ①とスイッチ②は所謂ハブ ・ハブは同一ネットワークの通信を担う ・L2SWで接続された同一ネットワーク内の 機器はIPアドレスとMACアドレスを変換してARPテーブルに保持しておく ・スイッチはそれぞれのLANポートの先に どのMACアドレスの端末がいるかを把握している。
機器を繋いで通信する~L2での通信~ ・PC ①からNAS②への送信要求を スイッチ②に投げる ・スイッチ②が全てのポートへ転送 ・スイッチ①が全てのポートへ転送 ・NAS②からスイッチ①へ応答が返ってくるので スイッチ②へ転送 ・スイッチ②はさっきの要求で PC①がつながっているポートが分かっているので、
PC①に転送。 ・スイッチ①はスイッチ②に行けばその先に PC①がいることを覚え、スイッチ②はスイッチ① に行けばその先にNAS②がいることを覚えたので、今後は全てのポートへ転送しなくなる。 →自己学習する
1.前提知識 2.機器を繋いで通信する~L2での通信~ 3.IPアドレスとルーティング基礎 4.インターネット概要 5.WEB3層とは 6.SSL/TLS 7.httpsでの通信 8.まとめ
IPアドレス ・IPアドレスは32bitの整数値 11000000 10101000 00000010 00000001 →192 . 168 .
2 . 1 ・ネットワーク部とホスト部からなる。セットでネットワークアドレスが存在 通常はネットワークアドレスそのものではなく、サブネットマスクで示す 11111111 11111111 11111111 00000000 → 255 . 255 . 255 . 0 サブネットマスクと論理積(AND)をとる 11000000 10101000 00000010 00000000 → 192.168.2.0 第1オクテット 第2オクテット 第4オクテット 第3オクテット 先頭からのビット数で /24 とも表す
IPアドレスでの通信~L3~ ・ネットワークアドレスが同じ機器同士はお互いのMACアドレスが 分かっているのでARP、RARPを用いて通信可能 ・異なるネットワークの通信はL3SW(所謂ルーター)を通して通信する。 PC-A PC-B L3SW .1 .1 .10
192.168.2.0/24 .10 192.168.1.0/24
IPアドレスでの通信~L3~ ・ネットワークアドレスが同じ機器同士はお互いのMACアドレスが 分かっているのでARP、RARPを用いて通信可能 ・異なるネットワークの通信はL3SW(所謂ルーター)を通して通信する。 PC-A PC-B L3SW .1 .1 .10
192.168.2.0/24 .10 192.168.1.0/24 NWアドレスを 示す ホスト部のみを表 記 192.168.1.10/24 ルータは複数のネットワーク につながるLANポートを持っ ている
IPアドレスでの通信~スタティックルーティング~ ・右図のようなネットワークでPC-Aから PC-Cに通信することを考える ・PC-Aには自分のIPアドレス(192.168.1.10)と デフォルトゲートウェイ(192.168.1.1)を 設定する ・PC-Aは自分のルーティングテーブルにない ネットワークへのパケットは全て デフォルトゲートウェイに 送信するようになる
PC-A L3 SW -B .1 .1 192.168.3.0/24 .10 L3 SW -C PC-B PC-C L3 SW -A 192.168.2.0/24 192.168.1.0/24 192.168.11.0/24 192.168.10.0/24 .10 .10 .1 .1 .2 .2 .1
IPアドレスでの通信~スタティックルーティング~ ・L3SW-Aは192.168.1.1/24と192.168.10.2/24 のIPアドレスを持っている ・自分の所属するネットワークのルーティング とは別に、192.168.3.0/24のNWに行くときは 192.168.10.1(L3SW-Bの下の足)に 行けばよいと教える PC-A L3 SW
-B .1 .1 192.168.3.0/24 .10 L3 SW -C PC-B PC-C L3 SW -A 192.168.2.0/24 192.168.1.0/24 192.168.11.0/24 192.168.10.0/24 .10 .10 .1 .1 .2 .2 .1 route next hop interface 192.168.1.10/32 192.168.1.10 eth1 192.168.10.0/24 192.168.10.1 eth0 192.168.3.0/24 192.168.10.1 eth0 eth0 eth1 L3SW-A
IPアドレスでの通信~スタティックルーティング~ ・L3SW-Bにも同様に192.168.3.0/24への ルーティングを設定してやる ・自分の所属するネットワークのルーティング とは別に、192.168.3.0/24のNWに行くときは 192.168.11.1(L3SW-Cの下の足)に 行けばよいと教える PC-A L3 SW
-B .1 .1 192.168.3.0/24 .10 L3 SW -C PC-B PC-C L3 SW -A 192.168.2.0/24 192.168.1.0/24 192.168.11.0/24 192.168.10.0/24 .10 .10 .1 .1 .2 .2 .1 route next hop interface 192.168.11.0/24 192.168.11.1 eth0 192.168.2.10/32 192.168.2.10 eth1 192.168.10.2/32 192.168.10.2 eth2 192.168.3.0/24 192.168.11.1 eth0 eth0 eth1 eth2 L3SW-B
IPアドレスでの通信~スタティックルーティング~ ・L3SW-Cは192.168.3.0/24への足を 持っているので、PC-Cへ到達できる ・帰りのルーティングを設定する必要がある 192.168.1.0/24のNWに行くときは 192.168.11.2(L3SW-Bの上の足)に 行けばよいと教える PC-A L3 SW
-B .1 .1 192.168.3.0/24 .10 L3 SW -C PC-B PC-C L3 SW -A 192.168.2.0/24 192.168.1.0/24 192.168.11.0/24 192.168.10.0/24 .10 .10 .1 .1 .2 .2 .1 route next hop interface 192.168.11.2/32 192.168.11.2 eth0 192.168.3.10/32 192.168.3.10 eth1 192.168.1.0/24 192.168.11.2 eth0 eth0 eth1 L3SW-C
IPアドレスでの通信~スタティックルーティング~ ・L3SW-Bにも同様に192.168.1.0/24への ルーティングを設定してやる ・192.168.1.0/24のNWに行くときは 192.168.10.2(L3SW-Aの上の足)に 行けばよいと教える PC-A L3 SW -B
.1 .1 192.168.3.0/24 .10 L3 SW -C PC-B PC-C L3 SW -A 192.168.2.0/24 192.168.1.0/24 192.168.11.0/24 192.168.10.0/24 .10 .10 .1 .1 .2 .2 .1 route next hop interface 192.168.11.0/24 192.168.11.1 eth0 192.168.2.10/32 192.168.2.10 eth1 192.168.10.2/32 192.168.10.2 eth2 192.168.3.0/24 192.168.11.1 eth0 192.168.1.0/24 192.168.10.2 eth2 eth0 eth1 eth2 L3SW-B ・L3SW-AはPC-Aの場所を知っているので 追加設定なし
IPアドレス自体を動的に設定~DHCP~ ・ところでそもそもPCやPS4に IPを設定した覚えはないのに、 通信できるのは何故か? ・DHCP(Dynamic Host Configuration Protocol)といって、動的に端末に IPアドレス、ネットワークマスク、 デフォルトゲートウェイの設定を
行うサーバーがいて、勝手に設定を 行ってくれる ・自宅環境の場合はルーターが その機能を担っている場合が多い DHCP 機能 ルーターの 管理画面
1.前提知識 2.機器を繋いで通信する~L2での通信~ 3.IPアドレスとルーティング基礎 4.インターネット概要 5.WEB3層とは 6.SSL/TLS 7.httpsでの通信 8.まとめ
IPアドレスでの通信~スタティックルーティング~ ・L3SW-Aは192.168.1.1/24と192.168.10.2/24 のIPアドレスを持っている ・自分の所属するネットワークのルーティング とは別に、192.168.3.0/24のNWに行くときは 192.168.10.1に行けばよいと教える PC-A L3 SW -B
.1 .1 192.168.3.0/24 .10 L3 SW -C PC-B PC-C L3 SW -A 192.168.2.0/24 192.168.1.0/24 192.168.11.0/24 192.168.10.0/24 .10 .10 .1 .1 .2 .2 .1 route next hop interface 192.168.1.10/32 192.168.1.10 eth1 192.168.10.0/24 192.168.10.1 eth0 192.168.3.0/24 192.168.10.1 eth0 eth0 eth1 L3SW-A
IPアドレスでの通信~スタティックルーティング~ ・L3SW-Aは192.168.1.1/24と192.168.10.2/24 のIPアドレスを持っている ・自分の所属するネットワークのルーティング とは別に、192.168.3.0/24のNWに行くときは 192.168.10.1に行けばよいと教える PC-A L3 SW -B
.1 .1 192.168.3.0/24 .10 L3 SW -C PC-B PC-C L3 SW -A 192.168.2.0/24 192.168.1.0/24 192.168.11.0/24 192.168.10.0/24 .10 .10 .1 .1 .2 .2 .1 route next hop interface 192.168.1.10/32 192.168.1.10 eth1 192.168.10.0/24 192.168.10.1 eth0 192.168.3.0/24 192.168.10.1 eth0 eth0 eth1 L3SW-A 一つ一つ設定するのは面倒くさい
インターネットに出る前に~ダイナミックルーティング~ ・今までの話はスタティックルート(静的ルーティング) 動的にルーティングを行うプロトコルが存在する。 ・OSPF(Open Shortest Path First) エリアという範囲内でルーター同士がリンク情報を交換し合い、 ルーティングを実現する。隣同士(ネイバー)でルーティングテーブルを 交換していき、最終的にはエリア内のルーティング情報がいきわたる。
DC内などの閉じたネットワークのルーティングに使われる
インターネットに出る前に~ダイナミックルーティング~ ・BGP(Border Gateway Protocol) IANA(Internet Assigned Numbers Authority)という機関が管理している AS(Autonomous System)番号をもとに経路制御を行う。
日本ではJPNICという機関がASを割り当てている ・通信ができる相手のことをピアと呼ぶ ・インターネット上ではBGPでルーティングが行われていると思ってよい 参考:インターネット10分講座:BGP - JPNIC https://www.nic.ad.jp/ja/newsletter/No35/0800.html
インターネットに出る前に~プライベートIPとNAT~ ・基礎的な知識に戻るが、IPアドレスにはグローバルIPアドレスと プライベートIPアドレスがある。 クラスA:10.0.0.0~10.255.255.255 (10.0.0.0/8) クラスB:172.16.0.0~172.31.255.255 (172.16.0.0/12) クラスC:192.168.0.0~192.168.255.255 (192.168.0.0/16) ・プライベートIPアドレスは企業内や家庭内で自由に割り当ててよいIPアドレス
・家庭用ルーターでは192.168.1.0や192.168.2.0のIPがDHCPによって 勝手に割り振られる
インターネットに出る前に~プライベートIPとNAT~ ・プライベートIPアドレスを持った端末たちは組織内のネットワークから 外に出るときに、ISP(Internet Service Provider)から割り当てられた グローバルIPアドレスに変換されて出ていく。 これがNAT(Network Address Translation) ・NATは送信元のIPアドレスを変換するSNAT(Source
NAT)、 宛先のIPアドレスを変換するDNAT(Destination NAT)がある。 ・今は単にプライベートIPアドレスとグローバルIPアドレスを変換するもの と覚えてもらえればいいが、ポートも同時に変換するNAPTなど、 用途や行うことによって様々な呼び方があるので注意 (ポートフォワーディング、IPマスカレード など)
インターネットの世界 ・組織内のネットワークからNATし てグローバルIPとしてインターネッ トの世界に出ていく ・インターネット上にはISP、IX、 CDN等の組織が存在し、それぞれ AS番号を持っている。 ・相互接続したピアをたどって目的 の場所へたどり着く
インターネットの世界 ・ISP(Internet Service Provider) 所謂プロバイダー。 インターネットの契約を 皆さんがする業者 ・IX(Internet Exchange) AS間の通信や国家間の通信を
相互接続する拠点。 安全保障上の理由から 所在地はあまり 公になっていない 参考 jpix : https://www.jpix.ad.jp/jp/index.php
1.前提知識 2.機器を繋いで通信する~L2での通信~ 3.IPアドレスとルーティング基礎 4.インターネット概要 5.WEB3層とは 6.SSL/TLS 7.httpsでの通信 8.まとめ
WEB3層の前に、TCPについて ・TCP/IPの通信ではIPアドレスによって場所を 特定して通信を送り、TCP/UDPによって 用途を特定する ・TCPではポート番号で用途を判別する。 よく使われるポート番号のことを well-knownポート と呼ぶ ・またTCPはコネクション型プロトコルで、相手と のコネクションが確立したら初めて通信を開始する
→3ウェイハンドシェイク
https通信で抑えておくべきプロトコル ・http(tcp80) Hyper Text Transfer Protocol HTMLでファイルをやり取りするためのプロトコル GET/POSTなどのコマンドと応答、データによる メッセージの送受信を行う ・dns(tcp/udp53)
Domain Name System ドメインとIPアドレスの変換(これを名前解決 という)を行う。DNS自体は超巨大な 分散データベースのようなもの ・https(tcp443) Hypertext Transfer Protocol Secure 実はこれ自体はプロトコルではなく、SSL/TLS の元で暗号化されたセキュアなhttp通信のこと
http - Hyper Text Transfer Protocol ・TCPの80番で通信を行う ・GETコマンド:URLの後に?を付けパラメータを渡す。 YouTubeなんかがそれ https://www.youtube.com/results?search_query=KBOY
・POSTコマンド:URL内とは別にbody部に リクエストパラメータを含める。 申し込みフォームとかで情報を送るとき等 ※他の人から見えなくなるわけではない
http - Hyper Text Transfer Protocol ・右は先ほどの検索画面を Google Chromeの開発者ツールで 見たもの(F12を押すと見れます)
・Status Codeが200となっているが 200が正常に応答が返ってきた というしるし ・400番代がClient Error、500番代が Server Errorと区分けされている
dns - Domain Name System ・TCP/UDPの53番で通信を行う ・URLのドメインの部分をIPアドレスに変換する https://www.youtube.com/results?search_query=KBOY だったらwww.youtube.comのIPアドレスを調べる ・wwwをホスト部youtube.comをドメイン部と呼ぶ。
併せてFQDN(Fully Qualified Domain Name)と呼ぶ ・特にcomの部分をTLD(Top Level Domain)と呼ぶ
dns - Domain Name System ・名前解決を行うDNSサーバーをフルサービスリゾルバーと呼ぶ ・ドメイン内のレコード(IPとホスト名のペア)を持っているサーバを 権威サーバという。 特にTLDの情報を持っている権威DNSサーバをルートサーバーといい、 世界に13台存在する。
・フルサービスリゾルバは問い合わせを受け、再帰的に目的の名前解決を行う。 クライアント ルートサーバ 権威DNS サーバ jp kboy.jp/はどこ? 35.194.122.208 やで~ kboy.jp/はどこ? kboy.jpは知らんけどjpの権威サーバはここやで~
WEB3層の話 ・WEBアプリケーションを提供するのに必要な 3つのサーバ ・WEBサーバ httpリクエストを受けとりAPサーバに処理を流す 静的コンテンツ(htmlとcssやJavaScriptのみ)なら そのまま返したり、キャッシュしているページを 返却したりする。 apacheやnginx、IISなどが有名
WEB3層の話 ・APサーバ アプリケーションの実行環境(ランタイム)を 搭載しているサーバ。JavaならJVMを動作させ WEBサーバから処理を受け取り、DBを操作して WEBサーバにレスポンスを返す。 有名なのはtomcat、WebLogic、Pumaなど
WEB3層の話 ・DBサーバ APサーバから処理を受け取ってデータを処理する サーバ WEB3層においてはRDB(Relational Database)が 主流でRDBを管理するソフトウェアをRDBMS という。 主要なRDBMSはOracle、MySQL、PostgreSQLなど
WEB3層システムであるあるなDC内の他サーバ ・外部からの通信を直接受け付けるための ネットワークをDMZ(DeMilitarized Zone)と呼ぶ。 内部のサーバとは別のサブネットに配置することで セキュリティを高める ・Reverse Proxy 外部からのアクセスを代理で受けるサーバー。 WEBサーバーが複数いても1つのIPアドレスで
受けることが出来る ・LB(Load Balancer) 負荷分散を行うサーバ。複数のWEBサーバーに 処理を振り分けることが出来る
WEB3層システムであるあるなDC内の他サーバ ・その他管理系のサーバ WEBアプリケーションを実現するための サーバとは別に、管理系のサーバを準備することが 多い。ログを見たり、ping(IPアドレスによる 死活監視)を飛ばしたりして監視するサーバー、 バックアップを行うためのサーバー、バッチ処理を 行うサーバー、ジョブを管理するサーバーなどなど ・またDCでは踏み台サーバーを用意して そこからsshやRDPで接続する
1.前提知識 2.機器を繋いで通信する~L2での通信~ 3.IPアドレスとルーティング基礎 4.インターネット概要 5.WEB3層とは 6.SSL/TLS 7.httpsでの通信 8.まとめ
SSL/TLSとは~共通鍵暗号方式~ ・お互いに共通の鍵を使って暗号化と復号を行う ・大量のデータであっても暗号化と復号のスピードが早いのがメリットだが、 事前に鍵を共有しておく必要がある クライアン ト サーバー 共通鍵 共通鍵 ※余談:平文を暗号文にすることを
暗号化といい、その逆を復号という。 復号化とは言わないので注意
SSL/TLSとは~公開鍵暗号方式~ ・公開鍵と秘密鍵のペアを作って暗号化、復号を行う。 ・公開鍵で暗号化したデータは秘密鍵でしか復号出来ない ・南京錠(公開鍵)とそのカギ(秘密鍵)のイメージ クライアン ト サーバー 暗号化 復号
SSL/TLSとは~共通鍵を公開鍵暗号方式で送る~ ・公開鍵暗号方式は遅いので、共通鍵で通信したい! ・共通鍵を公開鍵暗号方式を使って渡してそれ以降共通鍵で通信する クライアン ト サーバー 共通鍵を公開鍵で 暗号化 復号して共通鍵 を得る
SSL/TLSとは~共通鍵を公開鍵暗号方式で送る~ ・公開鍵暗号方式は遅いので、共通鍵で通信したい! ・共通鍵を公開鍵暗号方式を使って渡してそれ以降共通鍵で通信する クライアン ト サーバー 共通鍵を公開鍵で 暗号化 復号して共通鍵 を得る
でもこの公開鍵って ホントに通信しようとしている サーバのもの?
SSL/TLSとは~認証局(CA局)~ ・あらかじめサーバー側が認証局に証明書を発行してもらう クライアン ト サーバー 共通鍵を公開鍵で 暗号化 復号して共通鍵 を得る CA局
証明書発行してく れー サーバ証明書を 発行
SSL/TLSとは~認証局(CA局)~ ・サーバーは公開鍵と一緒にサーバ証明書をクライアントに送る ・クライアントはあらかじめPC内やブラウザに内蔵されている ルート証明書を使って、サーバから送られてきた証明書を検証する クライアン ト サーバー 共通鍵を公開鍵で 暗号化 復号して共通鍵
を得る ルート証明書 サーバ証明書
SSL/TLSとは~認証局(CA局)~ ・サーバーは公開鍵と一緒にサーバ証明書をクライアントに送る ・クライアントはあらかじめPC内やブラウザに内蔵されている ルート証明書を使って、サーバから送られてきた証明書を検証する クライアン ト サーバー 共通鍵を公開鍵で 暗号化 復号して共通鍵
を得る ルート証明書 サーバ証明書 これらの仕組みで ・盗聴 ・なりすまし ・改ざん を防げる
1.前提知識 2.機器を繋いで通信する~L2での通信~ 3.IPアドレスとルーティング基礎 4.インターネット概要 5.WEB3層とは 6.SSL/TLS 7.httpsでの通信 8.まとめ
全体の構成図 https://www.slideshare.net/taijitsuchiya5/wakamonog6-tsuchiya-public www.test.co.jp
https://www.test.co.jp/が表示されるまで <設定> ・企業内のクライアントPCで ブラウザにhttps://www.test.co.jp/ と入力してエンターを押す ・企業内はOSPFでルーティング さ れており、DHCPで設定され ているISPのDNSサーバーに 名前解決を要求 OSPF エリア0
NATされて外の世界へ
・クライアントから要求を受けて ISPのDNSサーバが 再帰問い合わせを行う ・testドメインは目的のDCの DMZにあるので、そいつがwwwの IPアドレスを返却する (LBのグローバルIPアドレス) ISPのDNS サーバー ルートサーバ
権威DNS サーバ jp www.test.co.jpはど こ? <LBのグローバルアドレス >や で~ https://www.test.co.jp/が表示されるまで 権威DNS サーバ co test.co.jpの権威サーバはここやで~
https://www.test.co.jp/が表示されるまで ・目的のIPアドレスが分かった ので、改めて企業内ネットワー クからインターネットを飛び出 し、目的のグローバルIPに通信 を求める ・TCP 3 Way handshakeで通信を
確立した後はTLS Sessionを 開始する SYN SYN + ACK ACK
・サーバーは公開鍵と一緒にサーバ証明書をクライアントに送る ・クライアントはルート証明書を用いてサーバ証明書を検証 ・共通鍵を共有 *実際には共通鍵を公開鍵で暗号化して送るのではなく、 Diffie Hellman鍵交換方式を使って共通鍵を交換する クライアン ト サーバー (LB)
共通鍵を公開鍵で 暗号化* 復号して共通鍵 を得る* ルート証明書 サーバ証明書 https://www.test.co.jp/が表示されるまで
・サーバーは公開鍵と一緒にサーバ証明書をクライアントに送る ・クライアントはルート証明書を用いてサーバ証明書を検証 ・共通鍵を共有 *実際には共通鍵を公開鍵で暗号化して送るのではなく、 Diffie Hellman鍵交換方式を使って共通鍵を交換する クライアン ト サーバー (LB)
共通鍵を公開鍵で 暗号化* 復号して共通鍵 を得る* ルート証明書 サーバ証明書 https://www.test.co.jp/が表示されるまで TLSセッションが確立したら、 WEB サーバーにリクエストを 流し、WEBサーバーはindex.html をレスポンスとして 返却する
1.前提知識 2.機器を繋いで通信する~L2での通信~ 3.IPアドレスとルーティング基礎 4.インターネット概要 5.WEB3層とは 6.SSL/TLS 7.httpsでの通信 8.まとめ
最後の要点 要点を 1 行で説明します まとめ ・ネットワークの仕組みが少しだけイメージできるようになって いただけたらこのスライドの目的は達成です ・興味がありましたら、スライドを立ち返ってキーワードを調べて みるなどして、知識を深めてください
・書籍で勉強するのであれば”マスタリングTCP/IP―入門編―”という 本 がお勧めです。NWエンジニアにでもならない限り必要十分な 内容かと思います。 ご清聴ありがとうございました このスライドの作成者:@tokkuu https://tokku-engineer.tech/profile/
参考 ・インターネットの裏側の仕組み https://www.slideshare.net/taijitsuchiya5/wakamonog6-tsuchiya-public ・【図解】https(SSL/TLS)の仕組みとシーケンス,パケット構造 〜暗号化の範囲, Encrypted Alert, ヘッダやレイヤについて~ https://milestone-of-se.nesuke.com/nw-basic/tls/https-structure/ ・JPNIC
https://www.nic.ad.jp/ja/