[[ネットワーク用語]] > HTTP

* HTTP [#n1b3a41c]

HTTP = Hypertext Transfer Protocol

[[HTTPとは - はてなキーワード>http://d.hatena.ne.jp/keyword/HTTP]]
>HTTP えいちてぃてぃぴぃ
Hypertext Transfer Protocol=ハイパーテキスト転送プロトコル。
つまり、ブラウザとサーバの間で[[HTML]](もしくはウェブ文書)を送受信する為の[[プロトコル]](取り決め)
2005年3月現在では、RFC2616 に HTTP/1.1 として仕様が纏められている。

[[Hypertext Transfer Protocol - Wikipedia>http://ja.wikipedia.org/wiki/Hypertext_Transfer_Protocol]]
>HyperText Transfer Protocol(ハイパーテキスト・トランスファー・プロトコル、略称 HTTP)とは、WebブラウザとWebサーバの間で[[HTML]]などのコンテンツの送受信に用いられる通信プロトコルである。
RFC 2616で規定されている。ハイパーテキスト転送プロトコルとも呼ばれる。

>''概要''
HTTP は HTML (HyperText Markup Language) や XML (Extensible Markup Language) によって記述されたハイパーテキストを転送することを主な目的としているが、転送する内容はハイパーテキストに限らず画像、音声などのバイナリデータも含め様々なデータを送ることができる。
 
HTTPはリクエスト-レスポンス型のプロトコルである。
すなわち、クライアントがサーバにリクエストメッセージを送信し、サーバがこれにレスポンスメッセージを返す。
レスポンスメッセージを返した時点で基本的にサーバは初期状態に戻る。
つまり、サーバがクライアントの状態を保存しない。
HTTP においてはトランスポート・プロトコルとして通常TCPを使用する。
 
基本的な考え方は非常に単純であり「何を」「どうして」ほしいのかを相手に要求する。
「何を」に当たるのが&color(red){URL};、「どうして」が&color(red){メソッド};にあたる。
 
World Wide WebにおけるWebページなどのリソースは、Uniform Resource Identifierによって指定される。
HTTP を使用してリソースにアクセスするときは、http: が先頭についた URL を使用する。
URL の例をあげる。
http://www.example.co.jp/~test/samples/index.html
 
最初、HTTP/0.9ではURLのみの簡単なやりとりであったが、HTTP/1.0でNNTPやSMTPのような各種ヘッダが定義され、HTTP &color(red){cookie};などの利用が可能になった。
HTTP/1.1では複数データを転送するためのキープアライブ(&color(red){keep-alive};)機能やプロキシなどの利用も想定された仕様になった。

>このほかの点を箇条書きで示す。
- &color(red){ポート番号80};をデフォルトとして使用する(送信時は8080)。
- TLSで暗号化され、セキュリティを確保したHTTPは、&color(red){HTTPS};と呼ばれる(httpsは実際にはURIスキームの1つであり、実際のプロトコルにはHTTP over SSL/TLSが用いられる)。
- HTTP は基本的にサーバが状態を保持しない (stateless) プロトコルだが、データベースなどを使用するWebアプリケーションにおいては状態保持が必要だったため、そのためにいわゆる Cookie とよばれる機構が Netscape Communications Corporation によって導入された。&color(red){Cookie}; を使用することによって状態を管理し、"セッション" を維持することが可能になる。
- HTTPの拡張プロトコルとして&color(red){WebDAV};がある。
- UPnPでは、HTTPをUDP上で使用するHTTPUや、マルチキャストで使用するHTTPMUが規定された。

** メソッド [#b4400fc0]
HTTPでは8つのメソッドが定義されている。
ただし実際のHTTP通信ではGETとPOSTメソッドだけで殆どを占める。

CENTER:''HTTPメソッドの一覧''
| メソッド | HTTP/0.9 | HTTP/1.0 | HTTP/1.1 |h
| GET | ○ | ○ | ○ |
| POST | | ○ | ○ |
| PUT | | △ | ○ |
| HEAD | | ○ | ○ |
| DELETE | | △ | ○ |
| OPTION | | | ○ |
| TRACE | | | ○ |
| CONNECT | | | ○ |

- GET
指定されたURIのリソースを取り出す。
HTTPの最も基本的な動作で、HTTP/0.9では唯一のメソッド。

- POST
GETとは反対にクライアントがサーバにデータを送信するメソッドである。
Webフォームや電子掲示板、Wikiなどに投稿する。
GETの場合と同じくサーバはクライアントにデータを返すことができる。

- PUT
指定したURIにリソースを保存する。
URIが指し示すリソースが存在しない場合は、サーバはそのURIにリソースを作成する。
画像のアップロードなどが代表的。

- DELETE
指定したURIのリソースを削除する。

- OPTION
サーバを調査するメソッド。
例えばサーバがサポートしているHTTPのバージョンなどを調査できる。

- HEAD
GETと似ているがサーバはHTTPヘッダのみ返す。
クライアントはWebページを取得せずともそのWebページが存在するかどうかを知ることが出来る。
例えばWebページのリンク先が生きているか検証するときなどにリンク先のデータを全て取得することなく調査することが出来る。

- TRACE
サーバまでのネットワーク経路をチェックできる。
サーバは受け取ったメッセージのそれ自体をレスポンスのデータにコピーして応答する。
WindowsのTracertやUNIXのTracerouteとよく似た動作。

- CONNECT
暗号化したメッセージをプロキシで転送する際に用いる。

** リンク [#pe9f9f62]
Studying HTTP
http://www.studyinghttp.net/

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS