インターネット

情報システム概論 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章 ネットワークへの接続」参考。

■インターネット

◆TCP/IP

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

最終的に行っていることは、あるコンピュータのメモリから別のコンピュータ のメモリにデータをコピーしていることである。しかし、技術的な奥は深い。

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

プロトコル(protocol), 通信プロトコル(communication protocol)
通信を行う機器、コンピュータ、あるいは、プログラムの間でどのよう な手順で行うかを定めた規則
プロトコル・スタック
複数のプロトコルが積み重ねられ、 全体として層をなしていること。
層化プログラミング(layered programming)の考え方 層の考え方は、 オペレーティング・システム でも、現れる。

TCP/IPの4層モデル

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

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

◆データグラム

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

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

データグラム1,2,3,4の転送、2の再送

失われたデータグラムの再送

◆IPアドレス

IPのデータグラムには、IPアドレスが降られている。IPv4 で、32 ビット(4バ イト)、IPv6 で 128 ビット(16バイト)。

◆ホストとルータ

ホスト
ネットワークに接続されているコンピュータの中で、ネットワークに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で通信を行うプロセス は、システム・コールを通じて、カーネル内のプログラムを使う。

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

プロセス、TCP、IP、デバイスドライバ、NIC

カーネル内にあるTCP/IPのプログラム

◆動画像や音声のストリーミング配信

TCP/IPが提供する ストリーム転送サービス と、 動画像や音声のストリーミング配信とは直接的には関係ない。
通常(ストリーミングではない)の配信:
まず、データを保存したファイルをコピーする(データ全体をコピーする)。 コピーし終わってから、内容を読み出し、再生を開始する。
ストリーミング配信:
データの一部を受信した段階で再生を開始する。 データ全体のを受信しなくてもよい。 受信側にファイルが残らない(残させない)ことが一般的。

■DNS(Domain Name System)

通信相手の識別方法 人間が使う名前を 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 アドレスを使っても接続できる。 例:

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

■クライアントとサーバ

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

例:

コンピュータが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: 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/gifimage/jpeg になる。

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

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

■電子メール

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

図? 電子メールの配送

■関連科目

インターネットや物理層の通信については、3年生の専門科目「コンピュータ ネットワーク」や「メディア通信工学」で学ぶ。 TCP/IP を利用したプログラミングについては、「システムプログラム」、「分 散システム」などで学ぶ。
Last updated: 2008/02/07 18:32:36
Yasushi Shinjo / <yas@is.tsukuba.ac.jp>