どうもこんにちは!
サバ缶(@tech_begin)です。
インターネットを利用していると、アドレスに「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
GETメソッドは、データの参照時に使用します。
リクエスト元の手元で使えるように、データを取得します。
- Webサイト閲覧(HTMLやCSS、画像、Javascriptの取得など)
- APIを呼び出しデータ取得
POST
POSTメソッドは、副作用(動作)を伴うデータを送ることができます。
データを新規作成するときにも使用します。
- 天気取得API(引数は市町村区など)
- Webサイトの入力フォームからデータ送信
- SNSでアカウントを新規作成
- ブログ記事を新規投稿
- Twitterでツイートする
- Facebookでコメントを投稿する
PUT
PUTメソッドは、データの置換などの際に使用します。
データが存在するかどうか分からないときに使用することが多いです。
更新対象や更新内容を付与してデータ送信することができます。
- S3にあるURLにファイルをアップロードする
- 存在する場合:更新
- 存在しない場合:新規作成
PATCH
PATCHメソッドは、データの更新時に使われます。
すでにあるデータを上書きして更新・変更・修正します。
- ユーザ情報の変更
DELETE
DELETEメソッドは名前の通り、データの削除をする際に使用されます。
削除対象の情報を付与してデータ送信します。
- カートの中の商品を削除
- 既存のアカウント削除
- ブログ記事の削除
- ツイートの削除
- コメントの削除
【補足】CRUD
システムが持つデータ操作を、さらに頭文字4つからとった言葉です。
- C : Create
- 登録
- R : Read
- 参照
- U : Update
- 変更
- D : Delete
- 削除
世の中にあるいろんなシステム、「この機能がないと始まらない」最低限必要な機能郡のことですね。
以下の記事でCRUDについて詳しく解説しています。
☞【データベース】CRUD(クラッド)とは何?図解でわかりやすく徹底解説
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つずつ知識を蓄積していきましょう!