Webアプリケーション概要①~インターネットの概要について

プログラミング

本文を読み進めるのであれば、この図を参考にしていただければな、と。

 

インターネットとは何か

インターネットとは、「ネットワークのネットワーク」と言われている。

 

は?なんのこと?と頭がハテナだと思うので、順にみていくことにする。

これは、2段階で考える。ネットワークとは、関連する事物の結びつきによって現れたバーチャル空間と考えることができる。今回であると、コンピュータとコンピュータの小規模な相互関係。

よって、ネットワークのネットワークとは、そのバーチャル空間の結びつきによってできた、さらなる大きなバーチャル空間である。

つまり、大多数のコンピュータのつながり。マトリョーシカの中にマトリョーシカがあるイメージ。

そんな外側のマトリョーシカが、インターネットのイメージ。

2.5『グローバルIPアドレスとプライベートIPアドレス』を見てもらえると分かりやすい。

 

Webアプリケーションとは何か→ユーザがHTTPリクエストのCRUDメソッド(CRUD操作)を用いてWeb上のリソースを操作できるアプリケーションのこと。

 

Webアプリケーションとは何か

Webアプリケーションとは、ユーザがHTTPリクエストのCRUDメソッド(CRUD操作)を用いてWeb上のリソースを操作できるアプリケーションのこと。

 

なんかいろいろと難しい言葉が出てきたので、ちょっと単語ごとに解きほぐそうか。

 

HTTPリクエスト→WebブラウザがWebサーバに対して出すリクエストのこと。

 

HTTP→Webブラウザ(クライアント)とWebサーバ(サーバ)の間でHTMLなどのコンテンツを送受信するための、通信するさいの約束事(約束事のことをプロトコルとも言う)。

 

たとえば、YahooのトップページへのURL(http://www.yahoo.co.jp/)におけるhttpとは、httpという決まりごとで通信するよ、と宣言している。

ちなみに、httpではなく、httpsもある。語尾のsとはsecurityのsである。データの送受信のさいに、通信が暗号化されており、セキュリティ的に安全であることを示している。

 

URLとは何か

URLとは、インターネット上のリソースを特定するための、いわば住所のようなもの。一般的な形式は、

 

(httpなどのプロトコル名):(プロトコルごとに決められた形式)

 

となる。

 

HTTPの場合のURLを以下に示すと、

 

http://ホスト名.ドメイン名:ポート番号/パス

 

となる。

ここで、ホスト名だのドメイン名だのいろいろと出てきてしまったけど、まあ後で説明するから待ってくれ。

 

さて、

たとえば、http://www.honehone.com/news/xxx/bpbp.html というURLがあったとすると、以下のようになる。

 

通信プロトコル http
ホスト名 www
ドメイン名 honehone.com
ポート番号 省略(後で説明)
パス news/xxx/bqbq.html

 

ところで、上表の名称がよく分からないからので(すくなくとも僕にとっては)、日本一高いビル「あべのハルカス」の住所とそのビルの部屋番号をつかって例を出しておくことにする。

(なお、部屋番号は完全に架空のものであり、事実ではございません。というのも、筆者はあべのハルカスに行ったことも、そこで働いたこともなく、内部構成はまったく知らないので)

 

さて、あべのハルカスの住所をググってみると

 

〒545-6016 大阪府大阪市阿倍野区阿倍野筋1丁目1−43

 

とあった。さあ、ここで、

 

あべのハルカス19階908号室の、右端の窓側から数えて4番目の机の引き出しの、下から2番めにある消しゴム

 

を指定してみよう。すると、URLとの対応関係はこうなる。

 

ホスト名(host) 19階908号室
ドメイン名(domain) 大阪府大阪市阿倍野区阿倍野筋1丁目1−43 あべのハルカス
ポート番号(port) 宛名・宛先の部署名
パス(path) 右端の窓側から数えて4番目の机の引き出しの、下から2番めにある消しゴム(ようするに、物の場所)

 

これで、URLとは、膨大な空間の中のある一点を取り出すための識別子であることが、おわかりいただけただろうか。

 

それでは、おのおのの名前の説明をざっくりとしていく。

 

ドメイン名

→インターネット上のネットワークを特定するためのもの。たとえば、yahoo.co.jpであれば、日本(co.jp)におけるyahooのネットワークを示している。

 

 

ホスト名

→ネットワーク上のホストの名前。wwwの場合、Webサーバが起動しているコンピュータを指すことが多い。

 

 

ポート番号

→あとで説明。

 

パス

→コンピュータ内のファイルの位置をあらわしたもの。news/xxx/bqbq.htmlというパスであれば、newsフォルダの中にあるxxxフォルダ内のbqbq.htmlファイルを示している。

パスが省略されたときは、ファイル名がindex.拡張子を指定していることになる。

 

 

IPアドレスとは何か

 

  • IPとは通信プロトコルであり、HTMLリクエストメッセージは、じつはIPによって運ばれるイメージ。つまり、直接HTTP通信でクライアントコンピュータとサーバはやりとりできない。
  • IPアドレスはコンピュータを特定するための、いわば住所のようなもの(ただし、厳密には違う。2.5『グローバルIPアドレスとプライベートIPアドレス』を見ていただきたい。)
  • IPアドレスは”機械語”、URLのドメイン名とホスト名は”日常語”。つまり、ホスト名とドメイン名は人間が理解しやすい記述であり、IPにアドレスは機械のみぞ知る記述、といったところである。
  • ホスト名+ドメイン名をFQDNと呼ぶ
  • DNSサーバによってURLとIPアドレスは結びつけられている
  • FQDNからIPアドレスを取得する行為のことを名前解決と言う。

 

名前解決の方法

ここでは、www.yahoo.co.jpのIPにアドレスを取得することにする。

まず、クライアントコンピュータはルートDNSサーバに対して、jpドメインについてのDNSサーバのIPアドレスを求める。

 

このIPを手に入れたことで、jpドメインのDNSサーバにco.jpドメインのIPアドレスを求めることができるようになる。

 

次。

 

co.jpドメインのDNSサーバのIPアドレスを、jpドメインのDNSサーバに求める。そして、co.jpドメインのDNSサーバのIPアドレスを手に入れる。これにより、co.jpドメインのDNSサーバにアクセスし、つぎはyahoo.co.jpドメインのDNSサーバのIPにアドレスを求めに行く。

 

co.jpドメインのDNSサーバにアクセスしてyahoo.co.jpドメインのDNSサーバのIPアドレスを手に入れたら、そのIPアドレスをもとに、yahoo.co.jpドメインのDNSサーバにアクセスする。

 

そしてようやく、www.yahoo.co.jpのDNSサーバのIPアドレスを取得することができ、取得できたらwww.yahoo.co.jpにHTTpリクエストを送り、レスポンスとして受け取る。

 

グローバルIPアドレスとプライベートIPアドレス

 

まず、ネットワークのネットワーク(インンターネット)において、個々のネットワークにおいてグローバルIPアドレスという、ネットワークの住所となるIPアドレスが割り当てられている。

そして、個々のネットワーク内におけるコンピュータにはプライベートIPアドレスという、個々のコンピュータの住所となるIPアドレスが割り当てられている。

 

異なるグローバルIPアドレスにおいては、プライベートIPアドレスが重複していても問題ない。

というのも、個々のコンピュータを指定するためには、まずグローバルIPアドレスを指定するしなければならず、それが異なっていれば当然、プライベートIPアドレスがかぶっていてもネットワークが違うので、コンピュータは区別し得るからだ。

 

ところで、HTTPリクエストを異なるネットワークにあるWebサーバにおくっても、送った信号のソースはグローバルIPアドレスとなる。

つまり発信源がコンピュータ単体ではなく、そのコンピュータが属しているネットワークとなっているので、レスポンスするときにいったいどのコンピュータにレスポンスすればいいのか分からない。

ここにきて、ポート番号が活躍する。HTTPリクエストをするさい、宛先ポート番号なるものが存在しており、これにより正確にHTTPリクエストを送ることができる。

宛先IP (リクエストを送る先のサーバが属しているネットワーク)と宛先ポート番号(HTTPの場合は80番)が存在するからだ。

逆に、レスポンスを返すときは、送信元IPと送信元ポートを参照すればよい。サーバがレスポンスとして返すときに送信元のコンピュータを特定することができる。

 

CRUD操作

 

C:Create(作成), R:Read(取得), U:Udate(更新), D:Delete(削除)の4つの操作をCRUD操作という。もちろんCRUDとは、その操作を英語で記述したときの頭文字。

 

たとえば、Twitterだと、

 

Read:自分や他人のツイートを見る

Create:ツイートを作成・投稿

Udate:ツイート内容の変更

Delete:ツイートの削除

 

となる。

ただし、HTTPリクエストによるCRUD(HTTPメソッド・HTTP動詞、つまり機械が読みこむ言葉)は、以下のようになる

 

 

日常語(英語) 日常語(日本語) HTTPメソッド

HTTP動詞

Create 作成 POST
Read 取得 GET
Update 更新 PUT
Delete 削除 DELETE

 

まあ、酒でも飲んで、ゆっくり休みましょう(笑)