Hypertext Transfer Protocol

出典: Wikipedio


Template:IPstack HyperText Transfer Protocol(ハイパーテキスト・トランスファー・プロトコル、略称 HTTP)とは、WebブラウザWebサーバの間でHTMLなどのコンテンツ送受信に用いられる通信プロトコルであり、RFC 2616で規定されている。ハイパーテキスト転送プロトコルとも呼ばれる。

目次

概要

HTTP は HTML (HyperText Markup Language) や XML (Extensible Markup Language) によって記述されたハイパーテキストを転送することを主な目的としているが、転送する内容はハイパーテキストに限らず画像、音声などのバイナリデータも含め様々なデータを送ることができる。

HTTP はリクエスト-レスポンス型のプロトコルである。すなわち、クライアントがサーバにリクエストメッセージを送信し、サーバがこれにレスポンスメッセージを返す。レスポンスメッセージを返した時点で基本的にサーバは初期状態に戻る。つまり、サーバがクライアントの状態を保存しない。HTTP においてはトランスポート・プロトコルとして通常TCPを使用する。

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でNNTPSMTPのような各種ヘッダが定義され、HTTP cookieなどの利用が可能になった。 HTTP/1.1では複数データを転送するためのキープアライブ(keep-alive)機能やプロキシなどの利用も想定された仕様になった。

このほかの点を箇条書きで示す。

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

下にもっとも単純な、クライアントとサーバ(www.google.co.jp:80)とのHTTPプロトコルのやり取りの例を挙げる。

クライアントのリクエスト:

GET / HTTP/1.0

サーバのレスポンス:

HTTP/1.0 200 OK
Cache-Control: private
Content-Type: text/html
Set-Cookie: PREF=ID=72c1ca72230dea65:LD=ja:TM=1113132863:LM=1113132863:S=nNO7MIp
W2o7Cqeu_; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.co.jp
Server: GWS/2.1
Date: Sun, 10 Apr 2005 11:34:23 GMT
Connection: Close

<html><head><meta http-equiv="content-type" content="text/html; charset=Shift_JI
S"><title>Google</title><style><!--
・・・以下省略

上のリクエストのGETにあたる部分をメソッドといい、 HTTP/1.0では、GET, HEAD, PUT, POST, DELETE, LINK, UNLINK、 HTTP/1.1ではさらに、OPTIONS, TRACEがある。 GETメソッドのレスポンスにはヘッダ情報のあとに改行が挟まれ、コンテンツ本体が送られる。 HEADメソッドのレスポンスにはコンテンツサイズや更新日時などの情報を含むヘッダのみが送られる。

また、リクエストの2行目以降はヘッダーを送る。

ヘッダの各要素は
フィールド名: 内容
のペアで構成される。

ブラウザの情報を表すUser-Agent、使用候補言語を表すAccept-Language、他ページへのリンクを辿った場合にそのリンク元ページのURLを表すRefererなどが代表的なフィールドである。

なお、リクエスト時のHostヘッダーはHTTP/1.1では必須であるが、HTTP/1.0では無くても良い。 但し、サーバがバーチャルホストを利用している場合は、Hostヘッダが無いとリソース取得に失敗するので、たとえHTTP/1.0を使用していてもHostヘッダを付加しなければならない。

関連項目

外部リンク

Template:Computer-stubaf:HTTP ar:بروتوكول نقل النص الفائق az:HTTP bg:HTTP bn:হাইপার টেক্সট ট্রান্সফার প্রোটোকল bs:Hypertext Transfer Protocol ca:Protocol de transferència d'hipertext cs:Hypertext Transfer Protocol cy:HTTP da:HTTP de:Hypertext Transfer Protocol el:Πρωτόκολλο Μεταφοράς Υπερκειμένου en:Hypertext Transfer Protocol eo:Hiperteksto-Transiga Protokolo es:Hypertext Transfer Protocol et:Hüperteksti edastusprotokoll eu:HTTP fa:پروتکل انتقال ابرمتن fi:HTTP fiu-vro:HTTP fr:Hypertext Transfer Protocol ga:Prótacal Aistrithe Hipirtéacs gl:HTTP he:Hypertext Transfer Protocol hr:HTTP hu:HTTP id:Hypertext Transfer Protocol is:Hypertext Transfer Protocol it:Hypertext Transfer Protocol kk:HTTP ko:HTTP lb:Hypertext Transfer Protocol lt:HTTP lv:HTTP ml:ഹൈപ്പർ ടെക്സ്റ്റ്‌ ട്രാൻസ്ഫർ പ്രോട്ടോകോൾ ms:HTTP new:एच टी टी पी nl:Hypertext Transfer Protocol nn:Hypertext Transfer Protocol no:HTTP pl:Hypertext Transfer Protocol pt:Hypertext Transfer Protocol ro:HTTP ru:HTTP sh:HTTP simple:Hypertext Transfer Protocol sk:Hypertext Transfer Protocol sl:HTTP sq:Hypertext Transfer Protocol sr:HTTP sv:HTTP ta:மீயுரை பரிமாற்ற நெறிமுறை th:เอชทีทีพี tl:HTTP tr:HTTP uk:HTTP vi:Hypertext Transfer Protocol yo:Hypertext Transfer Protocol zh:超文本传输协议 zh-yue:HTTP

個人用ツール