はじめに
『プロになるためのWeb技術入門』――なぜ,あなたはWebシステムを開発できないのか
を読んで、個人的にWeb開発を行う上で整理しておきたい以下の用語についてまとめておきます。
- Stateful / Stateless
- Request / Responce
- Cookie
- Protocol
- Port
Stateful / Stateless
Webの世界では、しばしば「セッション情報を保持する」プロトコルと表現する際に「ステートフル」という形容詞を用いる。
※ステートフルの対義語は「ステートレス」である。
FTPなどは、FTPサーバと前後の通信の内容を保持しながら通信するため、ステートフル・プロトコルと呼ばれる。
一方、HTTPはサーバとの通信が1度で終了し、前後の通信の内容を保持しないため、ステートレス・プロトコルと呼ばれる。
Request / Response
クライアントがWebサーバに必要な情報を要求することをリクエスト、サーバがそのリクエストに応じた情報を返すことをレスポンスと呼ぶ。
スマホのブラウザでWebサイトにアクセスすると、ブラウザがWebサーバに対して「HTMLをください!」と依頼する、これはリクエストにあたる。
リクエストに対して、Webサーバがスマホに対して「ほらよ!」とHTMLファイルを返す、これはレスポンスにあたる。
Cookie
HTTPなどのステートレスな通信において、ステートフルに通信するための技術をCookieと呼ぶ。
具体的には、WebサーバからクライアントへHTTPレスポンスのヘッダを利用して、「名前 = 値」の組み合わせで情報を送信することである。
クライアントは、次回同じWebサーバにアクセスする際に、一度発行したCookieをそのままHTTPリクエストのヘッダに入れて送信する。Webサーバ側は、Cookieを利用してアクセスしてきた相手がどのような人物か判断する。
ゆえに、Cookieを使用するとステートレスなHTTP通信でステートフルに通信することが可能となる。
Protocol
ネットワークに接続された通信機器がデータを送受信する際に、定められている約束事のようなもの。
現在、HTMLの転送に適したプロトコルとして「HTTP(Hyper Text Transfer Protocol)」が幅広く利用されている。
Port
クライアントがアクセスする際のWebサイトのURLには、ポート番号が省略されている。なお、使用頻度の高いプロトコルには標準でポート番号が決まっている(well-known ports)。
これは、Webサイトアクセス時、TCP/IPによってWebサーバ側でパケット受信した際に、パケットがどのようなプロトコルのものであるか、どのようなアプリケーションで処理すべき分からないため、必ず「待ち受けポート」を決めてリクエストを待つ仕様となっている。