このページがどのようなメカニズムで配信されているのか考えたことはありますか?あなたは今、コンピューターの前に座って、ブラウザーでこのページを見ているかもしれません。では、このページのリンクをクリックするか、その URL ( uniform resource locator ) を入力すると、このページが画面に表示されるまでに舞台裏で何が起こったのでしょうか?
このプロセスに興味がある場合、またはインターネット サーフィンを可能にする具体的なメカニズムのいくつかを知りたいと思ったことがある場合は、読み続けてください。この記事では、Web サーバーがどのようにしてページを家庭、学校、オフィスに取り込むかについて説明します。始めましょう!
基本的なプロセス
あなたがコンピュータの前に座って Web サーフィンをしていると、友人から電話がかかってきて、「素晴らしい記事を読みました! この URL を入力してチェックしてください。https://www にあります。 computerbasic.click/web-server.htm。」そこで、その URL をブラウザに入力し、Return キーを押します。そして魔法のように、その URL が世界のどこにあっても、そのページが画面上にポップアップ表示されます。
可能な限り最も基本的なレベルで、次の図はそのページを画面に表示する手順を示しています。
ブラウザは Web サーバーへの接続を確立し、ページを要求して受信しました。
次のページでは、もう少し詳しく掘り下げていきます。
舞台裏
Web ページをコンピュータ画面に表示するプロセスをもう少し詳しく知りたい場合は、舞台裏で行われる基本的な手順を以下に示します。
ブラウザは URL を 3 つの部分に分割しました。
- プロトコル (「http」)
- サーバー名 (「www.computerbasic.click」)
- ファイル名(「web-server.htm」)
ブラウザはネーム サーバーと通信して、サーバー名「www.computerbasic.click」をIP アドレスに変換し、サーバー マシンへの接続に使用します。次に、ブラウザはその IP アドレスのポート 80 でサーバーへの接続を形成しました (ポートについてはこの記事で後ほど説明します)。
HTTP プロトコルに従って、ブラウザーはサーバーに GET リクエストを送信し、ファイル「https://www.computerbasic.click/web-server.htm」を要求しました。 ( Cookie はGET リクエストを使用してブラウザからサーバーに送信される場合があることに注意してください。詳細については、 「インターネット Cookie の仕組み」を参照してください。)
次に、サーバーは Web ページのHTML テキストをブラウザに送信します。 ( Cookie は、ページのヘッダーでサーバーからブラウザに送信されることもあります。) ブラウザはHTML タグを読み取り、画面上でページをフォーマットします。
これまでにこのプロセスを検討したことがない場合は、たくさんの新しい語彙が必要になります。このプロセス全体を詳細に理解するには、IP アドレス、ポート、プロトコルについて学ぶ必要があります。次のセクションで完全に説明します。
インターネット
では、「インターネット」とは何でしょうか?インターネットは、数百万台のコンピュータの巨大な集合体であり、すべてがコンピュータ ネットワーク上でリンクされています。ネットワークにより、すべてのコンピュータが相互に通信できるようになります。家庭用コンピュータは、インターネット サービス プロバイダ ( ISP ) と通信する電話回線モデム、 DSL 、またはケーブル モデムを使用してインターネットにリンクされている場合があります。企業や大学のコンピュータには通常、企業内のローカル エリア ネットワーク( LAN ) に直接接続するネットワーク インターフェイス カード ( NIC ) が搭載されています。これにより、企業はT1 回線などの高速電話回線を使用して LAN を ISP に接続できるようになります。 T1 回線は約 150 万ビット/秒を処理できますが、モデムを使用する通常の電話回線は通常 30,000 ~ 50,000 ビット/秒を処理できます。
その後、ISP はより大きな ISP に接続し、最大の ISP が国全体または地域全体の光ファイバーの「バックボーン」を維持します。世界中のバックボーンは、光ファイバー回線、海底ケーブル、または衛星リンクを通じて接続されています (興味深いバックボーン マップについては、「 」を参照してください)。このようにして、インターネット上のすべてのコンピュータがインターネット上の他のすべてのコンピュータに接続されます。
クライアントとサーバー
一般に、インターネット上のすべてのマシンは、サーバーとクライアントの 2 つのタイプに分類できます。他のマシンにサービス (Web サーバーや FTP サーバーなど) を提供するマシンは、サーバーです。そして、それらのサービスへの接続に使用されるマシンがクライアントです。 Yahoo!に接続するとwww.yahoo.com でページを読むには、Yahoo!は、リクエストを処理するために、インターネット上で使用するマシン (おそらく非常に大きなマシンのクラスター) を提供しています。ヤフー!サーバーを提供しています。一方、あなたのマシンはおそらくインターネット上の他の誰にもサービスを提供していません。したがって、これはユーザー マシンであり、クライアントとも呼ばれます。マシンがサーバーとクライアントの両方になることは可能であり、一般的ですが、ここでの目的のために、ほとんどのマシンはどちらか一方であると考えることができます。
サーバー マシンは、インターネット上で 1 つ以上のサービスを提供する場合があります。たとえば、サーバー マシンでは、Web サーバー、電子メールサーバー、およびサーバーとして機能するソフトウェアが実行されている場合があります。サーバー マシンにアクセスするクライアントは特定の意図を持ってアクセスするため、クライアントはリクエストをサーバー マシン全体で実行されている特定のソフトウェア サーバーに送信します。たとえば、マシン上で Web ブラウザを実行している場合、サーバー マシン上の Web サーバーと通信する可能性が高くなります。アプリケーションは Telnet サーバーと通信し、電子メール アプリケーションは電子メール サーバーと通信するなど…
IPアドレス
これらすべてのマシンを正しく保つために、インターネット上の各マシンにはIP アドレスと呼ばれる一意のアドレスが割り当てられます。 IP はインターネット プロトコルの略で、これらのアドレスは32 ビットの数値であり、通常は「ドット付き 10 進数」の 4 つの「オクテット」で表されます。一般的な IP アドレスは次のようになります。
216.27.61.137
IP アドレス内の 4 つの数値は、0 ~ 255 の値をとることができるため、オクテットと呼ばれます。これは、オクテットあたり 2 8通りの値になります。
インターネット上のすべてのマシンには一意の IP アドレスがあります。サーバーには、あまり頻繁に変更されない静的 IP アドレスがあります。モデム経由でダイヤルアップしている家庭用マシンには、多くの場合、マシンがダイヤルインするときに ISP によって割り当てられる IP アドレスがあります。その IP アドレスは、そのセッションに対して一意であり、次回マシンがダイヤルインするときには異なる可能性があります。つまり、ISP は顧客ごとにではなく、サポートするモデムごとに IP アドレスを 1 つだけ必要とします。
インターネットのマシンに関する限り、サーバーと通信するために必要なのは IP アドレスだけです。たとえば、ブラウザに URL http://209.116.69.66を入力すると、「コンピューター入門」 の Web サーバーが含まれるマシンにアクセスできます。一部のサーバーでは IP アドレスだけでは十分ではありませんが、ほとんどの大規模サーバーでは十分です。詳細については、読み続けてください。
ドメイン名
ほとんどの人は IP アドレスを構成する数字の文字列を覚えるのが難しく、また IP アドレスを変更する必要がある場合があるため、インターネット上のすべてのサーバーには、ドメイン名と呼ばれる人間が判読できる名前も付けられています。たとえば、www.computerbasic.click は、人間が判読できる永続的な名前です。私たちのほとんどにとって、209.116.69.66 を思い出すよりも、www.computerbasic.click を思い出す方が簡単です。
www.computerbasic.click という名前は、実際には 3 つの部分で構成されています。
- ホスト名 (「www」)
- ドメイン名 (「howstuffworks」)
- トップレベルのドメイン名 (「com」)
「.com」ドメイン内のドメイン名は、 と呼ばれるレジストラによって管理されます。 VeriSign は「.net」ドメイン名も管理します。他のレジストラ (RegistryPro、NeuLevel、Public Interest Registry など) が他のドメイン (.pro、.biz、.org など) を管理します。 VeriSign はトップレベル ドメイン名を作成し、トップレベル ドメイン内のすべての名前が一意であることを保証します。 VeriSign はまた、各サイトの連絡先情報を管理し、「whois」データベースを実行します。ホスト名は、ドメインをホストしている会社によって作成されます。 「www」は非常に一般的なホスト名ですが、現在では多くの場所で省略されているか、サイトの特定の領域を示す別のホスト名に置き換えられています。たとえば、Microsoft の Encarta 百科事典のドメイン名である では、「www」の代わりに「encarta」がホスト名として指定されています。
ネームサーバー
ドメイン ネーム サーバー(DNS) と呼ばれるサーバーのセットは、人間が読める名前を IP アドレスにマッピングします。これらのサーバーは名前を IP アドレスにマッピングする単純なデータベースであり、インターネット全体に分散されています。ほとんどの個別企業、ISP、大学は、ホスト名を IP アドレスにマッピングするために小規模なネーム サーバーを維持しています。 VeriSign が提供するデータを使用してドメイン名を IP アドレスにマッピングする中央ネーム サーバーもあります。
URL「https://www.computerbasic.click/web-server.htm」をブラウザに入力すると、ブラウザは「www.computerbasic.click」という名前を抽出し、それをドメイン ネーム サーバーに渡し、ドメインネームサーバーは www.computerbasic.click の正しい IP アドレスを返します。正しい IP アドレスを取得するには、多数のネーム サーバーが関与する場合があります。たとえば、www.computerbasic.click の場合、「com」トップレベル ドメインのネーム サーバーは、ホスト名を認識するネーム サーバーの IP アドレスを認識し、そのネーム サーバーに対する別のクエリを認識します。 「コンピューター入門」 ISP は、「コンピューター入門」 サーバー マシンの実際の IP アドレスを提供する場合があります。
UNIX マシンでは、 nslookupコマンドを使用して同じサービスにアクセスできます。コマンド ラインに「www.computerbasic.click」のような名前を入力するだけで、コマンドがネーム サーバーにクエリを実行し、対応する IP アドレスを配信します。
インターネットは何百万ものマシンで構成されており、それぞれが固有の IP アドレスを持っています。これらのマシンの多くはサーバー マシンであり、インターネット上の他のマシンにサービスを提供します。いくつか例を挙げると、電子メール サーバー、Web サーバー、FTP サーバー、Gopher サーバー、Telnet サーバーなど、これらのサーバーの多くについて聞いたことがあるでしょう。これらはすべてサーバー マシンによって提供されます。
UNIX マシンでは、 whoisコマンドを使用してドメイン名に関する情報を検索できます。を使用しても同じことができます。 「computerbasic.click」などのドメイン名を入力すると、IP アドレスを含むそのドメインの登録情報が返されます。
ポート
どのサーバー マシンも、サーバー上で利用可能なサービスごとに 1 つずつ番号付きポートを使用して、そのサービスをインターネットで利用できるようにします。たとえば、サーバー マシンが Web サーバーと FTP サーバーを実行している場合、通常、Web サーバーはポート 80 で使用でき、FTP サーバーはポート 21 で使用できます。クライアントは特定の IP アドレスでサービスに接続し、特定のポート上で。
最もよく知られているサービスはそれぞれ、既知のポート番号で利用できます。一般的なポート番号をいくつか示します。
- エコー7
- 昼の13
- qotd 17 (今日の名言)
- ftp21
- テルネット23
- smtp 25 (Simple Mail Transfer、電子メールを意味します)
- 時間37
- ネームサーバー 53
- ニックネーム 43 (誰が)
- ゴーファー 70
- 指 79
- WWW80
サーバー マシンが外部からのポートへの接続を受け入れ、ファイアウォールがポートを保護していない場合は、インターネット上のどこからでもそのポートに接続してサービスを使用できます。たとえば、Web サーバーをポート 80 に強制するものは何もないことに注意してください。独自のマシンをセットアップしてそのマシンに Web サーバー ソフトウェアをロードする場合は、Web サーバーをポート 918 またはその他の任意のポートに配置できます。必要に応じて、未使用のポートを追加します。次に、マシンが xxx.yyy.com として知られている場合、インターネット上の誰かが URL http://xxx.yyy.com:918を使用してサーバーに接続する可能性があります。 「:918」はポート番号を明示的に指定しており、誰かがサーバーにアクセスするにはこれを含める必要があります。ポートが指定されていない場合、ブラウザはサーバーが既知のポート 80 を使用していると想定します。
プロトコル
クライアントが特定のポートでサービスに接続すると、特定のプロトコルを使用してサービスにアクセスします。プロトコルは、サービスを使用したい人がそのサービスと通信するための事前定義された方法です。 「誰か」とは人間の場合もありますが、多くの場合、Web ブラウザなどのコンピュータ プログラムです。プロトコルは多くの場合テキストであり、クライアントとサーバーがどのように会話するかを単純に記述します。
おそらく最も単純なプロトコルは昼間のプロトコルです。昼間サーバーをサポートするマシンのポート 13 に接続すると、サーバーは現在の日付と時刻の情報を送信し、接続を閉じます。そのプロトコルは、「私に接続していただければ、日時を送信して切断します。」です。ほとんどの UNIX マシンはこのサーバーをサポートしています。試してみたい場合は、Telnet アプリケーションを使用して接続できます。 UNIX では、セッションは次のようになります。
%telnet web67.ntx.net 13Trying 216.27.61.137…web67.ntx.net に接続しました。エスケープ文字は ‘^]’ です。Sun Oct 25 08:34:06 1998接続は外部ホストによって閉じられました。
Windows マシンでは、MSDOS プロンプトで「telnet web67.ntx.net 13」と入力すると、このサーバーにアクセスできます。
この例では、web67.ntx.net はサーバーの UNIX マシンで、13 は日中サービスのポート番号です。 Telnet アプリケーションはポート 13 に接続します (Telnet は当然ポート 23 に接続しますが、任意のポートに接続するように指示することもできます)。サーバーは日付と時刻を送信して切断します。 Telnet のほとんどのバージョンではポート番号を指定できるため、マシン上で使用できる Telnet のバージョンを使用してこれを試すことができます。
ほとんどのプロトコルは昼間よりも複雑で、一般に公開されている RFC (Request for Comment) 文書で指定されています (すべての RFC の優れたアーカイブについては、「を参照してください)」。インターネット上のすべての Web サーバーは HTTP プロトコルに準拠しています。これは にわかりやすくまとめられています。 HTTP サーバーが理解できるプロトコルの最も基本的な形式には、GET という 1 つのコマンドだけが必要です。 HTTP プロトコルを理解するサーバーに接続し、「ファイル名を取得」するように指示すると、サーバーは指定されたファイルの内容を送信して切断します。典型的なセッションは次のとおりです。
%telnet www.computerbasic.click 80Trying 216.27.61.137…computerbasic.click に接続しました。エスケープ文字は ‘^]’ です。GET https://www.computerbasic.click/ …接続は外部ホストによって閉じられました。
元の HTTP プロトコルでは、「/」や「/web-server.htm」などの実際のファイル名のみを送信していました。このプロトコルは後に、完全な URL の送信を処理できるように変更されました。これにより、多数のドメインが 1 台のマシン上に存在する仮想ドメインをホストする企業は、ホストするすべてのドメインに対して 1 つの IP アドレスを使用できるようになりました。何百ものドメインが 209.116.69.66 (「コンピューター入門」 の IP アドレス) でホストされていることが判明しました。
すべてをまとめる
今、あなたはインターネットについて非常に多くのことを知っています。ブラウザに URL を入力すると、次の手順が実行されることはご存知のとおりです。
ブラウザは URL を 3 つの部分に分割します。
- プロトコル (「http」)
- サーバー名 (「www.computerbasic.click」)
- ファイル名(「web-server.htm」)
ブラウザはネーム サーバーと通信して、サーバー名「www.computerbasic.click」をIP アドレスに変換し、そのサーバー マシンに接続するために使用します。次に、ブラウザは、ポート 80 上のその IP アドレスで Web サーバーへの接続を形成します。ブラウザは、HTTP プロトコルに従って、サーバーに GET リクエストを送信し、ファイル「https://www.computerbasic.click/web-」を要求します。サーバー.html」 ( Cookie はGET リクエストを使用してブラウザからサーバーに送信される場合があることに注意してください。詳細については、 「インターネット Cookie の仕組み」を参照してください。) サーバーは、Web ページのHTML テキストをブラウザに送信します。 (Cookie は、ページのヘッダーでサーバーからブラウザに送信される場合もあります。) ブラウザは HTML タグを読み取り、画面上でページをフォーマットします。
追加: セキュリティ
この説明から、Web サーバーは非常に単純なソフトウェアであることがわかります。 GET コマンドで送信されたファイル名を取得し、そのファイルを取得してブラウザに送信します。ポートとポート接続を処理するコードをすべて考慮したとしても、単純な Web サーバーを実装するC プログラムを500 行未満のコードで簡単に作成できます。明らかに、本格的なエンタープライズ レベルの Web サーバーはより複雑ですが、基本は非常に単純です。
ほとんどのサーバーは、サービス提供プロセスにある程度のセキュリティを追加します。たとえば、Web ページにアクセスすると、ブラウザが名前とパスワードを求めるダイアログ ボックスをポップアップ表示したことがある場合、パスワードで保護されたページに遭遇したことになります。サーバーを使用すると、ページの所有者は、ページへのアクセスを許可されているユーザーの名前とパスワードのリストを管理できます。サーバーは、適切なパスワードを知っている人だけがページを閲覧できるようにします。より高度なサーバーではセキュリティがさらに強化され、サーバーとブラウザ間の暗号化された接続が可能になり、クレジット カード番号などの機密情報がインターネット上に送信される可能性があります。
標準の静的ページを配信する Web サーバーに必要なのは、実際にはこれだけです。静的ページは、作成者がページを編集しない限り変更されないページです。
追加機能: 動的ページ
しかし、動的なWeb ページについてはどうでしょうか?例えば:
- どのゲストブックでも HTML フォームにメッセージを入力でき、次回ゲストブックを表示すると、ページに新しいエントリが含まれます。
- では、フォームにドメイン名を入力できます。返されるページは、入力したドメイン名に応じて異なります。
- どの検索エンジンでも、HTML フォームにキーワードを入力すると、入力したキーワードに基づいてページが動的に作成されます。
これらすべてのケースにおいて、Web サーバーは単に「ファイルを検索」しているわけではありません。実際に情報を処理し、クエリの詳細に基づいてページを生成します。ほとんどの場合、Web サーバーはこの機能を達成するためにCGI スクリプトと呼ばれるものを使用します。 CGI スクリプトはそれ自体がトピックであり、「コンピューター入門」 の記事「How CGI Scripting Work」で説明されています。