情報システム概論 I
筑波大学 システム情報工学研究科
コンピュータサイエンス専攻, 電子・情報工学系
新城 靖
<yas@is.tsukuba.ac.jp>
このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~yas/coins/compsys1-2007/2008-02-07
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~yas/
http://www.cs.tsukuba.ac.jp/~yas/
URL を打ち込んでから Web ブラウザに表示されるまでどんな要素が働いてい
るか理解する。
Unix Super Text 上巻「第24章 インターネット」、「第25章 電子メール」、「第28章 World Wide Web」、
下巻「第83章 ネットワークへの接続」参考。
電子メールでもWWWでも、TCP/IPという仕組みを用いて通信を行っている。
この節では、TCP/IP の仕組みについて簡単に説明する。
大事な考え方には、次のようなものがある。
- プロトコル・スタック
- IPアドレス、ホスト、ルータ
- データグラム、ストリーム
- クライアントとサーバ
- DNS
最終的に行っていることは、あるコンピュータのメモリから別のコンピュータ
のメモリにデータをコピーしていることである。しかし、技術的な奥は深い。
- プロトコル(protocol), 通信プロトコル(communication protocol)
-
通信を行う機器、コンピュータ、あるいは、プログラムの間でどのよう
な手順で行うかを定めた規則
- プロトコル・スタック
-
複数のプロトコルが積み重ねられ、
全体として層をなしていること。
層化プログラミング(layered programming)の考え方
- 大きなプログラムを作るのは難しいので、
小さな部品に分解して開発する。
- 分解の方法として、通信分野では、層に分ける方法を採用している。
-
インターネットで通信する時には、1つのプロトコルだけではなく、最低でも
4つのプロトコルが必要になる。
層の考え方は、
オペレーティング・システム
でも、現れる。

TCP/IPにおけるプロトコル・スタック
- IP (Internet Protocol)
-
データグラム転送サービスを提供する通信プロトコル。
- TCP(Transmission Control Protocol)
-
IP の機能を利用して、信頼性のある双方向のストリーム転送サービスを提供す
る通信プロトコル
- 応用層のプロトコル
-
電子メール、World Wide Web などの
サービス毎に定められたプロトコル。
- 物理層のプロトコル
-
イーサネット、無線LANなど電気信号や電波でビットの並びを送り届けるためプ
ロトコル。
インターネットでは、大きなデータを小さなデータの断片(データグラム、
パケット)に分割して送る。
データグラム(datagram)は、データと電報(telegram)から作られた造語。
データグラムに分割することで、次のような利点がある。
- 大きなデータの一部が失われたり壊れたとしても、
その部分だけを再送すればよい。
- 複数人で使う時に効率よくネットワークが使える。
ある人が大きなデータを流しても、ネットワーク占有してしまうことはない。
- 複数の回線を束ねて高速化できる。1つの通信のデータグラムを複数の
回線にばらす。
- 最大長を定めたり、大きさを固定にすることで処理が簡単になる。
特にハードウェアで扱う時に。
- ルータが故障したり回線が故障した時に迂回できる。

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

ルータによるデータグラムの転送
ルータは、IPアドレスを見て、データグラムの送り先を判断する。
郵便局で、住所を見て、送り先を判断するのと似ている。郵便局は、一番末端
のもの(ポストから集配したり家に配ったりする)ではなくて、中間的な集配を
する郵便局がある。
同様に、ルータも、自分自信は、最終到達地点のコンピュータを知らなくても、
別のルータに送るだけのようなものもある。
ルータは、隣のルータや回線が故障した時には迂回路を探す。
迂回絽がなければ通信は途絶する。
ルータとルータは、どの回線やルータが生きているか、通信速度はどうなって
いるか等の情報を交換し会う。これらの情報を元に、各ルータは、受け取った
データグラムを次の最適の経路/ルータに送る。
「ストリーム」という言葉は、コンピュータでは様々な意味に使われる。
TCPが提供する「ストリーム転送サービス」の性質。
- データの送り手と受けての間に結合(connection,通信路)が作られる
- 複数回に分けて送り出したデータの順番が入れ替わることはないが、データの区切りは保存されない
- 送り出したデータが相手に届くようにする(途中で失われた時には、再
送する)
TCPで通信をする時に、通信相手を識別するにはIPアドレスと
ポート番号(port number)
が使われる。ポート番号は、16ビットの整数で、よく使われる
アプリケーション
(
サービス
)
には、あらかじめどの番号を使うかが決めらている。これを
well-knownポート番号(well-known port number)
という。

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がよく使われる。
イーサネット
- もともとはコピー機で有名な Xerox 社が開発したLANの仕組み。
IEEE (Institute of Electrical and Electronic Engineers,
アイトリプルイー) という学会に設置された委員会で標準化された。
委員会の名前は、IEEE 802.3。
- 通信速度としては、10 M, 100 M, 1 G, 10G 等の種類がある。
- 物理媒体は、同軸ケーブル(テレビのアンテナの引き込み線でも使われている)、
非シールドより対線(Unshielded Twisted Pair Cable)、
光ファイバが使われる。
無線LAN
- 主に免許が要らない周波数帯の電波を使う。
(以前は赤外線を使うもの使われていた。)
- 規格としては、IEEE 802.11b, IEEE 802.11g, IEEE 802.11a などがある。
イーサネットのデータグラムをそのまま流せる。
- 速度は、最大 11M bps から 54M bps 程度と言われているが、
実際にはそれほどは出ない。雑音や混信に弱い。
Wi-Fi (Wireless Fidelity, ワイファイ) は、アメリカの業界団体が無線LAN
の相互接続認定した機器。
TCP/IP のプロトコルに従って通信メッセージを作成するプログラムは、オペレー
ティング・システムのカーネルに含まれている。TCP/IPで通信を行うプロセス
は、システム・コールを通じて、カーネル内のプログラムを使う。
オペレーティング・システムのカーネルは、デバイス・ドライバを通じてネッ
トワーク通信を行うハードウェア(ネットワーク・インタフェース・カード)
を操作して通信メッセージを送受信する。

カーネル内にあるTCP/IPのプログラム
TCP/IPが提供する
ストリーム転送サービス
と、
動画像や音声のストリーミング配信とは直接的には関係ない。
- 通常(ストリーミングではない)の配信:
-
まず、データを保存したファイルをコピーする(データ全体をコピーする)。
コピーし終わってから、内容を読み出し、再生を開始する。
- ストリーミング配信:
-
データの一部を受信した段階で再生を開始する。
データ全体のを受信しなくてもよい。
受信側にファイルが残らない(残させない)ことが一般的。
通信相手の識別方法
- コンピュータにとって、数(整数)が便利。 IP アドレスがあれば十分。
- 人間は、数よりも、名前(文字列)が扱いやすい。
人間が使う名前を IP アドレスに変換して使う。

名前サービスの利用
DNS (Domain Name System)は、インターネットで使われている名前サービス。
基本的には、ホストの名前を IP アドレスに変換する。
例:
- ドメイン名
-
www.coins.tsukuba.ac.jp
- IPアドレス
- 130.158.80.244
(
130*256^3+158*256^2+80*256^1+244*256^0 == 2191413492
)
多くの場合、ドメイン名の代わりに IP アドレスを使っても接続できる。
例:
- Web ブラウザで http://www.coins.tsukuba.ac.jp/~yas/ を開く
- Web ブラウザで http://130.158.80.244/~yas/ を開く
- ssh で www.coins.tsukuba.ac.jp に接続する
- ssh で 130.158.80.244 に接続する
DNS では、膨大な数のホスト名を含む名前空間を階層的にドメイン(領域)に
分割して管理している。この空間の構造は、木構造と同じである。
インターネットで通信をプログラムを利用する時、
「クライアント」と「サーバ」という分けて考えることが多い。
例:
- ファイル・サーバ
- 名前サーバ
- WWWサーバ
- メール・サーバ
- クライアント・パソコン
コンピュータが1台しかない場合、プログラムは1つでよい。通信をする場合
には、プログラム(コンピュータ)が2つになる。そのうちの1つのプログラ
ム(またはコンピュータ)を、「クライアント」、もう1つを「サーバ」とい
う。
元々の意味
- クライアント(client)
- サービスを受ける方、顧客
- サーバ(server)
- サービス(service)を提供する方

図? サービスの授受によるクライアントとサーバの定義
サービスを提供する方は、1つのプログラム(コンピュータ)で複数の利用者
の面倒をみる。その結果、1台のサーバに複数のクライアントがつながる。
- クライアント
- 一人で使うもの
- サーバ
- 複数人で共有するもの

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

図? 通信のパタンからみたクライアントとサーバの定義
WWW ページのデータは、
WWW サーバ
(
httpd
)
が保存している。
WWW クライアント(ブラウザ)は、WWW サーバから
WWW ページのデータを取り寄せる。
この時使われる通信プロトコルをHTTP
(
Hyper Text Transfer Protocol
)
という。
WWW サーバには何種類もある。
情報科学類で使っている
WWWサーバのプログラムの名前は、Apache 。
WWW のクライアント(普通はWWWブラウザ)からの要求は、
HTTP
によりサーバに伝えられる。
図? Firefox と Apache の通信
Apache は、起動時に設定ファイルを読み込み、要求を待つための
TCP/IPのポートをいくつか(標準ではポート番号80番)を
作成し、クライアントから TCP/IP で通信要求が送られてくるのを待っている。
coins では、www.coins.tsukuba.ac.jp (orchid-nwd.coins.tsukuba.ac.jp) と
いうコンピュータでApache が動作している。
ssh で遠隔ログインして、設定やログを見ることができる。
プロトコルは、実際には比較的簡単である。
よく使われるクライアントからサーバに送られる要求
(
メソッド(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: Wed, 06 Feb 2008 08:40:51 GMT
Server: Apache/2.0.59 (Unix) PHP/4.4.7
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>
...
</body>
</html>
HTTP の応答の第一行は、ステータス(成功か失敗かを表す)。
200
は、エラーがなく成功したという意味。
アクセスされた日付、データの日付、データの型と長さが現れる。
Content-Type:
が text/html
ならば、
HTML で書かれたページの意味。
インラインイメージなら、
なら image/gif
や image/jpeg
になる。
このような情報は、情報そのものではなくて、情報に関する情報という意味で
メタ情報(メタデータ)という。
空行の後に、実際のデータが続く。
- 基本的にはテキスト(文字だけからなるデータ)を1対1で送る。
バイナリ・データは、文字に符合化される。
- 電子メールのアドレスには、ドメイン名が使われる。
メールを送る先を調べるのに使われる。
- メールリーダ(MUA, Mail User Agent)は、ローカルの配送プログラム
(MTA, Mail Transfer Agent) に送信を任せて終了する。
- 配送プログラム間の通信には、
SMTP (Simple Mail Transfer Protocol) が使われる。
一般に、送信側の配送プログラムがクライアント、受信側の
配送プログラムがサーバになる。
- 送られたメールは、ファイル(mail drop)に溜まる。
- mail drop をアクセスする方法には、何種類もある。
- ファイルを直接たたく
- POP (Post Office Protocol) 経由
- IMAP(Internet Message Access Protocol)経由
図? 電子メールの配送
インターネットや物理層の通信については、3年生の専門科目「コンピュータ
ネットワーク」や「メディア通信工学」で学ぶ。
TCP/IP を利用したプログラミングについては、「システムプログラム」、「分
散システム」などで学ぶ。
Last updated: 2008/02/07 18:32:36
Yasushi Shinjo / <yas@is.tsukuba.ac.jp>