ホーム » スタッフ » 斉藤徹 » 講義録 » 情報ネットワーク基礎 » WWWとhttpとサーチエンジン

WWWとhttpとサーチエンジン

WWWとhttp

WWW(World Wide Web)とは、ティム・バーナーズ=リーによって作られたサービスであり、元々は研究データの論文やデータの共有のために作られた。この際のWebサーバのデータのやり取りのためのプロトコルがhttp(Hyper Text Transfer Protocol)であり、ポート番号80のTCPを用いたものであり、最近では通信を暗号化したhttps(ポート番号443)も多く使われる。

httpでは、文字データの中に画像や音声といった情報に加え、他のデータへのリンクを埋め込むことができる HTML(Hyper Text Markup Language) のデータがやりとりされる。このHTML形式のデータを表示するためのソフトは、ブラウザと呼ばれる。

URL

WWWのデータの場所を示すものが、URL(Uniformed Resource Locator)であるが、最近ではインターネットが複雑化しLocator という表現が難しいため、URI(Uniformed Resource Identifier)と呼ぶようになってきた。

URLは基本的に、スキーマ://コンピュータ名/サーバ内ファイル位置 といった文字で構成される。URL は、HTTP だけでなく、インターネットの情報の場所を記述するために使われており、httpやhttps以外にも使う。

コンピュータ名
(IPアドレスでも可)
サーバ内のファイル位置
http:// www.ei.fukui-nct.ac.jp :80 /~t-saitoh/index.html
スキーマ
http, https, ftp などの
プロトコル名
ポート番号
省略すると http=80, https=443 などの
ウェルノウンポートを使う
メールアドレスを mailto:foo@bar.jp のようにURL で書くこともある。

最近のブラウザは、スキーマ欄の”https://”やコンピュータ名の先頭の”www.”を省略することができる。また http は暗号通信を使わず危険であることから、警告メッセージが表示されたり、可能であれば自動的に https 通信に切り替えられる。

http (Hyper Text Transfer Protocol) の流れ

httpのサーバ(Webサーバ)とブラウザでは、以下のような手順で処理が行われる。例えば http://www.ei.fukui-nct.ac.jp/~t-saitoh/index.html のページが表示されるまでを考えると、

  1. ブラウザのURL欄に、目的サイトのURLを入力。
  2. 基本的には、スキーマ欄に記載されたプロトコル(http)名から、ポート番号通信プロトコル(http)を決める。一般的な http 通信では、ポート番号には 80 を使う。
  3. コンピュータ名部分(www.ei.fukui-nct.ac.jp)を DNS に問合せして、得られたIPアドレスのコンピュータに接続。
  4. httpの最も簡単な GET メソッドでは、Webサーバに、サーバ内のファイル位置(/~t-saitoh/index.html)を伝えると、Webサーバは応答ヘッダ情報応答本文指定された場所のファイルの内容を返送する。(下図参照)
    (バックエンドとプログラム言語 を参照)
  5. HTML形式のデータが指定された場合、ブラウザはその HTML をどの様に表示するか判断しながら表示
    (フロントエンドとレンダリング・JavaScript を参照)

このような予め保存されているWebページを返送する場合は静的ページと呼ばれる。サーバのデータベースなどを参照しながらページ内容を返送する場合は、動的ページと呼ばれ、Webサーバ内部でプログラムを動作させ、その結果のデータをブラウザに返す。

バックエンドとプログラム言語

動的ページを生成するためのプログラムとしては様々な言語があり、プログラムの実行結果がブラウザに送られる。(バックエンド)

  • 言語 Perl による CGI(Common Gateway Interface)
  • Webに特化した言語 PHP
  • サーバで 言語 Java を使ってページデータを生成(Apache Tomcat)
  • サーバで 言語 JavaScript を使ってページデータを生成(Node.js)

フロントエンドとレンダリング・JavaScript

ブラウザが、HTMLやCSSなどの情報にあわせて画面に表示することはレンダリングと言う。レンダリング処理を行うソフトウェア部品をレンダリングエンジンと呼び、FireFox は Gecko、Safari(macOS, iOS) は Webkit、Google Chrome, Opera, Edge は Blink を使っている。

また、最近のブラウザには、JavaScript のプログラムを動かす機能(JavaScriptエンジン)が内蔵されており、レンダリングエンジンと協力しながら、表示内容を動的に変化させることができる。(フロントエンド)

JavaScript は、Netscape Navigator 2.0 で実装され、後発の Microsoft が Internet Explorer 3で JScript を開発し、広く普及するが JavaScript, JScript の互換性のため ECMAScript によって標準化された。(Netscape社は現在 Oracle が買収)

https

httpでは、通信が平文で行われるため、同じサブネット内であれば通信内容を盗み見られる可能性がある。この通信を暗号化しながら行われるものが https である。ポート番号には一般的に 443 が使われる。暗号化通信は次週以降に説明を行う。

サーチエンジン

インターネットでは、大量のWebページが出現してきたため、自分の目的に応じてWebページを探す機能が必要となってきた。このような目的のWebページを検索してくれるシステムは、サーチエンジンと呼ばれる。

ディレクトリ型

最初に現れた検索システム(1994年)は、ページ作者が自分のページのURLと内容となるキーワードをサーチエンジンに登録しておき、内容のカテゴリー別に、ページの紹介文章が表示されるディレクトリ型であった。(初期のYahoo)

しかし、登録するキーワード以外の文字で探そうとすると、情報を見つけることができない。

ロボット型

これらの問題を解決すべく登場したのが、Google のようなロボット型サーチエンジン(1997年)である。
ロボット型の検索システムでは、クローラーとかロボット(あるいはボット)とか呼ばれるプログラムを使い、Webページの内容をダウンロードし、そこに記載された文字を使ってURLのデータベースを作成する。

  1. 与えられた URL の先のページをダウンロードする。
  2. ページ内の文字を単語に切り分けして、それぞれの単語とURLを関連付けてデータベースに保存
  3. ページ内にリンクが含まれていたら、そのURLで、この作業を再帰的に繰り返す。

サーチエンジンで検索が行われると、クローラーの処理で作られたデータベースに問い合わせ、見つかったURLの情報を表示する。

Googleなどでは、多くのユーザが探したいページを提供するために、たくさん使われている単語を重要語としたり、たくさんのページからリンクされているページを表示順上位に表示するような工夫をしている。

ページランキングを上げるためのWebページの工夫をすることを、SEO (Search Engine Optimization) という。しかし逆にページランキングを不当に上げようと特殊なテクニックのページ作りをする人もいるが、最近では不当なページ作りは逆にランキングが落とされるようになっている。
(Google などでは、https を使ったページで、パソコン向けページやスマホ向けページの両方が整備されていると、ランキングが上がる)

ブラウザの動作をコマンドラインで体験

例えば、http://www.fukui-nct.ac.jp:80/ というURLが与えられた場合、ブラウザの内部処理を CLI で再現してみる。

  • http, “:80” の部分から、80 番ポートを使った http 通信であることが判る。
  • nslookup コマンドを使って IP アドレスを調べる。
  • telnet コマンドでサーバに接続
  • GET / HTTP/1.0 でHTMLを取得
# nslookup で www.fukui-nct.ac.jp のIPアドレスを調べる
$ nslookup www.fukui-nct.ac.jp (改行)
:
Non-authoritative answer:
Name:   www.ei.fukui-nct.ac.jp
Address: 192.156.146.120

# telnet でサーバに接続
$ telnet 192.156.146.120 80 (改行) # URLから得られるポート番号を使う
Trying 192.156.146.120...
Connected to www.fukui-nct.ac.jp.
Escape character is '^]'.
GET / HTTP/1.0 (改行)
(RET)

HTTP/1.1 200 OK # 結果が正しく返信されている 200 OK
Date: Tue, 06 Jan 2026 02:22:21 GMT
Server: Apache
X-Powered-By: PHP/8.0.30
Link: <https://www.fukui-nct.ac.jp/wp-json/>; rel="https://api.w.org/"
:
Content-Type: text/html; charset=UTF-8 # 返ってきたデータがHTML形式,文字コードUTF-8というのが確認できる

<!DOCTYPE html>  # この後に大量のHTMLデータが表示される
:

理解度確認

  • URLが与えられてページが見れるまでに行われることを説明せよ。
  • サーチエンジンのディレクトリ型とロボット型の違いを説明せよ。