図解(?)通信アーキテクチャ入門 その2
ぞす!げんきちです!\\\\٩( 'ω' )و ////
「いや、誰だよ」って方は、下記リンクを見てやってください。
目次〜
前回の続きです!
全体像
なぜ住所であるはずのグローバルIPアドレスが変わっても(利用者が引っ越しても)利用者を特定できるのか?
DDNS(Dynamic Domain Name System)のおかげ。
#DDNSについては後述してあります。
ドメインとは
IPアドレスを文字列に変換したもの。
インターネット上のネットワークを特定する文字列。
https://genkichi.hateblo.jp/であれば、hateblo.jpの部分。
#genkichi.hateblo.jpの部分はホスト部(ネットワーク上のコンピュータを特定する文字列)。
DNS(サーバー)とは
Domain Name Systemの略。
人が使う言葉で書かれた住所 (ドメイン名) とネットワーク上にあるコンピュータ (WebやメールサーバーのIPアドレス) の間で、翻訳機としての役割がある。
DNSの仕組み
簡単に言うと、辞書のような仕組みとなっている。
例えば、辞書で「ドメイン」を調べる時は、まず「と」から始まる文字列について書かれたエリアを探して、次に「め」「い」「ん」という風に絞り込んでいく。
同様に、たとえば「genkichi.hateblo.jp」であれば、「.」で区切られた順に右側から検索を行っていく。
まず、「jp」の情報を管理するDNSサーバー(ルートDNSサーバー)に対して「hateblo.jp」の情報を管理するDNSサーバーはどこにあるかを確認する。
こうして最後に、「hateblo.jp」のDNSサーバーに対して「『genkichi.hateblo.jp』のIPアドレスは何か」を確認する。
- PC がDNSキャッシュサーバーに、ホスト名(genkichi.hateblo.jp)でアクセスする。
- DNSキャッシュサーバーがDNSルートサーバーに、管理情報 (「hateblo.jp」の情報を管理するDNSサーバーはどこにあるか) を問い合わせる。
- DNSルートサーバーがDNSキャッシュサーバーに、管理情報のあるDNSサーバーを知らせる。
- DNSキャッシュサーバーが「hateblo.jp」のDNSサーバーに、管理情報 (「genkichi.hateblo.jp」の情報を管理するDNSサーバーはどこにあるか) を問い合わせる。
- 「hateblo.jp」のDNSサーバーがDNSキャッシュサーバーに、管理情報のあるDNSサーバーを知らせる。
- DNSキャッシュサーバーが「genkichi.hateblo.jp」のDNSサーバーに、ホスト名(genkichi.hateblo.jp)に対応するIPアドレスを問い合わせる。
- 「genkichi.hateblo.jp」のDNSサーバーはDNSキャッシュサーバーに、IPアドレスを回答する。
- DNSキャッシュサーバーはPCに、IPアドレスを回答する。
- PCはIPアドレスでWebサイトにアクセスし、ブラウザ上にWebサイトが表示される。
DNSルートサーバーとは
DNSキャッシュサーバーが最初に問い合わせをするサーバー。
世界中に13機しかない。
キャッシュとは
一度読み込んだWebページのデータをPCのストレージに一時ファイルとしたもの。
同じページを再度表示する時に、この一時保存されたデータを使えば、いちいちWebサーバーと通信しなくてすむので素早く再表示される。
キャッシュの保存場所
~/Library/Application Support/Google/Chrome/Default/Application Cache
DNSキャッシュとは
ドメイン名に対応するIPアドレス情報が一時的に保存されている状態のこと。
DNSキャッシュサーバーとは
DNSキャッシュの処理を担当するサーバ。
問い合わせ結果のデータが、一定時間蓄積する。
そのためPCより以前と同じ問い合わせがあった場合には、自身でPCにIPアドレスを回答することができる。
DNSキャッシュサーバーの役割
役割1 => DNSサーバーの仕組み全体のスピードアップ化
役割2 => DNSルートサーバーの負担軽減
DDNSとは
Dynamic Domain Name Systemの略。
DNSの進化版。
IPアドレスとFQDNの紐付けの設置を定期的に更新することで、変化するIPアドレスに対して、同一のFQDNが紐付けられるようにできる。
#FQDNについては後述してあります。
#通常のDNSは、それぞれのドメインごとにゾーンファイルを持っているが、ヒューマンエラー防止のため、基本的に一度設定したら変更はできない。
グローバルIPアドレスの「東京都渋谷区○○町××~×,△△マンション」の住所例で言うと、住所変更手続きをする役所のようなもの。
役所と同じように、DDNSクライアント側からDDNSサーバーにどのIPアドレスに変更したのかを知らせる必要がある。
通知の仕方は、以下のように様々な種類がある。
- ブロードバンドルーターが通知するパターン
- DDNSクライアントのサーバーが通知するパターン
- DHCPが通知するパターン
- etc...
DHCPとは
ネットワーク接続している他の端末と重複しないプライベートIPアドレスを自動的に付与してくれるサーバー。
ほとんどの場合には、ルーターなどに内蔵されている。
FQDNとは
Fully Qualified Domain Nameの略。
省略していないドメイン名のこと。
例)
FQDN =>genkichi.hateblo.jp
FQDNではない =>hateblo.jp
ポートとは
ソフトウェアが外部とデータを入出力するできるよう、OSなどによって抽象化されたインターフェースのこと。
グローバルIPアドレスの「東京都渋谷区○○町××~×,△△マンション」の住所例で言うと、ポートは「@@号室」の「〇〇君の部屋」のドア(出入口)のイメージ。
1つのサーバと複数のサーバをつなぐもの。
サーバは1つのIPしか持っていないことが多く、このIPをWEBサーバで使ってしまうと、他のサーバとして動作することができないため、番号でサーバを管理している。
ポート番号とは
コンピュータ(サーバ)が通信を行うために通信先のアプリケーション(サーバ)を特定するための番号。
コンピュータ(サーバ)間の通信で通信する宛先のIPアドレスが分かれば、そのIPアドレスにデータを送信できるが、そのデータを受信したコンピュータが、どのアプリケーション(サーバ)でそれを受信するのか判断するために必要。
ポートが割り振る番号には、0から65535までがある。
ポート番号の種類
ウェルノウンポート番号 0~1023
IANAで管理。サーバのアプリケーションに割り当てられるポート番号。
登録済みポート番号 1024~49151
IANAで管理。独自に作成したアプリケーションに割り当てられるポート番号。
ダイナミックポート番号 49152~65535
クライアント側のアプリケーションに自動的に割り当てられるポート番号。
ポートは、インターネットサーバー側のポート(出入口)と、パソコン側(クライアント側)のポート(出入口)とに別れる。
インターネットサーバー側のポート
インターネットサーバ側のポート(扉:出入口)は固定の番号となっており、常に扉が開いた状態となっている。
サーバ側のポート番号には意味がある。
ポート番号毎にサーバ側の機能(サービス)は異なる。
サーバ側はサービス提供している機能のポート番号のみ開いた状態で待っている。
例えば、「https://~」が利用可能なサーバは443番のポートを開いて待っている。
443番ポートが開いていないサーバに「https://」でアクセスしてもエラーとなる。
パソコン側(クライアント)のポート
パソコン側(クライアント)のポートはセキュリティ等のため毎回変わり、使用の都度ポート開閉が行われる。
自動で割り当てられるポート番号は使用しているOSなどにより異なりますが「49152~65535」使用される。
OSが動的に割り当てをするため、ポート番号を指定することができない。
通信の長くて数秒だけ動的なポート番号「扉」が開かれるので外部からの不正侵入に耐える仕組みとなっている。
ポートの注意点
ポートを開けたままだと、扉が開いた状態と同じで外部からの侵入リスクが高まる。
必要のないポートは解放しない。
ルーターとポートの違いとは?
どちらも抽象化するとドアのイメージで紛らわしい。
ルーター =>グローバルIPからプライベートIPへスイッチするもの。
グローバルIPアドレスの「東京都渋谷区○○町××~×,△△マンション」の住所例で言うと、ルーターは「@@号室」の玄関のドア(出入口)のイメージ。
ポート =>1つのサーバと複数のサーバをつなぐもの。
グローバルIPアドレスの「東京都渋谷区○○町××~×,△△マンション」の住所例で言うと、ポートは「@@号室」の「〇〇君の部屋」のドア(出入口)のイメージ。
WEBサーバの動作
1.「80ポート」でHTTPリクエストを受け付ける。
2. リクエストに応じた処理や、要求されたファイルを探す。
3. リクエストしてきたコンピュータにHTTPレスポンスを返送する。
次回予告
HTTPとは
・・・
長くなってきたので、続きはまた明日書きます... 🙇♂️
<一日一新>
サラダチキン(カラムーチョ味)。ハマった。
<学習進捗>
学習開始からの期間 :86日
今日までの合計時間:849h
今日までに到達すべき目標時間:784h
目標との解離:65h
「10,000時間」まで、
残り・・・「9,151時間!」
以上です。
読んでくれた方々、ありがとうございました!((_ _ (´ω` )ペコ。