Web技術入門 HTTPプロトコルとは?
HTTPとは、WebサーバとWebクライアントの間でデータの送受信を行うために用いられるプロトコル(通信規約)の事。
つまりメッセージの内容や手順を定めたものである。
古来、狼煙で異常を伝えるとした事や、モールス信号等もこれと同じ、決まり事に乗っ取って情報の伝達を行っている。
HTTPプロトコルの考え方は単純であり、まずクライアントからサーバに向けてリクエストのメッセージを送る。
メッセージの中には「何を」「どうして」欲しいのかが書いてある。
その「何」に相当するものを「URI(Universal Resource Identi-fier)」と言う。
「どうして」に相当するものを「メソッド」と言う。
メソッドによってWebサーバにどのような動作をして欲しいかを伝えるのだ。
Webサーバは、送られてきたリクエストの内容を解読し、その要求に従って動作する。
その結果生じるデータを、「レスポンス・メッセージ」に格納する。
この時、実行結果が正常であったか、異常であったかを表す「ステータス・コード」も一緒に格納する。
その後、クライアントに返す。これがHTTPの基本となる。
リクエスト・メッセージの構成
「リクエスト・メッセージ」は簡単に言うと、WebブラウザからWebサーバへ送信された、「HTMLを下さい」というリクエストだ。
「リクエスト・メッセージ」の1行目は「リクエスト・ライン」と言い、最も重要な部分である。
1行目の「リクエスト・ライン」の先頭にメソッドを書き、Webサーバにどうして欲しいかを伝える。
「メソッド」はリクエストの種類を表し、代表的なメソッドにGET(取得)、POST(作成、追加)、PUT(更新)、DELETE(削除)などがある。
普段使うのは「GET」と「POST」だ。
「GET」はサーバからデータを読み出し、「POST」はサーバへデータを送信する。
「GET」「POST」以外にも、「PUT」や「DELETE」メソッドを使用すれば、クライアントからWebサーバのファイルを書き換えたり、削除したりする事もできる。
ただし、勝手にWebサーバの中身を改変されると当然困る。そのためにセキュリティ対策は欠かせない。
実際には、クライアントからWebサーバのファイルを書き換えたり、削除する例は多くはないが、
Webサーバはデータを取り出すだけの道具ではないと言う事を理解しておくべきである。
2行目からは「メッセージ・ヘッダー」と言う行が続く。1行目でリクエストの内容は大体わかるが、付加的な細かい情報が必要になる場合もある。
それを書き留めておくのがメッセージ・ヘッダーの役割。
メッセージ・ヘッダーを書いたら、そのあとに空行を1行入れ、その後に送信するデータを書く決まりになっている。
この部分をメッセージ・ボディと呼び、これがメッセージの本体となる。
メソッドが「GET」の場合はメッセージ・ボディに書く送信データは何もない。
リクエストを送ると、レスポンス・メッセージが帰ってくる
「レスポンス・メッセージ」のフォーマットも基本的な考え方は「リクエスト・メッセージと」同じ。
ただ1行目が異なる。
レスポンスの場合は、実行した結果を表す「ステータス・コード」と「レスポンス・フレーズ」が記述されている。
「ステータス・コード」は数字で書かれており、主にプログラムに実行結果を知らせる。この部分を見れば、リクエストが成功したかどうかが簡単にわかるようになっている。
「レスポンス・フレーズ」は文章で書かれており、人間に知らせるのが目的。
通常のHTTP通信でよく登場する「ステータス・コード」
ステータス・ コード | 結果 |
200 | OK. 正常に完了。 |
303 | Found. リソースが一時的に別のURLに属している。リダイレクトで利用される。 |
401 | Unauthorized. ユーザー認証に失敗。 |
403 | Forbidden. アクセス権限がなく、リクエストを拒否された。 |
404 | Not Found. URLに一致するリソースを見つけられなかった。URLが間違っていた時。 |
500 | Internal Server Error. サーバ内部のプログラム実行に置いてエラーが発生。 |
「ステータス・ライン」に続いて、「メッセージヘッダ」が2行目から空白行まで続く。
「メッセージヘッダ」はHTTPリクエストと同様、付加的な情報が入っている。
最後にメッセージボディ。
HTMLファイルを要求すると、HTMLファイルが格納され、画像ファイルを要求した場合はそのデータがバイナリ形式で格納される。
レスポンス・メッセージが帰ってきたら、そこからデータを取り出して、画面に表示すれば、Webページが目に見える形となる。
コメント ( 0 )
トラックバックは利用できません。
この記事へのコメントはありません。