【初心者向け】HTTPとは一体なに?基礎からわかりやすく解説!

HTTPのイメージ画像コンピュータ基礎
サバ缶
サバ缶

どうもこんにちは!
サバ缶(@tech_begin)です。

インターネットを利用していると、アドレスに「http」と入っていますよね。

これにはちゃんと意味があって、歴史も意外と奥深いんです!

今回は専門用語をできるだけ使わず、HTTPについて解説していきます。

HTTPとは?

HyperText Transfer Protocol』の略称です。

『Webサーバ』と『クライアントのWebブラウザ』が、データを送受信するためのプロトコルです。

クライアントとは、手元のPCやスマホのことを言います。

プロトコルとは?

プロトコルとは、コンピュータ同士で通信する際、決められた手順や規格のことです。

ローマ字で『Protocol』と書き、外交儀礼の意味もあります。

このプロトコルで、データの形式、パケット(データの伝送単位)の構成、エラーの対処などが取り決められています。

取り決められていると何がいい?

少し歴史を紐解いていきましょう。

インターネットが使われ始めた当初、通信する際、同じメーカーのみで独自の通信ルールを定めていました。

初めは『同じメーカーの機器さえ繋がれば良いじゃん』という考えだったようです。

しかし、インターネットとコンピュータが徐々に普及していくにつれて、ユーザの不便さが目立つようになりました。
そこで異なるメーカー同士でも通信を可能にすべく、国際的にルールが取り決められました。

これが『プロトコル』です!
プロトコルがあるから、今私たちがメーカーや機種を気にせずに通信が行えるんですね。

【応用編】プロトコルの種類

OSI参照モデルの階層によって、使われるプロトコルは異なります。

ちなみに、OSI参照モデルは全部で7層あります。
以下はそのうち抜粋したものです。

OSI参照モデルとプロトコルの種類
  • アプリケーション層
    • Webアクセスに使われるHTTP(Hypertext Transfer Protocol)
    • 電子メールのやりとりに使われるPOP(Post Office Protocol)、SMTP(Simple Mail Transfer Protocol)
  • トランスポート層
    • 別のコンピューターへのデータ伝送を制御するTCP(Transmission Control Protocol)
    • ネットワーク上のほかのホストへデータグラムを送るUDP(User Datagram Protocol)
  • ネットワーク層
    • IP(Internet Protocol)
  • データリンク層
    • ネットワークの規格のEthernetなど

ちょっと難しいかもしれませんが、必ず理解しなければならないというわけではありません!

詳しい説明は以下の記事をご覧ください。

<準備中>

HTTPのメソッド

HTTPメソッドとは

HTTPは、サーバとクライアントの通信時に使われるプロトコルでしたね。

基本的にはサーバは受け取り待ち(受動的)、クライアントは依頼をする(能動的)立ち位置にいます。

HTTPメソッドとは、クライアントがサーバへして欲しいことを依頼する(リクエスト)ための方法です。

HTTPメソッドの種類

主に以下のようなものがあります。

HTTPメソッドの種類
  • GET
  • POST
  • PUT
  • DELETE

このほかにもありますが、まずは上記の4つから理解していきましょう。

GET

GETメソッドは、データの参照時に使用します。

リクエスト元の手元で使えるように、データを取得します。

GETメソッドの例
  • Webサイト閲覧(HTMLやCSS、画像、Javascriptの取得など)
  • APIを呼び出しデータ取得

POST

POSTメソッドは、副作用(動作)を伴うデータを送ることができます。
データを新規作成するときにも使用します。

POSTメソッドの例
  • 天気取得API(引数は市町村区など)
  • Webサイトの入力フォームからデータ送信
  • SNSでアカウントを新規作成
  • ブログ記事を新規投稿
  • Twitterでツイートする
  • Facebookでコメントを投稿する

PUT

PUTメソッドは、データの置換などの際に使用します。

データが存在するかどうか分からないときに使用することが多いです。
更新対象や更新内容を付与してデータ送信することができます。

PUTメソッドの例
  • S3にあるURLにファイルをアップロードする
    • 存在する場合:更新
    • 存在しない場合:新規作成

PATCH

PATCHメソッドは、データの更新時に使われます。

すでにあるデータを上書きして更新・変更・修正します。

PATCHメソッドの例
  • ユーザ情報の変更

DELETE

DELETEメソッドは名前の通り、データの削除をする際に使用されます。

削除対象の情報を付与してデータ送信します。

DELETEメソッドの例
  • カートの中の商品を削除
  • 既存のアカウント削除
  • ブログ記事の削除
  • ツイートの削除
  • コメントの削除

【補足】CRUD

システムが持つデータ操作を、さらに頭文字4つからとった言葉です。

CRUDの種類
  • C : Create
    • 登録
  • R : Read
    • 参照
  • U : Update
    • 変更
  • D : Delete
    • 削除

世の中にあるいろんなシステム、「この機能がないと始まらない」最低限必要な機能郡のことですね。

以下の記事でCRUDについて詳しく解説しています。
☞【データベース】CRUD(クラッド)とは何?図解でわかりやすく徹底解説

HTTPメッセージ

HTTPメッセージとは、サーバとクライアントがデータのやり取りをするための手段です。

HTTPメッセージの種類

HTTPメッセージには2種類のメッセージがあります。

HTTPメッセージの種類
  • リクエスト
    • クライアント⏩サーバ
    • サーバにアクションを起こさせる
  • レスポンス
    • クライアント⏪サーバ
    • サーバの回答内容である

私たち人間の会話と似ていますね。

リクエストとレスポンス
  • 「Aというページの情報をください」→リクエスト
  • 「こちらがAのページの情報です」→レスポンス

HTTPメッセージの構造

HTTPメッセージは、リクエストとレスポンスで似た構造をしています。

HTTPメッセージの構造
  • 実行するリクエスト、または成功か失敗の状態を示す1行
  • リクエストの詳細を示す、またはメッセージに含まれる本文を説明するHTTPヘッダー
  • リクエストのメタ情報が全て送信されたことを示す空行
  • リクエストに関連づけられたデータ、レスポンスに関連づけられたドキュメントを含む本文。
  • 本文が存在することやそのサイズは、開始1行やHTTPヘッダーで指定する
/* リクエスト */
GET / HTTP/1.1
Accept: image/gif, image/jpeg, */*
Accept-Language: ja
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (Compatible; MSIE 6.0; Windows NT 5.1;)
Host: www.xxx.zzz
Connection: Keep-Alive

/* メッセージボディ(POSTメソッドなどで使用) */

---

/* レスポンス */
HTTP/1.1 200 OK
Date: Sun, 11 Jan 2004 16:06:23 GMT
Server: Apache/1.3.22 (Unix) (Red-Hat/Linux)
Last-Modified: Sun, 07 Dec 2003 12:34:18 GMT
ETag: "1dba6-131b-3fd31e4a"
Accept-Ranges: bytes
Content-Length: 4891
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html

:

まとめ

HTTPについて少しだけでも理解していただけたら嬉しいです。

少し深掘りした内容もありましたが、すぐに理解できなくて当たり前です。

わからないところがあったらその言葉で調べて、1つずつ知識を蓄積していきましょう!

タイトルとURLをコピーしました