はじめに
今回は、インターネットを代表する存在のサーバー、『Webサーバー』について解説していきます。
では、『Webサーバー』とはどのようなものなのでしょう?
結論から言えば、ユーザーが目にする『Webページ全般を表示させる』サーバーになります。
Webサーバーの役割
Webサーバーは、『Web』と名前が付いていることから、どのような役割を持っているかが分かりやすいと思います。
読んで字の如し、WebページやWebサイトの内容をブラウザソフトに表示してくれるためのサーバーです。
つまり、あなたが見ているこのページも、何か知りたい情報を検索して表示したサイトも、全てWebサーバーのデータをブラウザソフトが読み込んで表示してくれているわけです。
そう考えるとWebサーバーの恩恵は計り知れないものがあります。
インターネットの代名詞といっても過言ではありません。
しかし、その特性上一般公開が前提となっている点には注目です。
他のサーバーと違い、目に見える形でアクセスできてしまうので、それはもう不正や攻撃の対象に晒されてしまうというデメリットも同時に存在します。
そこで昨今は、そのアクセスを安全におこなう為に、クライアントとWebサーバーとのやりとりを暗号化できる『SSL』という技術も生み出されました。(SSLについては別記事で)
Webページの表示方法
では、あなたがWebサイトを見る時にWebサーバーが何をしているかを見ていきましょう。
あまりやることは無いとは思いますが、あなたがブラウザソフト(google chromeなど)の『URL』欄に直接URLを打って、とあるWebサイトに行こうとしましょう。
URLを入力後、エンターキーを押すと、ブラウザソフトからインターネットを通じてその『URL(住所)』を探す旅が始まります。
まず、ブラウザソフトはそのWebサイトがどこにあるのかを知らないので、一旦URLの『ドメイン』を見て『DNSサーバー』に問い合わせます。
そして、問い合わせを受けたDNSサーバーは、ドメインを確認してそのドメインに紐づけてある『IPアドレス』に変換し、そのIPアドレスをブラウザソフトに返します。
IPアドレスをもらったブラウザソフトは、そのIPアドレスが存在するWebサーバーに向かい、『HTTP(Hyper Transfer Protocol)』というプロトコル(約束事)を使ってWebサーバーに『リクエスト(要求)』します。
リクエストは、Webページに必要なコンテンツを配信してもらうためのもので、これを『HTTPリクエスト』と呼びます。
WebサーバーがHTTPリクエストを受け取ると、そのリクエストを解析して処理し、その結果である『HTTPレスポンス』をブラウザソフトに返します。
ブラウザソフトはそのHTTPレスポンスを受け取ると、その情報を元に、コンテンツをブラウザソフト上に表示させる処理をおこないます。
こうしてブラウザにはその内容が表示され、希望するWebページが見られるようになるのです。
文章にするとこんなにも長いですが、ブロードバンドが普及した今では、これをわずか秒単位で、しかも世界をまたにかけておこなっていることに感嘆せざるを得ません。
以下に『HTTPリクエスト』と『HTTPレスポンス』がどのようなことをしているかをまとめました。
HTTPリクエスト
ブラウザソフトがWebサーバーに送ったリクエスト(配信要求)
- リクエスト行:サーバーに要求するためのURLやHTTPバージョンなどの処理
- メッセージヘッダ:クライアントの言語やアプリなどの情報
- メッセージボディ:Webページに入力した内容などのデータ
HTTPレスポンス
WebサーバーがHTTPリクエストを元に解析処理した結果
- リクエスト行:Webサーバーが処理したステータスコードやHTTPのバージョン
- メッセージヘッダ:Webサーバーの情報や配信データを処理した詳細結果
- メッセージボディ:クライアントへ送信するHTMLファイルや画像・動画などのデータ
URLの仕組み
URL一つだけで、上記に書いたような複雑な『HTTPリクエスト』や『HTTPレスポンス』というやり取りをしていると考えると、何だか不思議な感じがしますよね。
ところで、ここで『URL』についても突っ込んでおきましょう。
あなたも普段使っている『URL(Uniform Resource Locator )』ですが、実は他に『URN(Uniform Resource Name )』というものがあったりします。
しかも、さらにはそれらをまとめた『URI(Uniform Resource Identifier)』というものもあったりします。
これらを大きく分けると『URL』は場所を表し、『URN』は名前、そして『URI』はそれら『URL』と『URN』をまとめた考え方になります。
まぁ普段使いであればURLで問題ありません。URNとURIは頭の片隅にでも置いておいてくださいw
ただ、こういうものがあるということだけは覚えておいた方がいいです。(変に墓穴を掘らないためにもw)
ではURLというのが何なのかを解説するにあたり、以下のサンプルURLを分解していってみます。
http://www.sample.com/directory/index.html
こういったURLがあったとします。
何でもないようなURLですが、これらは3つに分解することができます。
まず、最初の部分の『http』は『スキーム』と呼びます。
スキームは、ブラウザソフトがどのようなプロトコル(約束事)を使ってデータのやり取りをするかを判断するものです。
『http』は『HTTP(Hyper Transfer Protocol)』でしたね。
他のプロトコルには『ftp』や『mailto』などがあります。
次に『www.sample.com』は、データを管理しているサーバー名を表します。
そして『directory/index.html』は、サーバーが管理しているフォルダ名やファイル名を表します。
これらにより、ブラウザソフトは『どのように、どこにある、どんなデータ』が欲しいかをWebサーバーにリクエスト(要求)しているわけです。
まとめ
Webサーバーの役割がつかめたでしょうか?
私たちは、普段から見たいリンクをクリックしたりタップをしているだけですが、ブラウザソフトから目的のWebサーバーまでは果てしない旅がおこなわれています。
そして、クライアントの要求にまつわる処理を同時に、しかも瞬間的におこなって目の前のブラウザに表示してくれているわけです。
すごい技術ですよね!