【学習記録①】チームラボオンラインスキルアップ課題「インターネットについて」


はじめに

下記サイトを参考に、Webサービスを作成する手順を記します。

チームラボオンラインスキルアップ課題
https://team-lab.github.io/skillup/

目次

  • Step1 掲示板を作ろう

    • 1. インターネットについて
    • 2. WEBサーバーについて
    • 3. HTMLとCSSについて
    • 4-a【Windows】Dockerと開発環境
    • 4-b【Mac】Dockerと開発環境の作り方
    • 5. PHPの説明
    • 6. PHPでGET/POSTをやってみる
    • 7. データベースについて
    • 8. SQLを書いてみる
    • 9. PHPでデータベースを操作してみる
    • 10. GitとGithubについて
  • STEP2 Instagramもどきを作ろう

    • 1. フレームワークについて
    • 2. Laravelで初期ページを表示してみよう
    • 3. Laravelを触ってみよう
    • 4. 入力フォームを作ってみよう
    • 5. LaravelとPostgerSQLで掲示板を作ってみよう
    • 6. Laravelで掲示板にログイン機能を実装
    • 7. 画像アップロードしよう
    • 8. 画面仕様書とは何か
    • 9. データベース設計書とは何か
    • 10 Herokuで世界に公開してみよう
    • 11 最終課題

今回勉強したこと

「STEP1 掲示板を作ろう」>「インターネットの仕組み」

①インターネットの仕組み

* 家庭内LANや企業内LAN,携帯電話網などのネットワーク同士を繋ぐ、世界規模の通信網のこと
  • インターネットの仕組み
    • インターネットに接続するにはルータなどの機器を使用する
    • インターネットに接続する機器には、IPアドレス(176.32.98.81など)が割り当てられる。通信の際にはそのIPアドレスを用いて接続先を指定する *ドメイン
    • IPアドレスは数字列で人間に分かりにくいので、一般的には英数字列で名前(ドメイン名と呼ばれる)を付ける
    • IPアドレスとドメイン名を関連付けることによって、IPアドレスの代わりにドメイン名で接続することができる
  • クライアントとサーバ
    • インターネットにおいて、リクエストを送信する側をクライアント、それを受けてレスポンスを返す側をサーバと呼ぶ
    • クライアントとサーバーはプロトコル(通信規約)に従い通信を行う
    • サーバには様々な種類のものがある、一般に1つのIPアドレス上で複数の種類のサーバが動いていることが多い
    • 通信の際にこれらを区別するためにポート番号という0から65535までの数値が用いられる
プロトコル 主なポート番号 用途
HTTP 80 Webサーバとの送受信
HTTPS 443 セキュアな接続の上でのHTTP通信
FTP 20,21 ファイル転送
SMTP 25 メール送信
POP3 110 メール受信
SSH 22 暗号化通信

[課題]DNSについて調べよう

DNSはIPアドレスとドメイン名を関連付けるシステムです。どのような動作をするのか調べてみましょう。

参考URL
参考というか、写経です。

「インターネット10分講座 DNS」
https://www.nic.ad.jp/ja/newsletter/No22/080.html

目次

  • DNSとは?
  • HOSTS.TXTからDNSへ
  • DNSのしくみ
  • DNSにおける問い合わせの流れ

DNSについて

  • DNSとは?

    • Domain Name Systemの略
    • インターネット上でドメイン名(ドメインネーム)を管理、運用するシステム
    • 現在のインターネットを利用するうえで、DNSは必要不可欠
  • DNSとはどういうものなのか?

  • IPアドレスで通信するのは不便

    • IPアドレスで相手先を直接指定することは、インターネットを利用する各ユーザーがWebサーバのIPアドレスをすべて記憶しておく必要があり、現実的ではない
    • なんらかの理由で、相手先ネットワークの構成が変更された場合、IPアドレスをつけなおしたり、変更される場合がある。そうすると以前のIPアドレスでは接続できなくなる
    • 人間が覚えやすく使いやすい「名前」で指定できるようにするためのしくみが必要で、DNSはそれを実現するためのシステム
  • HOSTS.TXTからDNSへ

    • インターネットの前身であるARPANET(1969年~)では、ホスト名とIPアドレスの対応表として、HOSTS.TXTというテキストファイルを使用していた
    • 当時、新しくARPANETに接続した組織は、最新のHOSTS.txtをSRI-NICから入手し、自分のホストに導入していた。これにより、相手先ホストを名前でしてすることができる
    • 自分の名前とIPアドレスの対応は、SRI-NICにメールで通知します。
    • SRI-NICではこのメールを受けてHOSTS.TXTの更新作業を行い、公開します
    • 各ホストでは、定期的にSRI-NICからHOSTS.TXTを入手し、ファイルを更新すればいいことになります
    • しかし、この方法は下記の理由により、1980年代初頭には限界
      • 接続ホスト数の増加によるHOSTS.TXTファイルの肥大化
      • HOSTS.TXTファイルの更新頻度の増大による作業量の増加
      • マスターファイルを集中管理するサーバの負荷の増大
    • そこで、これらの問題を解決するための新たな仕組みが開発され、1983年にRFC882およびRFC883として発表。これが現在のDNSの元となったもの
    • RFC882とRFC883は、1987年にそれぞれRFC1034とRFC1035に改良(現在のDNS) <図1 SRI-NICからHOSTS.TXTを入手 |インターネット10分講座 DNS -JPNIC>
  • DNSのしくみ

    • DNSでは名前空間の最上位に「ルートサーバ」と呼ばれるサーバが作成されます
    • ルートサーバーでは"jp"や"com"など、一番上位のドメイン名(TLD)のDNSサーバがインターネット上のどの位置にあるか(つまりどのIPアドレスなのか)を管理。
    • TLSサーバーではそれぞれの空間で管理される名前、たとえば"example"や"ad.jp"などのDNSサーバーがどこにあるかを管理する
    • "example.jp"のサーバでは自分の名前管理の中にあるホストへの対応表、たとえば"www.example.jp"のIPアドレスが管理される。
    • つまり、DNSでは、名前を「ドメイン」と呼ばれる階層構造で管理することによりデータを複数のホストに分散化して管理するようになっています。
      • ファイルが肥大化しないように、データを複数のホストに分散化
      • 名前を「ドメイン」として階層化し、更新作業の集中を防止


[インターネット10分講座 DNS -JPNICより]

  • DNSにおける問い合わせの流れ

  • DNSにおける問い合わせの流れ

    • DNSを利用するときにはまず「DNSサーバに問い合わせを行うためのサーバ」を1台用意する
    • 問い合わせを行うためのサーバには、ルートサーバのIPアドレスが書かれた表をあらかじめ準備しておく
  • 問い合わせを行うサーバの動き

  • 結果を受け取ったサーバ

    • jpサーバーに同様の問い合わせを行う
    • jpサーバはルートサーバと同様に「それはexample.jpサーバが管理しています」と知らせる
    • 最終的に問い合わせを受けたexample.jpサーバが、www.example.jpのIPアドレスを返す
  • つまり

    • このようにDNSでは、問い合わせを行うためのサーバーがルートサーバから下位サーバに対し反復的に名前を問い合わせ、べての名前空間に対する問い合わせに対応する
  • また、

    • DNSでは、同じ問い合わせを繰り返す行うことを防止する
    • DNSサーバへの問い合わせによって得た結果をある時間記憶しておく(キャッシュ)仕組みが実装されていることがある
      • キャッシュが有効な間に同じ内容の問い合わせがあった場合、
      • サーバーでは再度反復問い合わせをすることなく
      • 自分が持っているキャッシュの内容を解凍する
    • このため、問い合わせを行うためのサーバーは「DNSキャッシュサーバ」とも呼ばれている