インターネット

情報システム概論 I 

                               システム情報工学研究科CS専攻、電子・情報工学系
                               新城 靖
                               <yas@is.tsukuba.ac.jp>

このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~yas/coins/compsys1-2006/2007-02-05
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~yas/
http://www.cs.tsukuba.ac.jp/~yas/

目標

URL を打ち込んでから Web ブラウザに表示されるまでどんな要素が働いてい るか理解する。

■インターネット

◆TCP/IP

電子メールでもWWWでも、TCP/IPという仕組みを用いて通信を行っている。 この節では、TCP/IP の仕組みについて簡単に説明する。 大事な考え方には、次のようなものがある。

◆プロトコルとプロトコル・スタック

プロトコル(protocol), 通信プロトコル(communication protocol)
通信を行う機器、コンピュータ、あるいは、プログラムの間でどのよう な手順で行うかを定めた規則
プロトコル・スタック
複数のプロトコルが積み重ねられ、 全体として層をなしていること。
インターネットで通信する時には、 1つのプロトコルだけではなく、 最低でも4つのプロトコルが必要になる。

TCP/IPの4層モデル

TCP/IPにおけるプロトコル・スタック

IP (Internet Protocol)
データグラム転送サービスを提供する通信プロトコル。
TCP(Transmission Control Protocol)
IP の機能を利用して、信頼性のある双方向のストリーム転送サービスを提供す る通信プロトコル
応用層のプロトコル
電子メール、World Wide Web などの サービス毎に定められたプロトコル。
物理層のプロトコル
イーサネット、無線LANなど電気信号や電波でビットの並びを送り届けるためプ ロトコル。

◆データグラム

インターネットでは、大きなデータを小さなデータの断片(データグラム、 パケット)に分割して送る。 データグラム(datagram)は、データと電報(telegram)から作られた造語。

データグラムに分割することで、次のような利点がある。

◆ホストとルータ

ホスト
ネットワークに接続されているコンピュータの中で、ネットワークに1ヵ所の 出入り口( ネットワーク・インタフェース(network interface) )を持っているもの
ルータ
2ヵ所以上の出入り口を持っているコンピュータ
ルータは、ネットワークとネットワークを接続するためのコンピュータである。 ルータは、入ってきたIPのデータグラムのIPアドレスを見て、どのネットワー クに送ればよいかを判断する。

ルータによるデータグラムの転送

ルータによるデータグラムの転送

ルータは、IPアドレスを見て、データグラムの送り先を判断する。

郵便局で、住所を見て、送り先を判断するのと似ている。郵便局は、一番末端 のもの(ポストから集配したり家に配ったりする)ではなくて、中間的な集配を する郵便局がある。

同様に、ルータも、自分自信は、最終到達地点のコンピュータを知らなくても、 別のルータに送るだけのようなものもある。

ルータは、隣のルータや回線が故障した時には迂回路を探す。 迂回絽がなければ通信は途絶する。

ルータとルータは、どの回線やルータが生きているか、通信速度はどうなって いるか等の情報を交換し会う。これらの情報を元に、各ルータは、受け取った データグラムを次の最適の経路/ルータに送る。

◆ストリーム

「ストリーム」という言葉は、コンピュータでは様々な意味に使われる。

TCPが提供するストリームの性質。

TCPで通信をする時に、通信相手を識別するにはIPアドレスと ポート番号(port number) が使われる。ポート番号は、16ビットの整数で、よく使われる アプリケーション ( サービス ) には、あらかじめどの番号を使うかが決めらている。これを well-knownポート番号(well-known port number) という。

TCP/IPで2つのプロセスが通信をしている図

TCP/IPによりより提供されるストリーム

◆応用層

TCP層の上には、 応用層 が定義されている。この層では、電子メールの転送、ファイル転送、遠隔ログ イン、WWW、といった TCP/IP を利用するプログラムの間の通信方法が定義さ れている。

TCP/IPを使った通信は、まるでコンピュータ同士(プログラム同士)が電話で 会話するように進められる。

表? TCP/IPの上に定義されているプロトコルの例

ポート番号 プロトコルの名前 目的
21 FTP(File Transfer Protocol) ファイル転送
22 ssh 遠隔ログイン(ssh)
23 Telnet 遠隔ログイン(telnet)
25 SMTP(Simple Mail Transfer Protocol) 電子メールの転送
79 finger fingerコマンド
80 HTTP(HyperText Transfer Protocol) WWWのデータ転送
110 POP(Post Office Protocol Version 3) 電子メールの受信
119 NNTP(Network News Transfer Protocol) ネットワーク・ニュースの記事の転送
143 IMAP(Internet Mail Access Protocol) 電子メールの受信・保管
513 login 遠隔ログイン(rlogin)

◆物理層

IPのデータグラムを転送するためには、さまざまな物理的な媒体 (電線、光ケーブル、電波) が使わる。

IP の視点からは、LANアクセスライン も物理層と見なす。OSI 7層モデルでは違う。

ダイアルアップなどを使った通信では、 PPP(Point to Point Protocol)とい うプロトコルの上に、IPデータグラムが転送される。

◆LAN(Local Area Network)

部屋の中から大学キャンパス程度までの範囲を接続するためのネットワーク。 イーサネットと無線LANがよく使われる。

イーサネット

無線LAN Wi-Fi (Wireless Fidelity, ワイファイ) は、アメリカの業界団体が無線LAN の相互接続認定した機器。

◆TCP/IPの実装

TCP/IP のプロトコルに従って通信メッセージを作成するプログラムは、オペレー ティング・システムのカーネルに含まれている。TCP/IPで通信を行うプログラ ムは、オペレーティング・システムを通じて、カーネル内のプログラムを使う。

オペレーティング・システムのカーネルは、デバイス・ドライバを通じてネッ トワーク通信を行うハードウェア(ネットワーク・インタフェース・カード) を操作して通信メッセージを送受信する。

■DNS(Domain Name System)

◆名前、アドレス

コンピュータの世界では、ある物を指し示すための情報という意味の類語:

◆名前サービス

名前サービスとは、高レベルの名前を低レベルの名前に変換するサービス。

高レベルの名前
文字列、人間が解釈できる
低いレベルの名前
整数、コンピュータにとって都合がよい

名前サーバ(name server)
名前サービスを提供するプロセスは、
名前解決(name resolution)
名前から名前を指している番号に変換すること
リゾルバ(resolver)
名前サーバのクライアントとして名前解決をする部分

◆DNS

インターネットで使われている名前サービス。 基本的には、ホストの名前を IP アドレスに変換する。

DNS では、膨大な数のホスト名を含む名前空間を階層的にドメイン(領域)に 分割して管理している。この空間の構造は、木構造とも呼ばれる。

◆DNSの木構造

DNS(Domain Name System)のドメインとは、 膨大な数のコンピュータの名前を含む名前空間を階層的にドメイン (領域)に分割していることを意味する。

図3 名前空間のドメインへの分割

図3 名前空間のドメインへの分割

この空間の構造は、木構造としても見ることができる。

図4 名前空間の木構造としての見方

図4 名前空間の木構造としての見方

たとえば、次のような名前を考える。
host1.is.u-ust.ac.jp
このように、インターネットでのコンピュータの名前は、「.」 で区切られた文字列(文字の並び)である。この文字列で使える文字は、アル ファベット(大文字も小文字も同じだが普通は小文字だけが使われる)と数字、 ハイフン(マイナス)である。

◆ディレクトリの木構造

コンピュータのディレクトリ(フォルダ)は、全体では 木構造(tree structure) になっている。階層化ディレクトリ(hierarchical directory)と呼ばれるこ ともある。

◆URL

World Wide Web では、他のデータへの参照を実現するためにURL (Uniform Resource Locator) という形式を使う。次に、URL の例を示す。

http://www.tsukuba.ac.jp/education/college.html

http
HyperText Transfer Protocol。WWWのデータを保持しているプログラム と、WWWを表示するプログラムの間でデータをやり取りするときの形式を定め た約束。
www.tsukuba.ac.jp
そのデータを持っているコンピュータの名前。
/education/college.html
そのコンピュータの中での資源の名前(ファイルの名前)。最後の .html は、その資源がHTML で書かれている事を表わしている。

◆URL中の2つの木

URL には、2つの木構造の表記方法が混じっている。

■クライアントとサーバ

インターネットで通信をプログラムを利用する時、 「クライアント」と「サーバ」という分けて考えることが多い。

例:

コンピュータが1台しかない場合、プログラムは1つでよい。通信をする場合 には、プログラム(コンピュータ)が2つになる。そのうちの1つのプログラ ム(またはコンピュータ)を、「クライアント」、もう1つを「サーバ」とい う。

◆サービスの授受

元々の意味
クライアント(client)
サービスを受ける方、顧客
サーバ(server)
サービス(service)を提供する方

図? サービスの授受によるクライアントとサーバの定義

図? サービスの授受によるクライアントとサーバの定義

◆利用者数

サービスを提供する方は、1つのプログラム(コンピュータ)で複数の利用者 の面倒をみる。その結果、1台のサーバに複数のクライアントがつながる。

クライアント
一人で使うもの
サーバ
複数人で共有するもの

図? 複数のクライアントによるサーバの共有

図? 複数のクライアントによるサーバの共有

◆通信パタン

TCP/IP では、通信するプログラムとプログラムの間は、電話で会話をするよ うに通信が行われる。両方同時に話をすることは、(可能ではあるが)あまり 行われない。次のようなことを、繰り返すことになる。
クライアント
先に要求を送る、後で結果を受け取る
サーバ
先に要求を受け取る、後で結果を返す

図? 通信のパタンからみたクライアントとサーバの定義

図? 通信のパタンからみたクライアントとサーバの定義

■HTTP

WWW ページのデータは、 WWW サーバ ( httpd ) が保存している。 WWW クライアント(ブラウザ)は、WWW サーバから WWW ページのデータを取り寄せる。

この時使われる通信プロトコルをHTTP ( Hyper Text Transfer Protocol ) という。

WWW サーバには何種類もある。 情報学類で使っている WWWサーバのプログラムの名前は、Apache

◆HTTPによるクライアントとサーバの間の通信

WWW のクライアント(普通はWWWブラウザ)からの要求は、 HTTP によりサーバに伝えられる。

図? Firefox,HTTP 要求,Apache,ファイル、HTTP 応答

図? Firefox と Apache の通信

Apache は、起動時に設定ファイルを読み込み、要求を待つための TCP/IPのポートをいくつか(標準ではポート番号80番)を 作成し、クライアントから TCP/IP で通信要求が送られてくるのを待っている。

coins では、www.coins.tsukuba.ac.jp (orchid-nwd.coins.tsukuba.ac.jp) と いうコンピュータでApache が動作している。 ssh で遠隔ログインして、設定やログを見ることができる。

◆HTTPの要求

プロトコルは、実際には比較的簡単である。 よく使われるクライアントからサーバに送られる要求 ( メソッド(method) ) は、2種類だけ。 例:次のような URL のページをアクセスする。
http://www.domain/dir1/file1.html
クライアントは、URL のうちのホスト部分を抜きだし、これと標準の 80ポート番号(80)を使って、TCP/IP のコネクションを張る。

クライアントは、HTTP で次のような要求を送る。

GET /dir1/file1.html HTTP/1.0[←]
[←]
([←] (Return, Enter)は、2つ必要。)

◆ファイルとの対応

WWWサーバは、普通は、このファイルは、あるディレクトリを起点にしたファ イル名になっている。 この起点となるディレクトリを ドキュメント・ルート・ディレクトリ(document root directory) という。 このディレクトリは、Apache では、標準で次のようになる。
/usr/local/apache/htdocs/

coins では、/var/www/htdocs/

上の GET 要求に相当するファイルは、次のファイルになる。

/usr/local/apache/htdocs/dir1/file1.html
/var/www/htdocs/dir1/file1.html    (coinsの場合)

◆応答

Apache は、このファイルを開き、内容を読み込む。そして、こ の内容を、HTTP の応答(response)として、クライアントに返す。
HTTP/1.1 200 OK
Date: Thu, 01 Feb 2007 17:00:35 GMT
Server: Apache/2.0.55 (Unix) PHP/4.4.2
Accept-Ranges: bytes
Connection: close
Content-Type: text/html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>情報学群 情報科学類・情報学類</title>
<META http-equiv="Content-Style-Type" content="text/css">
<META name="情報学群,情報学類,情報科学類,情報学,情報工学,情報科学">
<link href="./99_main.css" rel="stylesheet" type="text/css">
<link href="./99_top.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="wrapper-top">

<!-- header start -->
<div id="header">
<div id="header-left">
<a href="index.html">Home</a> <a href="./99_internus.html"><span class="door">学内向け情報</span></a> 
</div>
<div id="header-right">
<a href="./00_english.html">English</a>
</div>
</div>
...
</body>
</html>

◆ステータス、メタデータ、データ

HTTP の応答の第一行は、ステータス(成功か失敗かを表す)。 200 は、エラーがなく成功したという意味。

アクセスされた日付、データの日付、データの型と長さが現れる。 Content-Type:text/htmlならば、 HTML で書かれたページの意味。 インラインイメージなら、 なら image/gifimage/jpeg になる。

このような情報は、情報そのものではなくて、情報に関する情報という意味で メタ情報(メタデータ)という。

空行の後に、実際のデータが続く。

◆HTTP要求のオプション

HTTP の要求の最初の行は、必須のパラメタ(引数(ひきすう))で、 要求行(request line)と呼ばれる。 それに続き、付加的なパラメタ(オプション)を渡すことができる。

例:ブラウザは、テキストしか受け付けない。

GET /dir1/file1.html HTTP/1.0[←]
Accept: text/*
[←]
例:日本語と英語が受け入れ可能である
GET /dir1/file1.html HTTP/1.0[←]
Accept-Language: Japanese, en
[←]
例:ブラウザの種類は、FireFox
GET /dir1/file1.html HTTP/1.0[←]
User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; ja-JP-mac; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1
[←]

■電子メール

メールリーダ、配送プログラム、アクセスサーバ、

図? 電子メールの配送


Last updated: 2007/02/02 12:16:40
Yasushi Shinjo / <yas@is.tsukuba.ac.jp>