Share
Embed
ネットワーク基礎 - WEBページが表示されるまで
OSI参照モデル、TCP/IPの階層モデルからL2、L3でのルーティング、インターネットの話、WEB3層、SSL/TLSの仕組みをざっくり理解して、httpsで通信できるまでの流れをふんわり理解する
tokku5552
May 11, 2022
Transcript
61 slides
-
の前に自己紹介と何故勉強するか ・とっく(30歳) 本業インフラエンジニア、オンプレミスでの サーバー構築を主にやっています ネットワークスペシャリスト保有 ・本講義のモチベーション IT技術の中で最も重要かつ普遍的 (フロントエン ド、バックエンド、PM、など関係なく という意味で)な分野であるので教養として
身に着けていただきたいため NWのことを少し理解して、「勉強してみようかな」 という気になってもらうことを目的としてお話します Twitter: https://twitter.com/tokkuu 鬼ロク: https://angless-production.web.app/ -
前提知識~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 -
機器を繋いで通信する~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②への送信要求を スイッチ②に投げる ・スイッチ②が全てのポートへ転送 ・スイッチ①が全てのポートへ転送 ・NAS②からスイッチ①へ応答が返ってくるので スイッチ②へ転送 ・スイッチ②はさっきの要求で PC①がつながっているポートが分かっているので、
PC①に転送。 ・スイッチ①はスイッチ②に行けばその先に PC①がいることを覚え、スイッチ②はスイッチ① に行けばその先にNAS②がいることを覚えたので、今後は全てのポートへ転送しなくなる。 →自己学習する -
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 機能 ルーターの 管理画面 -
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 一つ一つ設定するのは面倒くさい -
インターネットに出る前に~ダイナミックルーティング~ ・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マスカレード など) -
インターネットの世界 ・ISP(Internet Service Provider) 所謂プロバイダー。 インターネットの契約を 皆さんがする業者 ・IX(Internet Exchange) AS間の通信や国家間の通信を
相互接続する拠点。 安全保障上の理由から 所在地はあまり 公になっていない 参考 jpix : https://www.jpix.ad.jp/jp/index.php -
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層システムであるあるなDC内の他サーバ ・外部からの通信を直接受け付けるための ネットワークをDMZ(DeMilitarized Zone)と呼ぶ。 内部のサーバとは別のサブネットに配置することで セキュリティを高める ・Reverse Proxy 外部からのアクセスを代理で受けるサーバー。 WEBサーバーが複数いても1つのIPアドレスで
受けることが出来る ・LB(Load Balancer) 負荷分散を行うサーバ。複数のWEBサーバーに 処理を振り分けることが出来る -
SSL/TLSとは~共通鍵を公開鍵暗号方式で送る~ ・公開鍵暗号方式は遅いので、共通鍵で通信したい! ・共通鍵を公開鍵暗号方式を使って渡してそれ以降共通鍵で通信する クライアン ト サーバー 共通鍵を公開鍵で 暗号化 復号して共通鍵 を得る
でもこの公開鍵って ホントに通信しようとしている サーバのもの? -
SSL/TLSとは~認証局(CA局)~ ・あらかじめサーバー側が認証局に証明書を発行してもらう クライアン ト サーバー 共通鍵を公開鍵で 暗号化 復号して共通鍵 を得る CA局
証明書発行してく れー サーバ証明書を 発行 -
SSL/TLSとは~認証局(CA局)~ ・サーバーは公開鍵と一緒にサーバ証明書をクライアントに送る ・クライアントはあらかじめPC内やブラウザに内蔵されている ルート証明書を使って、サーバから送られてきた証明書を検証する クライアン ト サーバー 共通鍵を公開鍵で 暗号化 復号して共通鍵
を得る ルート証明書 サーバ証明書 これらの仕組みで ・盗聴 ・なりすまし ・改ざん を防げる -
・クライアントから要求を受けて 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 行で説明します まとめ ・ネットワークの仕組みが少しだけイメージできるようになって いただけたらこのスライドの目的は達成です ・興味がありましたら、スライドを立ち返ってキーワードを調べて みるなどして、知識を深めてください
・書籍で勉強するのであれば”マスタリングTCP/IP―入門編―”という 本 がお勧めです。NWエンジニアにでもならない限り必要十分な 内容かと思います。 ご清聴ありがとうございました このスライドの作成者:@tokkuu https://tokku-engineer.tech/profile/