Web技術の基本的な仕組みの中で下記の用語を学んだので、わかりやすくまとめてみました。
- ステートレスな通信
- ステートフルな通信
- リクエスト
- レスポンス
- プロトコル
- クッキー
- ポート番号
ステートレスな通信
ステートフルな通信とは、通信が独立してるということ。
例えば、AさんとBさんがそれぞれ自分のパソコンからAmazonにアクセスしログインするとする。
Aさんが先にログインをし、Bさんがその後、ログインをする。ステートレスな通信だと、クライアントを識別する情報管理機能がないため、Bさんがログインした際にAさんの情報を表示してしまう。
ステートフルな通信
ステートフルな通信とは
通信とクライアントをセットで管理して識別できる通信のこと。
例えば、上記のステートレスの通信の例で考えると‥
AさんとBさんがそれぞれ自分のパソコンからAmazonにアクセスしログインするとする。
Aさんが先にログインをし、Bさんがその後、ログインをする。
ステートフルな通信は、通信とクライアントをセットで管理できるためAさんのログイン情報とBさんのログイン情報を別々に管理できる。
そのため、表示画面もそれぞれAさんとBさんのログイン画面が表示される。
リクエスト
ブラウザからサーバへ命令を送ること。
例えば、ブラウザで「韓国 ファッション」と検索する。
すると、ブラウザからWebサーバへ「韓国のファッション情報をくれ」という命令が送られる。
この命令のことをリクエストという。
レスポンス
ブラウザから来た命令に対して情報を返すこと。
例えば、ブラウザで「韓国 ファッション」と検索する。
すると、ブラウザからWebサーバへ「韓国のファッション情報をくれ」という命令が送られる。
Webサーバは、
命令を受け取るとデータベースサーバから「韓国のファッション情報」を取得する。
その情報をブラウザに返す。この情報をブラウザに返すこと
をレスポンスという。
クッキー
HTTPがステートレスな通信であるため、これをステートフルな通信にするための解決策。
クッキーが生まれた背景
HTTPはステートレスな通信のため、クライアント毎に情報を識別できない。
このままだとAさんがログインしたAmazonのログインページをBさんもアクセスできてしまうため、セキュリティ面が問題である。
HTTPをステートフルな通信にする必要がある!
この解決策としてクッキーというものが生まれた。
クッキーがクライアントを識別するための仕組み
クライアントがサーバにリクエストをし、
サーバから情報をレスポンスを返す際にレスポンスした情報の中にクッキーを作成しクライアントに持たせておく。
クッキーには、クライアントの識別番号が振られているので、AさんとBさんの情報を識別し別々に管理することができる。
Aさんがログインした後、Bさんがログインする際は、識別番号を元に通信情報を特定することで、ステートフルな通信にすることができる。
プロトコル
プロトコルとは
コンピュータ同士が通信をする際のルールや基本形式のようなもの。
これがあることで、ソフトウェアやハードウェアが大きく異なっていてもネットワークで接続することができる。
逆に、別のプロトコルであると通信ができない。
例えると、翻訳機のようなもの。
日本とアメリカでは日本語と英語で言語が違うので、
基本的に意思疎通はできない。
しかし、翻訳機があることでお互いの言語を翻訳し意思疎通が取れるようになる。
プロトコルはこの翻訳機のような役割を担っている。
具体的に世界では、どういうプロトコルが使われているかというと、TCP/IP
というプロトコルが使われている。
TCP/IPは大きく分けると4つの階層がある。
- 第4層:アプリケーション層
- 第3層:トランスポート層
- 第2層:インターネット層
- 第1層:ネットワークインターフェイス層
馴染みがあるのは、アプリケーション層なので
それを元に説明をする。
アプリケーション層には下記のような主要プロトコルがある。
- HTTPS
- Webページの閲覧する際のプロトコル
- FTP
- ファイルの転送する際のプロトコル
- SMTP
- メールの送信する際のプロトコル
- POP
- メールの受信する際のプロトコル
- DNS
- IPアドレスとドメインを紐づける名前解決する際のプロトコル
- SSH
- 遠隔操作する際のプロトコル
というように、私たちが普段何かしらのサービスを利用する際にはサービスに該当するプロトコルが使われているのである。
ポート番号
ポート番号は
情報がコンピュータに入ってくる際の入口のようなもの。
コンピュータ内には、情報が入るための入り口がたくさんあり、情報はその決められた入口を通って入ってくる。
IPアドレスがコンピュータを特定する番号であるのに対して、
ポート番号はコンピュータ内のプログラムを特定する番号である。
例えば、HTTPSは443番。FTPは20番。SMTPは25番。POPは110番。SSHは22番。
というように振り分けられている。