0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Webの基礎:メッセージ君の全体と脳みそ編

Last updated at Posted at 2020-06-27

WebクライアントとWebサーバ間でやりとりされるメッセージ君の中には正しくやりとりするために多くの情報が詰まっています。
今回は、そんなメッセージ君の全体像を掴むと同時にその脳みそ(ヘッダー)にはどんな情報が詰まっているのか、少し見ていきましょう

#メッセージ君~~(赤司征十郎)は二人いる
HTTPを通して行われるクライアントとサーバのやり取りですが、これは大きく二つに分けられます。
リクエストとレスポンス、つまり要求と応答です
Webサーバはクライアントからのリクエストに応じて正しいレスポンスを返さないといけません。
「僕の命令は絶対だ」~~

#メッセージ君の全体像
要求とレスポンスという二つのメッセージ、そこに入っている情報はもちろん異なりますが
構成(いわばメッセージの全体像)は両方とも同じです。

img.png

さて、では次に各ブロックごとの要求(リクエスト)と応答(レスポンス)の違いについて見ていきましょう

##リクエスト
###リクエスト行
サーバの対してどのような処理をしてほしいのかという依頼内容が入っています。
「GET」や「POST」といったHTTPメソッドもここに入っています
###メッセージヘッダー
リクエストヘッダーとも言います
リクエストしているクライアントの情報を伝えます。
例えばWebブラウザの種類や、「データはJSON(text or XML or ・・・)で送るよー」、などといったこと情報が入っています
###メッセージボディ
Webサーバにデータを送るために使われます。
例えばネットショッピングサイトを利用する時、カートにアイテムが追加される際、リクエスト行で「カートへ追加してー」という依頼内容を設定して、メッセージボディで商品情報や個数のデータが送られます。

##レスポンス
###ステータス行
要求に対する処理の結果を返します。(OK or NGだったかどうか)
ステータスコードと言われる処理結果を表す三桁の数字もここに入っています。
###メッセージヘッダー
レスポンスヘッダーとも言います
リソースを提供しているサーバやソフトウェア関する情報を返します。
また「こんなデータ形式で返信するからねー、」といった情報も入っています。
###メッセージボディ
HTMLや画像などのクライアント側の欲する大元のデータが入っています。

以上が要求と応答のメッセージの大まかな違いです。
もちろんここに書かれたこと以外の情報が入ってくることもあります。

では次にメッセージ君の脳みそ(ヘッダー)に入っている情報についてもう少し、詳しく見ていってみましょう!

#メッセージヘッダー
リクエストもレスポンスもヘッダーを利用することで詳細な情報を相手側に伝えることができます。

##メッセージヘッダーの形
メッセージヘッダーは複数のメッセージフィールドによって成り立っています。
メッセージフィールド一つで一つの情報を伝えられると思ってください。
たくさんの情報を伝える必要があるほど、メッセージフィールドは増えるということになります。

メッセージフィールドの構成は以下の通りです。
フィールド名: フィールド値

例)今の日本時間を伝える
Date: Fri, 01 Jan 2020 00:00:00 GMT

##メッセージフィールドの種類
メッセージフィールドは情報の種類によって以下の4つのタイプに分けられます

###一般ヘッダーフィールド
レスポンスとリクエストの両方に含まれるフィールド
実際には使用意図に応じてリクエストヘッダーとレスポンスヘッダーのどちらかの一種として扱われます。

####代表的なヘッダー

Date:メッセージが作成された日付

Connection:トランザクション(処理)が完了したあとも、ネットワーク接続を開いたままにするかどうか。
もし値が keep-alive なら、接続維持。後続のリクエストで再利用される。

###リクエストヘッダーフィールド
名前の通り、リクエスト時のみ含まれるフィールド

####代表的なヘッダー
Host:送信先のサーバ名

User-Agent:ブラウザ情報や製品(iphoneやandroid、PC)の識別子、バージョン情報など。

###レスポンスフィールド
名前の通り、レスポンス時のみ含まれるフィールド

代表的なヘッダー
Location:リダイレクト先のページ情報

Server:Webサーバの情報(リクエストを処理した製品やソフトウェアの名前など)。

###エンティティフィールド
メッセージ全体に対する付加情報を送る際に使われる

####代表的なヘッダー
Allow:利用可能なHTTPメソッドの一覧

Content-Encoding:コンテンツのエンコード(データ変換)方式

Content-Language:コンテンツの使用言語

Content-Type:コンテンツの種類(JSONやXMLなど)

Expires:コンテンツの有効期限

#まとめ

以上、カンタンでは御座いますが、WebサーバーとWebクライアント間でやりとりされるメッセージ君の全体とその脳みそについてまとめてみました。
皆さんがメッセージ君について少しでも知る機会になれたならこの上ない喜びです。

最後まで読んでいただきありがとうございました! m<_ _>m

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?