Yamamoto's Laboratory
基本
ページ作成
  ソースリスト
CSS

Webの仕組み

リクエストとレスポンス

Webの仕組みは単純で,クライアントのリクエスト(要求)とサーバーのレスポンス(応答)から成り立っています.クライアント側のパソコンのブラウザーのリンクの場所をクリックすると,ブラウザーはサーバーに対してファイル(studying.html)をリクエストします.すると,サーバーはそのファイルを探し出して,ヘッダー情報を付加して,クライアント側のブラウザーにレスポンスします.ブラウザーは,レスポンスされたファイルに従い表示しています.

先に述べたように,Webの基本的な仕組みはクライアントの要求に応じてサーバーがファイルを渡すことです.インターネットでのデータの受け渡しはもう少し複雑になります.実際には,先ほどのリンク

をブラウザーが表示するまでには以下の動作が必要です.

  1. DNSサーバーに問い合わせて,akita-nct.jpのIPアドレスを取得する.
  2. IPアドレスが分かったので,サーバーのhttpポート(80番)を使って,ApacheのようなWebサーバー(プログラム)と接続する.
  3. クライアントのブラウザーは,Webサーバーに対して,「~yamamoto/comp/WEB/basic/studying.html」をリクエストします.
  4. Webサーバーは要求されたファイルにヘッダーをつけて,クライアントのブラウザーに送ります.
  5. ブラウザーは送り返されたファイルを元に,表示します.また,絵など他のファイルが必要となれば,さらにリクエストします.

ブラウザーと Web サーバーの役割

Webはクライアント(コンピューター)側のブラウザーとサーバー(コンピューター)側のWebサーバーがお互いにデータ転送を行うことにより成り立っています.ブラウザーとWebサーバーという2つのプログラムが動作しています.

簡単に言えば,ブラウザーの役割はユーザーの指定したファイルをWebサーバーにリクエストすることと,Webサーバーから送られてきた内容を表示することです.一方,Webサーバーの役割はブラウザーの要求のファイルを,ブラウザーに返すことです.実際には,もうちょっと仕事をしているのですが,これが最も重要な役割です.

telnet で WEB ページの取得

telnetを用いてWEBサーバーと通信して,データの受け渡しができます.ブラウザーの代わりにtelnetを使い,WEBの仕組みの一部を体験出来ます.

telnetで80番のポートに接続して,GETメソッドでファイルを要求すると,サーバーがファイルの内容をヘッダーをつけて返します.たとえば,このページ(hello.html)をリクエストするとします.telnetでは,次のようになります.01行と05行,06行を端末よりタイプしてください.

01行
telnetで80番のポートに接続します.
02-04行
telnetのクライアントがメッセージを出しています.
05行
GETメソッドでhtmlファイルをリクエストします.HTTP/1.0のハイパーテキスト転送プロトコルを使います.
06行
Enterキーを押します.
07-11行
Webサーバーのレスポンスヘッダーです.
13-25行
htmlファイル(hello.html)の内容です.
26行
telnetのメッセージです.
01:telnet www.akita-nct.ac.jp 80
02:Trying 202.220.3.51...
03:Connected to www.akita-nct.ac.jp (202.220.3.51).
04:Escape character is '^]'.
05:GET /~yamamoto/comp/WEB/basic/hello.html HTTP/1.0
06:
07:HTTP/1.1 200 OK
08:Date: Thu, 29 Dec 2005 09:19:56 GMT
09:Server: Apache/1.3.29 (Unix) PHP/4.3.4
10:Connection: close
11:Content-Type: text/html
12:
13:<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN">
14:
15:<HTML>
16:
17:<HEAD>
18:<TITLE>Yamamoto's Laboratory  Hello world</TITLE>
19:</HEAD>
20:
21:<BODY>
22:<P>Hello world</P>
23:</BODY>
24:
25:</HTML>
26:Connection closed by foreign host.

telnetで得られたWebサーバーのレスポンスである13-25行は,hello.htmlのソースと全く同じであることが分かるでしょう.

参考

  1. ゼロから学ぶWeb/DBプログラミング,日経BPパソコンベストムック,日経BP社, ISBN 4-8222-2833-9
  2. クライアントとサーバーの絵はOpen Clip Art Libraryに公開されているものを使いました.高品質のイラストがPublicDomainで公開されています.
  3. お絵かきは,Inkscapeを使いました.


no counter