httpとは 〜みんな毎日http通信してるんだから基本ぐらい抑えておこう!
どうも、ITコンサルタントのShoheiです。
今日はhttpについて説明していきます。
※Verion 1.1をベースに説明していきます
そもそもhttpってなんだろう
よくホームページ等をみたりするとき、URLと言ってhttpやhttpsから始まる文字列が表示されますよね。(例: https://go-mount.hatenablog.com)
あれは、これはhttp(https)というプロトコルでWebサーバとやりとりしますぜと宣言をするための文字列です。(Webサーバの説明はWebサーバって何??脱IT初心者! - IT社員3人組によるリレーブログ を参照ください)
プロトコルは何かというと、通信をするための約束事のことです。
以下の図のように、通信をする際は必ず相手とどんなプロトコルでやりとりするかが明確になっている必要があります。
httpプロトコルの超概要
では、httpプロトコル(約束事)では何が約束されているのでしょう。
要点だけ、概要でお伝えします。
クライアントサーバモデルのやりとりを前提としている
横文字出てきましたがまだ難しくないので離脱しないでね。要はこういうこと。
例えばブラウザ(IEとかFirefoxとかSafariとかChromeのことね)開いて、何もしていないのに勝手にITリレーブログの記事が出たり、Youtubeで動画流れ始めたりしないですよね。
Webページを表示するためには、URLをいれるとか、検索をするとか、なんらかのアクションが必要。
このアクションは、リクエストと呼ばれていて、リクエストをしたPCはクライアントと呼ばれます。
リクエストは誰に飛ぶかというと、欲しい内容を持っているWebサーバに飛びます。
httpではこの、「これちょうだい!(リクエスト)」「了解、送るね!(レスポンス)」が必ずセットになるプロトコルです。
何をもらうの
リクエストで何をもらうかというと、Webページのコンテンツ(htmlファイルなど)です。
それを受け取ったクライアントはは、データを組み立ててブラウザに表示させます。
こうしてみなさんが今見ているページの表示が実現されます。
やりとりはどんな形で行われるの
こんな感じです。
通訳書いているので事細かには説明しないですが、二点だけ解説。
レスポンスコードとは
逆にリクエストに答える側は、リクエストがどう処理されたか(レスポンスコード)をセットで返すことになっています。
今回は 200 OK、正常に受理されたぜ、という内容を返していますが、他にも以下のようなレスポンスコードがあります。一例を紹介。
- 200 OK: 正常にリクエストを処理したよ
- 301 Moved Permanently: そのURL古くて、今は別のところにあるんだわ
- 400 Bad Request: いやリクエスト意味不明。間違ってない?
- 401 Unauthorized: 君は認められてないよ (認証が必要だよと伝えるケースと、認証が間違ってるよと伝えるケースあり)
- 404 Not Found: そんなコンテンツないぜ? (男が悲しむ"This video has been deleted"的な)
- 500 Internal Server Error: ごめん、Webサーバ側の問題でエラーだわ
失敗をしているのは400代と500代。400代はクライアント側の問題だよ、500代はサーバ側の問題だよ、という内容になっています。
http(Version 1.1)の特徴
httpの特徴はシンプルさですかね。「くれ」「やるよ」が基本となり、余計なことはやらない。
ただ、逆に余計なことをやらなすぎて、今の時代に必要な機能がないことで、必要な機能をhttpプロトコル外で実装する必要があります。例をあげます。
セキュリティ的に弱い
例として、データが平文(暗号化されていない状態)で飛んでしまうという点があります。
この状態では、もしもやりとり中のデータを横取りされたら、クレカ情報でもなんでも盗み取られてしまいます
➡︎そのため重要なデータを扱うようなページはhttpではなく httpsというプロトコルを使われることが多いです
http/2の登場
上記の課題に対処するために、2015年にhttpのversion2が出ています。
version2についての詳細はここではふれませんが、ブラウザとサーバ側で対応しないと2は使えません。主要ブラウザは対応していますが、サーバ側はまだまだ普及仕切っていない状況です。
試しにこのブログのプロトコルも調べて見ましたが、まだVersion1.1が使われていますね。逆に約20年前のプロトコルが今でも使われているのは、すごいことだとも思います。
書籍紹介
この知識は、以下の本から得ました。グーグルに勤めている知り合いにおすすめされて読んだんですが、確かにおすすめですよ。読みやすいし、会社名など具体的な例をだしてくれるし、Web関連の攻撃の解説も全て具体的で非常にわかりやすい。
少し古い本なのでversion 2の解説はないですが、httpの基礎を学ぶにはかなりおすすめです。
- 作者: 上野宣
- 出版社/メーカー: 翔泳社
- 発売日: 2013/05/25
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (8件) を見る
まとめ
httpの基礎について説明しました。