WWWの基礎まとめ【HTTP・セッション管理・Webセキュリティを解説】

WWWに関するブログのアイキャッチ画像 ネットワーク
広告

 このページでは,基本情報技術者試験をはじめとする情報処理技術者試験で必須となる,WWWについてシンプルにまとめています。HTMLの概要,HTTP(リクエスト,レスポンス,セッション管理),プロキシサーバー,Webのセキュリティ(アクセス制御,認証,HTTPS),WebシステムとWeb3層構造を解説します。繰り返し確認して,確実に理解しましょう。

  1. WWW(World Wide Web)とは(仕組みと構成)
    1. HTML(HyperText Markup Language)とは(Web文書と構造)
  2. HTTP(HyperText Transfer Protocol)とは(リクエスト/レスポンスと仕組み)
    1. URL(Uniform Resource Locator)とは(識別子と構造)
      1. URI(Uniform Resource Identifier)とは(識別子の基本)
    2. HTTPリクエストとは(構成と例)
      1. HTTPメソッドの種類
        1. GETメソッドとは(特徴と用途)
        2. POSTメソッドとは(特徴と用途)
        3. GETメソッドとPOSTメソッドの比較(使い分け)
      2. HTTPリクエストで使われる主なヘッダーフィールド
    3. HTTPレスポンスとは(ステータスと構造)
      1. 主なステータスコード(意味と例)
      2. HTTPレスポンスで使われる主なヘッダーフィールド
    4. セッション管理とは
      1. Cookie(クッキー)とは(セッション維持の仕組み)
      2. URLリライティングとは(セッションIDの埋め込み)
      3. hiddenフィールドとは(セッションIDの送信)
  3. プロキシサーバーとは(役割と仕組み)
  4. その他の Web 技術
    1. CGI(Common Gateway Interface)とは(Web プログラムの仕組み)
  5. Webのセキュリティとは(脅威と対策)
    1. Webのアクセス制御とは(Web への制限)
    2. Webサイトでの認証とは
      1. HTTP認証とは
        1. ベーシック認証とは(仕組みと注意点)
        2. ダイジェスト認証とは(特徴と利点)
      2. フォーム認証とは(ログイン画面など)
    3. HTTPヘッダーによるセキュリティ対策とは
      1. secure属性とは(Cookieセキュリティ)
    4. HTTPS(HTTP over SSL/TLS)とは(暗号化通信)
  6. Webシステムとは(3 層構造と構成要素)
    1. Web3層構造とは
      1. 主なサーバーソフトウェア
      2. 開発に使用する主な言語
  7. まとめ
広告

WWW(World Wide Web)とは(仕組みと構成)

 WWWとは,ハイパーテキストをインターネットで閲覧するためのシステムをいいます。

※ ハイパーテキスト…文書内の任意の位置に,他の文書へのリンクを埋め込むことができるテキスト。文字,画像,音声,動画などにリンクを設定できる

HTML(HyperText Markup Language)とは(Web文書と構造)

 HTMLとは,ハイパーテキストを記述する言語のことをいいます。

HTTP(HyperText Transfer Protocol)とは(リクエスト/レスポンスと仕組み)

 HTTPとは,WebサーバーからHTMLで記述されたWebページや,その他のファイルなどを取得するためのプロトコルをいいます。

※ TCPのポート番号80を使用する

※ 実際には,URLに対応するIPアドレスを取得(名前解決)してから,Webサーバーに接続する。名前解決の詳細は,「DNSの基礎まとめ(名前解決の問い合わせ方法)」を参照

HTTPリクエストに関する説明画像

 HTTPは,HTTPリクエストとHTTPレスポンスで処理を完結するステートレスなプロトコルです。そのため,状態管理は行いません。

※ ステートレス…状態管理を行わない(以前の状態を保持しない)こと

ステートレスに関する説明画像

URL(Uniform Resource Locator)とは(識別子と構造)

 URLとは,インターネット上に存在する資源(ファイルなど)の位置を表記する方法です。

URLに関する説明画像

URI(Uniform Resource Identifier)とは(識別子の基本)

 URIとは,インターネット上に存在する資源(ファイルなど)を識別するための識別子を表記する方法です。URN(インターネット上に存在する資源(ファイルなど)を識別するための名前を表記する方法)が追加された際に,定義されました。

※ URIは,URLを拡張する形で定義された

URIに関する説明画像

HTTPリクエストとは(構成と例)

HTTPメソッドの種類

 HTTPリクエストのメソッドには,次のようなものがあります。

GETURLで指定したサーバーから情報を取得する
HEADURLで指定したサーバーから情報のヘッダーだけを取得する
POSTURLで指定したサーバーに情報を送信する
PUTURLで指定したサーバーのファイルを,送信するデータに置き換える
DELETEURLで指定したサーバーのファイルを削除する
OPTIONS利用可能なオプション(メソッド)の一覧を取得する

※ 主に,GETメソッドとPOSTメソッドが使用される

GETメソッドとは(特徴と用途)

 GETメソッドは,URLで指定したサーバーから情報を取得する際に使用するメソッドです。たとえば,GETメソッドによるHTTPリクエストは,次のようになります。

GETリクエストの例1

 また,GETメソッドによるHTTPリクエストで,データを送信する場合は,次のようにします。

GETリクエストの例2
POSTメソッドとは(特徴と用途)

 POSTメソッドは,URLで指定したサーバーに情報を送信する際に使用するメソッドです。たとえば,POSTメソッドによるHTTPリクエストは,次のようになります(データを送信する場合は,送信するデータをメッセージボディに格納します)。

POSTメソッドの例
GETメソッドとPOSTメソッドの比較(使い分け)
GETメソッドPOSTメソッド
送信データの格納場所URLの後ろメッセージボディ
送信データの長さの制限制限あり制限なし
送信できるデータの種類文字列のみ文字列,数値,バイナリなど
セキュリティ低い(送信データがURLに表示され,Webブラウザの閲覧履歴に残る)高い(送信データがURLに表示されず,Webブラウザの閲覧履歴にも残らない)

HTTPリクエストで使われる主なヘッダーフィールド

Accept受入可能なメディアタイプ
Accept-Charset受入可能な文字セット
Accept-Encoding受入可能なエンコーディング
Accept-Language受入可能な言語
Authorization認証情報(ユーザーIDやパスワードなど)
CookieCookie情報
Fromメールアドレス
Hostホスト名
Referer参照元(直前に閲覧)のURI
User-Agentユーザーのシステムやブラウザに関する情報(プログラムの名称やバージョン)

※ Cookie(クッキー)の詳細は後述

HTTPレスポンスとは(ステータスと構造)

 たとえば,HTTPレスポンスは,次のようになります。

HTTPレスポンスの例

 ステータス行にはHTTPリクエストの結果が,ヘッダーフィールドには補足情報が,メッセージボディにはリクエストしたファイルなどの内容が収められています。

主なステータスコード(意味と例)

200OKHTTPリクエスト成功
401Unauthorized利用者認証が必要
404Not Found見つからない
408Request TimeoutHTTPリクエスト時間切れ
500Internal Server Error内部サーバーエラー

HTTPレスポンスで使われる主なヘッダーフィールド

Content-Encodingコンテンツのエンコーディング
Content-Languageコンテンツの言語
Content-Lengthコンテンツのサイズ
Content-Typeコンテンツのメディアタイプ
Date生成した日時
LocationURI以外にリダイレクト
Set-Cookieクライアントに保存するCookieに関する情報

※ Cookie(クッキー)の詳細は後述

セッション管理とは

 セッション管理とは,(電子商取引などの)処理に必要な通信の一連のやり取り(セッション)を管理することをいいます。HTTPは,ステートレスなプロトコルであり,それぞれの通信は独立しているため,セッション管理をすることはできません。よって,セッション管理が必要な場合は,クッキーなどを使用して管理します。

※ ステートレス…状態管理を行わない(以前の状態を保持しない)こと

Cookie(クッキー)とは(セッション維持の仕組み)

 クッキーとは,Webサーバーがユーザーを識別するために参照するファイルのことをいい,Webブラウザ側に保存されます。

クッキーに関する説明画像

 クッキーを使用するとセッションを管理できますが,ユーザーが(セキュリティ保護のために)クッキーを無効にしている場合,クッキーを使用したセッション管理はできません。よって,クッキー以外の方法でもセッションを管理できるようにしておく必要があります。

URLリライティングとは(セッションIDの埋め込み)

 リンクのURLにセッションIDを埋め込むことにより,セッション管理をすることができます。

※ クッキーを使用できない場合に使われる手法

URLリライティングに関する説明画像

hiddenフィールドとは(セッションIDの送信)

 フォームのデータにセッションIDを埋め込むことにより,セッション管理をすることができます。

※ クッキーやリンクのURLにセッションIDを埋め込む方法を補う形で使われる手法

hiddenの使用に関する説明画像

広告

プロキシサーバーとは(役割と仕組み)

 プロキシサーバーは,内部ネットワークから(インターネットなど)外部への通信を代行するサーバーです。一般的には,DMZに設置され,内部ネットワークのコンピューターから外部Webサーバーへのアクセスを中継します。

※ プロキシ…代理という意味

※ プロキシサーバーは,HTTPだけでなく,SMTP,IMAPなど,さまざまなプロトコルに対応可能

※ プロキシサーバーの詳細は,「ファイアウォールの基礎まとめ(プロキシサーバーとは)」を参照

その他の Web 技術

CGI(Common Gateway Interface)とは(Web プログラムの仕組み)

 CGIとは,Webサーバーが,Webブラウザなどからの要求に応じてプログラムを実行する仕組みをいいます。

※ Webページのフォームに入力されたデータの受け渡しなどに用いられる

Webのセキュリティとは(脅威と対策)

Webのアクセス制御とは(Web への制限)

 Webのアクセス制御には,次のようなものがあります。

ファイアウォールやWAFによるアクセス制御

URLフィルタリング

 特定の(有害な)Webサイト(URL)の閲覧を禁止(フィルタリング)する機能

コンテンツフィルタリング

 特定のキーワードなど,コンテンツの内容を基に,Webサイトの閲覧を禁止(フィルタリング)する機能

※ ファイアウォールやWAFの詳細は,「ファイアウォールの基礎まとめ」を参照

Webサイトでの認証とは

HTTP認証とは

ベーシック認証とは(仕組みと注意点)

 ベーシック認証とは,利用者IDとパスワードを使用して行う認証をいいます。

※ パスワードは平文で送信される

ダイジェスト認証とは(特徴と利点)

 ダイジェスト認証とは,利用者IDとパスワードを使用して行う認証をいいますが,利用者IDとパスワードは,秘匿するために,ハッシュ化したものを送信します。サーバー側では,登録済みの利用者IDとパスワードから同じようにハッシュ値を算出し,クライアントから受信したハッシュ値と比較して,一致した場合に認証します。

※ ハッシュ値(ダイジェスト値)…ハッシュ関数でハッシュ化した値

フォーム認証とは(ログイン画面など)

 フォーム認証とは,Webページ中に入力フォームを準備し,そこに入力されたデータの内容により認証を行う方式をいいます。利用者IDとパスワードをフォームデータとして送信するため,HTTPSにより暗号化する必要があります。

※ 現在,一般的に利用されている

※ HTTPSの詳細は後述

HTTPヘッダーによるセキュリティ対策とは

secure属性とは(Cookieセキュリティ)

 secure属性とは,クッキーを,SSL/TLSで暗号化している場合にのみ送信するようにする属性のことをいいます(クッキーに設定します)。

※ セッション鍵などにsecure属性をつける

secure属性の例

HTTPS(HTTP over SSL/TLS)とは(暗号化通信)

 HTTPSとは,SSL/TLSで暗号化した通信路上で,HTTP通信を利用できるようにする技術をいいます。クライアントがHTTPSリクエストを送信する際には,サーバー認証やクライアント認証が行われ,SSLセッションが確立されます。

※ HTTPSは,プロトコルではない

※ クライアント認証はオプション

※ SSL/TLSについては,「SSL/TLSの基礎まとめ」を参照

HTTPS通信の流れに関する説明画像

※ ディジタル署名については,「認証の基礎まとめ(ディジタル署名とは)」を参照

広告

Webシステムとは(3 層構造と構成要素)

 Webシステムとは,Webの技術を用いて構成したシステムをいいます。

Web3層構造とは

 Web3層構造とは,Webシステムのサーバー側の構成を3つの層(Webサーバー,AP(アプリケーション)サーバー,DB(データベース)サーバー)に分け,それぞれを専用のソフトウェアで実装する方式をいいます。

Webシステムに関する説明画像

主なサーバーソフトウェア

WebサーバーソフトウェアApache,Nginxなど
APサーバーソフトウェアApache Tomcat,WebLogic Serverなど
DBサーバーソフトウェアMySQL,Oracle Databese,SQL serverなど

開発に使用する主な言語

APサーバーJava,PHP,Ruby,Pythonなど
クライアントHTML,CSS,JacaScript

まとめ

 今回は,WWWについてシンプルにまとめてみました。HTTPのしくみやセッション管理,Webセキュリティ,Webシステムの構造を理解し,Web技術の基礎を押さえましょう。

 理解が進んだら,過去問題等にも挑戦してみてください。