HTTPって何?わかりやすく解説

インターネットでウェブサイトを見たり、メールを送ったりするときって、知らないうちにいろんな「約束事」が働いてるんだよね。でも「HTTP」とか「HTTPS」って言葉を見かけても、「何それ?」って感じじゃないかな。この記事を読めば、ウェブの裏側で起きてることが、スッキリわかるようになるよ。

先生、「HTTP」ってよく見かけるんですけど、何ですか?

いい質問だね。HTTPっていうのは、つまり「インターネットでパソコンやスマホとウェブサーバー(ウェブサイトを保管してるコンピュータ)がデータをやり取りするときのルール」のことなんだ。通信プロトコルという言い方もするけど、要は「決められた決まりごと」だと思ってくれたらいいよ。
決まりごとですか。何でそんなものが必要なんですか?

例えばさ、友だちと違う言葉で喋ってたら話が通じなくなるよね?それと同じ。パソコンとサーバーも「この形でデータ送ってね、この形で返してね」っていう同じ言葉で話す必要があるんだ。HTTPがあるから、世界中のパソコンやスマホがちゃんと通信できるんだよ。
あ、なるほど!でも「HTTP」と「HTTPS」は何が違うんですか?

良く気づいたね。HTTPSの「S」は「Secure」という意味で、つまり「安全な」という意味。HTTPSは暗号化(データを暗号で守ること)されてるから、パスワードとか個人情報を送るときに安全なんだ。今はほとんどのサイトがHTTPSになってる。ブラウザのアドレスバーを見てみて。鍵マークがあれば、そこはHTTPSで安全な接続ってわけだよ。
📝 3行でまとめると
  1. HTTPはインターネットでデータをやり取りするときの決まりで、パソコンとウェブサーバーが同じルールで通信するために必要
  2. HTTPSはHTTPに暗号化という安全機能を加えたもので、パスワードや個人情報を守ってくれる
  3. ブラウザのアドレスバーに鍵マークがあればHTTPSで安全な接続だと判断できる
目次

もうちょっと詳しく

HTTPは「HyperText Transfer Protocol」の略で、ハイパーテキスト(画像や動画も含むウェブコンテンツ)を転送するときの約束ごとです。1990年頃にティム・バーナーズ・リーという人が発明して、それ以来ずっとインターネットの基本的な通信方法として使われています。私たちがウェブサイトを開く、その裏側ではHTTPがせっせと働いているんですよ。HTTPがなかったら、パソコンがサーバーに何を求めてるのか、サーバーが何を返してるのか、全く意味不明になってしまうんです。つまり、HTTPは「インターネットの共通言語」みたいなものなんですね。

💡 ポイント
HTTPは1990年頃からずっと使われてる歴史のあるルール。新しいテクノロジーじゃなくて、ウェブの基本中の基本です。

⚠️ よくある勘違い

❌ 「HTTPとHTTPSはまったく別のもの」
→ HTTPSはHTTPの拡張版。基本はHTTPで、そこに暗号化という層を追加したものです。
⭕ 「HTTPSはHTTPを安全にしたバージョン」
→ 正しい理解。HTTPSの「S」が「Secure(安全)」を意味してることからもわかるように、安全性を高めたHTTPなんです。
なるほど〜、あーそういうことか!

[toc]

HTTPってそもそも何なの?インターネットの「共通言語」の話

インターネットの世界で、パソコンやスマホとウェブサーバーがデータをやり取りするとき、何か決まったやり方があるんだって話をしましたね。それがHTTPなんです。もう少し詳しく説明すると、HTTPは「決まったフォーマット」でデータを送り合う仕組みなんですよ。

HTTPが必要な理由

例えば、あなたがウェブサイトを見たいときって、ブラウザのアドレスバーに「www.example.com」って打ち込みますよね。その瞬間、あなたのパソコンはサーバー(つまり、そのウェブサイトを保管してるコンピュータ)に「このサイトを見たいんです」というお願いを送るんです。でもここで大事なのは、「見たいんです」という気持ちを送るんじゃなくて、「決まった形式」でお願いを送らなきゃいけないってこと。

もし、パソコンが「見たいです」って送ったとして、サーバーが「このメッセージは何だ?わからん」って返したら?通信が成立しません。だから、世界中のパソコンとサーバーが「このフォーマットで送ろう」って決めたのがHTTPなんです。これが「共通言語」ってわけですね。

HTTPの「リクエスト」と「レスポンス」

HTTPでは、やり取りが決まった順番で進みます。あなたのパソコンが「リクエスト」(つまり、お願い・要求)を送って、サーバーが「レスポンス」(つまり、返答)を返す。これが基本的なやり方なんです。

具体的に言うと、こんな流れです。あなたが「www.google.com」を見たいってアドレスバーに打つ。すると、あなたのパソコンは「GETというメソッド(つまり、データをください、という命令)でwww.google.comのトップページをください」というリクエストをサーバーに送ります。サーバーはそれを受け取って「OK、ここがそのページです」とレスポンスを返す。すると、あなたのパソコンがそれを受け取ってブラウザに表示する。これが毎回起きてるんですよ。

HTTPメソッドって何?

さっき「GET」という命令の話をしましたね。実は、HTTPにはいろんな命令があるんです。これを「HTTPメソッド」と言うんですよ。つまり「パソコンがサーバーにどんなお願いをするか」を表す命令の種類ですね。

代表的なメソッドを説明すると:

  • GET:データをください、という命令。ウェブサイトを見るときはほぼこれです。
  • POST:データを送ります、という命令。ログインするときとかフォームに入力したデータを送るときに使います。
  • PUT:データを更新してください、という命令。データを置き換えるときに使います。
  • DELETE:データを削除してください、という命令。その名の通りです。

普通のユーザーがウェブサイトを見てるときは、ほぼGETしか使わないんです。でもウェブアプリケーション(ウェブ上で動くアプリ)やスマホアプリの裏側では、POSTやPUT、DELETEが使われてるんですよ。

HTTPのステータスコードって何?サーバーからの「返事」の読み方

ウェブサイトを見てるときに、たまに「404 Not Found」とか「500 Internal Server Error」みたいなエラーメッセージを見たことありませんか?あれ、実はサーバーからの返事なんですよ。それが「ステータスコード」っていう三ケタの数字なんです。

ステータスコードの種類

ステータスコードは、「リクエストがうまくいったのか」「失敗したのか」を表す番号です。数字の最初の一ケタで大体の意味が決まります。

  • 1xx(100番台):処理の途中。ほぼ表に出ないです。
  • 2xx(200番台):成功。「200 OK」が最も一般的。リクエストがうまくいった、という意味です。
  • 3xx(300番台):リダイレクト。つまり、別のページに案内するよ、という意味。「301 Moved Permanently」とか「302 Found」とか。
  • 4xx(400番台):クライアントエラー。あなたのパソコンからのお願いが悪い、という意味。「404 Not Found」は「そのページはありません」って意味だし、「403 Forbidden」は「そのページは見る権限ありません」って意味です。
  • 5xx(500番台):サーバーエラー。サーバーが悪い、という意味。「500 Internal Server Error」はサーバーで何かエラーが起きた、「503 Service Unavailable」はサーバーが今使えません、って意味です。

エラーが出たときは何が起きてるのか

404エラーが出たときを例に考えてみましょう。「あのページ、見たいな」とリクエストを送ったのに「そんなページない」って返されるわけです。これは、そのページが削除されたか、アドレスが間違ってるか、どちらかの可能性が高いんですよ。

一方、500番台のエラーが出たときは、サーバーが何か問題を抱えてるってことです。あなたのリクエスト自体は間違ってないんだけど、サーバーがそれに答えられない状態。こういうときは、時間を置いて再度アクセスすると治ってることが多いです。

HTTPSで安全な通信、パスワードと個人情報を守る話

HTTPについて説明してきたんですが、ここで大事な話をしなきゃいけません。実は、普通のHTTPは「丸見え」なんです。つまり、あなたがサーバーに送ったデータが、インターネットの途中で他の人に見られちゃう可能性があるんですよ。怖いですよね?

HTTPはどうして安全じゃないの?

HTTPでデータを送るときって、そのデータがそのままネットワークを通って移動するんです。もし、悪い人がそのネットワークを盗み見したら、あなたのパスワードとか、クレジットカード番号とか、全部見られちゃうんですよ。これを「平文送信」って言うんです。つまり、暗号化されていない状態で送ってる、ってことですね。

例えば、図書館の公開パソコンでログインするとき、普通のHTTPでやったら、図書館のWiFiに接続してる他の人に、あなたのIDとパスワードが見えちゃうかもしれないわけです。ヤバいですよね。

HTTPSで暗号化される

だから登場したのがHTTPSなんです。HTTPSは、データを送る前に「暗号化」するんです。つまり、データを「何か分からない形」に変えちゃって、送るってことですね。

イメージとしては、こんな感じです。あなたがサーバーに「password123」って送りたいとします。普通のHTTPだと「password123」そのまんまが飛びますね。でも、HTTPSだと「xK9mQ2vL7pR」みたいに、全く分からない形に変わって飛ぶんです。そしてサーバー側で、それを「password123」に戻すんですよ。

SSL証明書って何?

HTTPSでこの暗号化が安全に行われるために必要なのが「SSL証明書」(つまり「安全な通信をしてますよ」という証明書)なんです。信頼できるサイトには、必ずこのSSL証明書が用意されてるんですよ。

ブラウザのアドレスバーを見てください。「https://」って書いてあって、その横に鍵マークがありますよね?あの鍵マークがあれば「このサイト、SSL証明書を持ってる。つまり、安全に暗号化して通信してるんだ」ってわかるんです。

逆に、鍵マークがなかったり、「保護されていません」という警告が出てるサイトは、HTTPSじゃない(普通のHTTP)か、SSL証明書が無効な状態ですね。そういうサイトではパスワードとか個人情報を入力しちゃダメですよ。

HTTPの仕組み、もっと掘り下げると…通信の細かい流れ

ここまで、HTTPやHTTPSの基本的な話をしてきましたね。でも、インターネットの裏側では、もっと細かいやり取りが起きてるんです。その流れを少し詳しく見てみましょう。

TCP/IPという、さらに下の層がある

実は、HTTPより下に「TCP/IP」という別の通信ルールがあるんです。つまり、階層構造になってるんですよ。

イメージとしては、こんな感じです。一番下にTC/IP(つまり「ネットワークでデータを確実に届ける約束ごと」)があって、その上にHTTP(つまり「ウェブサイトのデータをやり取りする約束ごと」)があるんですね。パソコンは、HTTPで「ページをください」って言うと、その下のTCP/IPが「わかりました、確実に届けますね」って処理してくれるわけです。

リクエストからレスポンスまでの細かい流れ

具体的に、あなたがウェブサイトを見るときの流れを説明しますね。

  1. DNS解決:「example.com」というドメイン名(つまり、わかりやすいサイトの名前)が「203.0.113.1」みたいなIPアドレス(つまり、ネットワークでの住所)に変わります。
  2. 接続:あなたのパソコンがそのIPアドレスのサーバーに接続しようとします。
  3. リクエスト送信:接続できたら「GET / HTTP/1.1」みたいなリクエストを送ります。
  4. レスポンス受取:サーバーが「HTTP/1.1 200 OK」とステータスコード、そしてウェブページのHTML(つまり、ページの内容を書いてるコード)を返します。
  5. ページ表示:ブラウザがそのHTMLを読んで、あなたが見やすいようにページを表示します。

この全部が、ほんの数秒で起きてるんですよ。すごいですよね。

HTTPのバージョンも進化してる

実は、HTTPにはバージョンがあるんです。「HTTP/1.0」とか「HTTP/1.1」とか「HTTP/2」とか。昔は「HTTP/1.1」が主流でしたが、今は「HTTP/2」や「HTTP/3」も使われてます。

何が違うのかって言うと、データの送り方が工夫されてるんですよ。新しいバージョンほど、より速く、より安全に通信できるようになってるんです。あなたが見てるサイトが速いのも、こういう細かい工夫のおかげなんですね。

💡 こっちの記事も参考になるよ
HTTPSって何?わかりやすく解説
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

大人になってから「これ知らなかった…」と恥ずかしい思いをした経験から、このサイトを作りました。お金・仕事・社会のしくみって、学校で教えてくれないのに知らないと損することだらけ。むずかしい言葉を「あーそういうことか!」って思えるまでかみ砕いて説明するのが得意です。主に経済・法律・税金・ライフイベント周りの用語を毎日更新中。

目次