お袋さんのプログラミングスクール学習の記録

プログラミングスクールで学習した内容をアウトプットしていきます!

Webアプリケーションで使用されている技術について

Webアプリケーションで使用されている技術や用語について整理してみました。

現在、私自身が初学者であることから、そのレベルでの理解度で記載しています。学習を進めるにつれて理解度が深まり、自分の中の情報のアップデートがあれば適宜更新していきます!

また、ここでは触れられなかった技術についてもたくさんありますので、別途記事にて紹介したいと思っています!

ステートフル

後述の「クッキー」と呼ばれる技術を使用して実現されています。この技術により、サーバ側がクライアント側の情報を保持し、クライアントが何度もサーバにリクエストを送信し、その都度サーバがリクエストに応じた情報を返信することで、状態を持ったWebアプリケーションを作成することができます。

ステートレス

サーバーがクライアントの状態を保持しておらず、リクエストに対してレスポンスが返されたら、それ以降の通信においてクライアントの情報が保持されません。HTTPプロトコルなどで使用されます。

リクエス

クライアント⇒サーバへの要求のことで、以下の要素が含まれる。

リクエストライン

このリソースが欲しい旨の情報に加えて、リクエストの種類(GET or POST)やプロトコルのバージョン情報が含まれている。

メッセージヘッダ

リクエストの付加的な情報で、以下の要素などが含まれます。

  • クライアント側が受け取ることのできるテータや言語の種類
  • リクエスト元のブラウザの種類
  • リクエストの送信先ホスト名やポート番号
メッセージボディ

POSTリクエストの際に、ユーザが入力して情報が含まれます。

レスポンス

サーバ⇒クライアントへの応答のことで、以下の要素が含まれる。

ステータスライン

リクエストの結果とそのステータスコードが含まれており、ステータスコードを見れば、リクエストが成功したかどうかだけでなく、失敗した場合の大まかな原因もわかるようになっています。

メッセージボディ

リクエストしたデータが含まれており、HTMLをリクエストした場合はHTMLファイルがそのまま含まれ、画像ファイルなどを要求した場合はバイナリ形式でデータが含まれています。

クッキー

Webアプリケーション⇔Webブラウザでデータのやり取りをできるように作られた仕組みで、ステートフルなアプリケーションを作成するのに必要な要素です。

一般的には、あるサイトにアクセスした際のレスポンスでWebブラウザにセッション情報が設定され、次回同じサイトにアクセスした際にはそのCookie情報はリクエストヘッダに含まれて送信されます。

このように、Webサーバ側でそのセッション情報を突合することによって、対象のユーザを判別し、セッションの状態を維持することができます。例えば、一度ログインしたらしばらくは何度もログインしなくてもよいようにします。

プロトコル

通信を行う上での共通のルールです。このルールがあることによって、異なる通信機器同士でも通信が可能になっています。

ポート番号

アプリケーション毎に一意で設定され、どのプロトコルで受信したか、どのアプリケーションで処理すべきか、をTCP/IPで判別することができます。

代表的なプロトコルにはwell-known portと呼ばれるポート番号が既に決まっています。宛先にポート番号が指定されていない場合は、対象のプロトコルが分かった時点で自動的にそのプロトコルに紐づいたポート番号が設定されます。