インターネットを利用していると、アドレスに「http」と入っていますよね。
これにはちゃんと意味があって、歴史も意外と奥深いんです!
今回は専門用語をできるだけ使わず、HTTPについて解説していきます。
HTTPとは?
『HyperText Transfer Protocol』の略称です。
『Webサーバ』と『クライアントのWebブラウザ』が、データを送受信するためのプロトコルです。
クライアントとは、手元のPCやスマホのことを言います。
プロトコルとは?
Protocolと書き、外交儀礼の意味を指します。
コンピュータ同士で通信する際、決められた手順や規格のことです。
このプロトコルで、データの形式、パケット(データの伝送単位)の構成、エラーの対処などが取り決められています。
取り決められていると何がいい?
少し歴史を紐解いていきましょう。
インターネットが使われ始めた当初、通信する際、同じメーカーのみで独自の通信ルールを定めていました。
初めは『同じメーカーの機器さえ繋がれば良いじゃん』という考えだったようです。
しかし、インターネットとコンピュータが徐々に普及していくにつれて、ユーザの不便さが目立つようになりました。
そこで異なるメーカー同士でも通信を可能にすべく、国際的にルールが取り決められました。
これが『プロトコル』です。
プロトコルがあるから、今私たちがメーカーや機種を気にせずに通信が行えるんですね。
【応用編】プロトコルの種類
OSI参照モデルの階層によって、使われるプロトコルは異なります。
ちなみに、OSI参照モデルは全部で7層あります。
以下はそのうち抜粋したものです。
●アプリケーション層
- 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メソッドの種類
主に以下のようなものがあります。
- GET
- POST
- PUT
- DELETE
このほかにもありますが、まずは上記の4つから理解していきましょう。
GET
- 参照
- リクエスト元の手元で使えるように、データを取得します。
- 例
- Webサイト閲覧(HTMLやCSS、画像、Javascriptの取得など)
- APIを呼び出しデータ取得
POST
- 新規作成
- 副作用を伴うデータを送ることができます。
- データを新規作成するときにも使用します。
- 例
- 天気取得API(引数は市町村区など)
- Webサイトの入力フォームからデータ送信
- SNSでアカウントを新規作成
- ブログ記事を新規投稿
- Twitterでツイートする
- Facebookでコメントを投稿する
PUT
- 置換
- データが存在するかどうか分からないときに使用します。
- 存在する:更新
- 存在しない:新規作成
- 更新対象や更新内容を付与して送信できます。
- 例:S3にあるURLにファイルをアップロードする
PATCH
- 更新
- 既にあるデータを上書きして更新・変更・修正します。
- 例:ユーザ情報の変更
DELETE
- 削除
- 既にあるデータを削除します。
- 削除対象の情報を付与して送信します。
- 例
- カートの中の商品を削除
- 既存のアカウント削除
- ブログ記事の削除
- ツイートの削除
- コメントの削除
【補足】CRUD
システムが持つデータ操作を、さらに頭文字4つからとった言葉です。
- C : Create
- 登録
- R : Read
- 参照
- U : Update
- 変更
- D : Delete
- 削除
世の中にあるいろんなシステム、「この機能がないと始まらない」最低限必要な機能郡のことですね。
HTTPメッセージ
HTTPメッセージとは、サーバとクライアントがデータのやり取りをするための手段です。
HTTPメッセージの種類
HTTPメッセージには2種類のメッセージがあります。
- リクエスト
- クライアント⏩サーバ
- サーバにアクションを起こさせる
- レスポンス
- クライアント⏪サーバ
- サーバの回答内容である
私たち人間の会話と似ていますね。
- 「Aというページの情報をください」→リクエスト
- 「こちらがAのページの情報です」→レスポンス
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つずつ知識を蓄積していきましょう!