クライアントサーバモデル=HTTPリクエスト/レスポンスモデルについて

2021年3月13日JavaScript

クライアントサーバモデル=HTTPリクエスト/レスポンスモデルについて基礎的な部分をまとめました。

クライアントサーバモデル=HTTPリクエスト/レスポンスモデルについて

クライアント(ユーザー)が、インターネット上で検索したりURLをクリックしたり、すると、その結果が返されますが、そのユーザー側から送ることをHTTPリクエスト、そして、サーバー側から返されることをHTTPレスポンスといいます。
クライアントサーバモデル(Client-server architecture)もしくはHTTPリクエスト/レスポンスモデル(Request-responce model)という名前がついています。

HTTPリクエスト(HTTP Request)

クライアントがHTTPリクエスト(HTTP Request)を行います。
HTTPリクエストの始まりの一行(start line)は、HTTPメソッド(GETとかPOSTとか) + Request target(リソースの部分) + HTTP virsion(HTTP/1.1とか)で始まります。
その後、HTTP request headers(Host, user-Agent, Accept-Language)などなどが続きます。そして、Request body(POSTでサーバーへデータを送るときなど)が続きます。

DNS(Domain Name Server)

たとえば、クライアントがリクエストするURLがhttps://domein-name.com/recourceとすると、httpsの部分がプロトコル(Ptorocol),ドメイン名、リソースという分け方ができます。
クライアントがこのURLをWEBサーバーへ届ける前に、まずはDNS(Domain Name Server)へ上げられます。
そして、インターネットサービス・プロバイダーのDNSにて、そのURLに合致するIPアドレスに変換されます。そして、そのIPアドレスをクライアントに返却します。https://111.22.333.333:443よいうような感じです。この:443の部分はリソースではなく、ポートナンバーというもので、HTTPSのプロトコルと関係しています。HTTPなら80になります。

TCP/IPソケット通信

そして、TCP/IPソケット通信(TCP/IP socket connection)にてクライアントとWebサーバーがやっとつながります。
TCPはtransmition Controll ProtocolでIPはInternet Protocolの略です。合わせて、どのようにWeb上で情報の転送を行うかを取り決めているプロトコルになります。インターネット上でどのように情報が転送されるのかについて決めているとても重要なプロトコルになります。
まず、TCPはリクエストされた情報を何千もの細かい情報の塊に分解します。その単位をチャンクといい、そのチャンクの情報の塊のことをパケットといいます。
そのパケットが最終目的地にたどり着いたら、そのパケットを再構築してオリジナルのレスポンスを返せるようにします。そして、IPは、その情報を再度クライアント再度へIPアドレスを利用して送り返すのが仕事になります。

HTTPレスポンス(HTTP Response)

そして、WebサーバーからHTTPレスポンス(HTTP Response)が返されます。HTTPレスポンスの内容はHTTPリクエストととても似ています。HTTPレスポンスの始まりの一行は、HTTP version(HTTP/1.1など) + status code(200) + status message(OKです。そしてHTTP response headersが続いて、response bodyが続きます。

HTTPリクエストとHTTPレスポンスはファイルごとに繰り返される

このHTTPリクエストとHTTPレスポンスのやり取りは、ファイルごとに行われます。
まずは、index.htmlが最初にロードされます。そして、JS,CSS,画像などのファイルがスキャンされて、それぞれで繰り返しHTTPリクエストとHTTPレスポンスを行います。
そして、それらが済むとブラウザにレンダーされます。