はじめに
下記サイトを参考に、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アドレスが指定されることにより行われる
- たとえばGoogle(https://www.google.co.jp)をWebブラウザで見るとき、実際にはgoogle.co.jpのIPアドレスである172.217.25.195という宛先IPアドレスに対して通信が行われる
-
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では、名前を「ドメイン」と呼ばれる階層構造で管理することによりデータを複数のホストに分散化して管理するようになっています。
- ファイルが肥大化しないように、データを複数のホストに分散化
- 名前を「ドメイン」として階層化し、更新作業の集中を防止
-
DNSにおける問い合わせの流れ
- DNSを利用するときにはまず「DNSサーバに問い合わせを行うためのサーバ」を1台用意する
- 問い合わせを行うためのサーバには、ルートサーバのIPアドレスが書かれた表をあらかじめ準備しておく
-
問い合わせを行うサーバの動き
- 組織内の他の機器(PCなど)から問い合わせの依頼を受ける
- たとえば"www.example.jp"というドメイン名のIPアドレスの問い合わせを受けた場合、
- まずルートサーバにwww.example.jpのIPアドレスを問い合わせる
- ルートサーバはそれに対し「それはjpサーバが管理しています」ということを知らせるために、jpサーバの位置を知らせる
-
結果を受け取ったサーバ
- jpサーバーに同様の問い合わせを行う
- jpサーバはルートサーバと同様に「それはexample.jpサーバが管理しています」と知らせる
- 最終的に問い合わせを受けたexample.jpサーバが、www.example.jpのIPアドレスを返す
-
つまり
- このようにDNSでは、問い合わせを行うためのサーバーがルートサーバから下位サーバに対し反復的に名前を問い合わせ、べての名前空間に対する問い合わせに対応する
-
また、
- DNSでは、同じ問い合わせを繰り返す行うことを防止する
- DNSサーバへの問い合わせによって得た結果をある時間記憶しておく(キャッシュ)仕組みが実装されていることがある
- キャッシュが有効な間に同じ内容の問い合わせがあった場合、
- サーバーでは再度反復問い合わせをすることなく
- 自分が持っているキャッシュの内容を解凍する
- このため、問い合わせを行うためのサーバーは「DNSキャッシュサーバ」とも呼ばれている