はじめに
こんにちは、codaichiです。 プログラミングスクールのHappiness Chainに入会して約1ヶ月半ほど経ちました。
まだまだ覚えることが多いのですが、今日はそのなかでも入会してから学んだWebの技術を理解する際におさえておきたい用語を7つ説明したいと思います。
Webの技術を理解する際におさえておきたい7つの用語
1. ステートフル : Stateful
意味
ある状態を持っていること
使われる場面
ログイン状態を持っているかどう保持するかという場面でよく使われます。
ここでは例として、FTP(File Transfer Protocol)とHTTP(Hyper Text Transfer Protocol)の通信方法を比較してみます。
FTPはステートフルなプロトコルということが言えます。理由は、FTPの通信ではアクセス先のサーバーとの通信では、まずログイン情報を通知して、サーバーが許可した場合に必要な手続きができるようになるからです。
このサーバーが前回のリクエストを覚えていて、それを元に次のリクエストを実行していくというのが、「ある状態を持っていること」=ステートフルということです。
2. ステートレス : Stateless
意味
ある状態を持っていないこと
使われる場面
先ほどはステートフルの説明をしましたが、今回はステートレスなので、先ほどとは逆で、ある状態を持っていないこととなります。
例として、Webアプリケーションを構成する複数台のサーバーについて考えてみます。
Webアプリケーションの場合、ユーザーがログインしているかどうかの状態はセッションとして管理されます。サーバーが複数台ある場合は、どのサーバーでもユーザーのログイン状態がわかるようにしなければいけません。そのため外部のストレージやキャッシュ装置を用いてセッションを共有します。
このような場合、ログインの状態はサーバーでは持っていないので、サーバーはステートレスな構成ということができます。
もちろんサーバーを1台にして、メモリ上にセッションを保存することで、ステートフルな構成にすることも可能です。この場合はWebアプリケーションはサーバー1台の性能に依存してしまうことになります。
3,4. リクエストとレスポンス : Request/Response
意味
リクエストとはクライアントからサーバーに対する要求のこと
レスポンスとはサーバーからクライアントへの応答のこと
使われる場面
Webクライアントとは、Webブラウザのことを指しています。
ですので、Webブラウザから要求のことをリクエストといい、サーバーからの応答をレスポンスと表現します。
5. クッキー : Cookie
意味
HTTPサーバーとクライアントとの通信で特定の情報をブラウザに保持させる仕組みや保持したファイルのこと。
クッキーがあることで、IDとPasswordで1度ログインしたサイトでページを遷移してもログインし続けることができています。
歴史や背景
1994年にLou Montulli がオンラインショッピングサイトの過負荷だったサーバーの修正を手伝っている際に、マジッククッキー1から着想を得て作成しました。
6. プロトコル : Protocols
意味
サーバーとクライアントとの間で情報の送受信や交換を行う際の約束のこと。プロトコルが通信に必要な機能ごとに決まっていることでデータのやり取りができるようになっています。
歴史や背景
もともとは企業ごとに異なる通信方法が用意されていましたが、それだと同じ企業のデバイス間でしか通信ができません。それでは不便なので、統一したプロトコルが用意されるようになりました。
プロトコルの通信機能は処理に応じて階層構造になっています。
この階層構造で有名なものは2つあります。
1つは1970年代にアメリカ国防総省の国防高等研究計画局が開発したTCP/IPモデルです。
もう1つは1984年に国際標準化機構が用意したOSI参照モデルです。
それぞれのモデルの説明は省きますが、各モデルとそれに対応しているプロトコルを図解します。
レイヤ | OSI参照モデル | レイヤ | TCP/IPモデル | 主なプロトコル |
---|---|---|---|---|
7 | アプリケーション層 | 4 | アプリケーション層 | HTTP, DNS,SMTP,FTP |
6 | プレゼンテーション層 | 4 | アプリケーション層 | HTTP, DNS,SMTP,FTP |
5 | セッション層 | 4 | アプリケーション層 | HTTP, DNS,SMTP,FTP |
4 | トランスポート層 | 3 | トランスポート層 | TCP, UDP |
3 | ネットワーク層 | 2 | インターネット層 | IPv4, IPv6 |
2 | データリンク層 | 1 | ネットワークインターフェース層 | イーサネット、PPP |
1 | 物理層 | 1 | ネットワークインターフェース層 | イーサネット、PPP |
7. ポート番号 : Port
意味
データの送受信の際に、どのアプリケーションにデータを受け渡すのかを識別しているのがポート番号。ポート番号はアプリケーションと一意に紐づいているので、ポート番号が分かれば、データをどのアプリケーションで処理すればいいのかがわかるようになっています。
説明
ポート番号はよくIPアドレスと一緒に、住所を例として説明されることがあります。
つまり、データを送受信する際、IPアドレスが市町村までの住所を表し、ポート番号が部屋番号の役割を果たしているわけです。
ポート番号は先述のプロトコルでは、トランスポート層に位置し、IPアドレスを頼りに送受信されたデータを適切な部屋番号のアプリケーションに受け渡す役割をになっています。
なかでもポート番号0〜1023番は一般的にWell-Known Portsとして知られています。
終わりに
今回はHappiness Chainに入会してから学んだWebの技術を理解する際の基本用語を7つ説明しました。 なんとなく知っていた用語を学び直す機会を持てたことで、自分自身の理解が深まったと感じています。
- マジッククッキーとはデータに変更を加えることなく送受信される情報のパケットのこと↩