目次
HTTPとは
HTTP(Hyper Text Transfer Protocol)とは、ハイパーテキスト、すなわちWebサイトを構成するWebページ(HTMLファイル)を転送するためのプロトコルです。しかし、HTTPはハイパーテキストを転送するためだけに利用しているわけではありません。ハイパーテキストに限らず、さまざまな種類のファイルを転送する汎用的なファイル転送プロトコルとして利用できます。たとえば、HTTPを利用して、JPEGファイル、PNGファイルなどの画像ファイルはもちろんのこと、PDFファイルやWORDファイル、EXCELファイルなどの文書ファイルの転送も可能です。
HTTPはTCP/IPの最上位のアプリケーション層に位置するプロトコルで、下位のトランスポート層にはTCPを利用します。ウェルノウンポート番号は80です。HTTPによるファイル転送はHTTPリクエストとHTTPレスポンスのやり取りによって行います。
HTTPリクエスト
WebブラウザからWebサーバアプリケーションへ送信されるHTTPリクエストは、リクエスト行、メッセージヘッダ、エンティティボディの3つの部分に分けられます。メッセージヘッダとエンティティボディの間には空白行があります。
リクエスト行はHTTPリクエストの1行目で、Webサーバに対する実際の処理要求を伝えます。リクエスト行は、さらにメソッド、URI、バージョンで構成されています。メソッドは、サーバに対する要求を表していて、主なメソッドを表にまとめています。
メソッド名 | 意味 |
GET | URIで指定したデータを取得します |
HEAD | URIで指定したデータのヘッダのみを取得します |
POST | サーバに対してデータを送信します |
PUT | サーバにファイルを送信します |
DELETE | サーバのファイルを削除するように要求します |
CONNECT | プロキシサーバ経由で通信を行います |
最もよく用いられるメソッドはGETです。WebブラウザでURLを入力したり、リンクをクリックしたりするとGETメソッドのHTTPリクエストをWebサーバアプリケーションへ送信します。URIはリクエストの対象となるデータを示しています。バージョンは、WebブラウザがサポートするHTTPのバージョンで主に1.0か1.1です。
メッセージヘッダはリクエスト行に続く複数行のテキスト列です。ここでは、Webブラウザの種類やバージョン、対応するデータ形式などの情報を記述しています。
メッセージヘッダのあとは区切りのための空白行があり、そのあとにエンティティボディが続きます。POSTメソッドでWebブラウザからデータを送るときに用いられます。
HTTPリクエストのうちGETメソッドの例は以下の図のようになります。
リクエスト行にはGETメソッドで「network_basic」というURIにHTTPバージョン1.1でアクセスしていることがわかります。そして、GETメソッドの場合はメッセージヘッダの部分には、User-AgentとしてPCのOSやブラウザのバージョンなどの情報も含まれます。Referrerにはアクセス元のページの情報が入っています。また、GETメソッドのエンティティボディには何も入っていません。
HTTPレスポンス
HTTPリクエストの返事がHTTPレスポンスです。HTTPレスポンスは、HTTPリクエストと似た構成でレスポンス行、メッセージヘッダとエンティティボディから構成されています。
レスポンス行は、さらにバージョン、ステータスコード、説明文に分かれています。バージョンは、リクエストと同じくHTTPのバージョンを示し、現在主なバージョンは1.0か1.1です。ステータスコードはリクエストに対するWebサーバアプリケーションの処理結果を表す3桁の数字です。ステータスコードには、多くの種類があり、以下の表のように百の位で大まかな意味が決まっています。
ステータスコードの値 | 意味 |
1xx | 情報。追加情報があることを伝えます |
2xx | 成功。サーバがリクエストを処理できたことを伝えます |
3xx | リダイレクト。別のURIにリクエストしなおすように要求します |
4xx | クライアントエラー。リクエストに問題があり、処理できなかったことを伝えます |
5xx | サーバエラー。サーバ側に問題があり、処理できなかったことを伝えます |
説明文とは、ステータスコードの意味を簡単に示したテキストです。Webサーバアプリケーションが返すステータスコードで一番多いのは「200」です。ステータスコード200はリクエストを正常に処理できたということを表しています。しかし、リクエストが正常に処理されればWebブラウザにはリクエストした内容が表示されるので、ステータスコード200をユーザが目にすることはほとんどありません。
Webブラウザを利用しているユーザが誰でも一度は目にしたことがあるステータスコードは、おそらく「404」です。URLを間違えてえしまったりWebページが削除されていると、Webサーバはステータスコード404を返します。ステータスコード404を受け取るとWebブラウザでは「ページが見つかりません」といった表示になります。
また、オンラインショッピングサイトで大規模なセールを開催するときなどにアクセスが急増すると、Webサーバアプリケーションが処理しきれないこともあります。そのような場合、Webサーバアプリケーションはステータスコード「503」などを返します。
メッセージヘッダは、Webサーバアプリケーションがより詳細な情報をWebブラウザに伝えるために利用します。たとえば、データの形式や更新された日付などが記述されます。
そのあとに区切りの空白行があり、空白行のあとにエンティティボディが続きます。エンティティボディにWebブラウザに返信すべきデータが入ります。
以下は、HTTPレスポンスの例として、Webサーバアプリケーションが一番よく返すステータスコード200とその内容を挙げています。
このHTTPレスポンスは、「//www.n-study.com/network_basic」というURLにアクセスしたときのものです。スタータス行でHTTP1.1でのアクセスを正常に処理ができていることスタータスコード200でWebブラウザに通知しています。メッセージヘッダには //www.n-study.com/network_basic/ のHTMLファイルの更新日時やファイルの種類、対応している文字コードなどの情報が入っています。そして、エンティティボディの部分には、HTMLファイルの中身がそのまま含まれていることがわかります。
TCP/IP
- TCP/IPの階層
- IP(Internet Protocol) ~データを送り届ける~
- ICMP ~きちんとIPで転送できますか?~
- Ping ~きちんとデータは届きますか?~
- Windows OSのPingコマンド
- トレースルート ~データはどのルータを通っていますか?~
- tracertコマンド(Windows OS)
- ICMPリダイレクト
- トラブルはどこ? ~Pingとトレースルート~
- ARP ~IPアドレスとMACアドレスを対応付け~
- ARPフォーマット
- Gratuitous ARP(GARP)
- ポート番号 ~どのアプリケーションのデータなの?
- TCPの概要
- TCPの動作
- UDPの概要
- アプリケーションのデータが届くまでのまとめ
- DNS ~宛先IPアドレスを求める~
- nslookupコマンド ~DNSの名前解決の確認~
- DHCP ~IPアドレスを自動割り当て~
- Cisco IOS DHCPサーバの設定と確認コマンド
- Ciscoルータ DHCPサーバの設定例
- DHCPリレーエージェント
- DHCPリレーエージェントの設定例[Cisco]
- DHCPサーバ配置のまとめ
- TCP/IPの設定のまとめ
- ipconfigコマンド ~Windows OSのTCP/IP設定を確認~
- Linux(Ubuntu)でのTCP/IP設定の確認コマンド
- Webサイト
- HTMLとCSS ~Webページを作る~
- URL ~Webサイト(Webページ)のアドレス~
- HTTP ~HTMLファイルを転送する~
- Webアプリケーション ~Webブラウザだけあればいい~
- HTTP Cookie
- Webアプリケーションのセッション管理
- Webプロキシサーバ ~Webアクセスを代わりに~
- Webアクセスのまとめ
- 電子メール
- SMTP ~電子メール送信用プロトコル~
- POP3 ~メール受信用プロトコル~
- IMAP4 ~メールサーバ上でメールを管理~
- 電子メールのまとめ
- FTP ~代表的なファイル転送プロトコル~
- TFTP ~簡易的なファイル転送プロトコル~
- Windows10/11のTFTPクライアント
- ネットワークのトラブルの切り分け手順