ニュース・システム、WWW、NTP

分散システム

                                       電子・情報工学系
                                       新城 靖
                                       <yas@is.tsukuba.ac.jp>

このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~yas/coins/dsys-2004/2005-02-08
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~yas/
http://www.is.tsukuba.ac.jp/~yas/index-j.html

■ニュース・システムの仕組み

◆ネットワーク・ニュース

編集でカットされない、誰でもメッセージを発信できるという意味では、n対 nの通信。

◆ニュースシステムの設計目標

P2P (Peer to Peer) で、成功している例。

◆ニュースの記事の形式

Path: orchid-news.coins.tsukuba.ac.jp!gama.is.tsukuba.ac.jp!nadesico.cc.tsukuba.ac.jp!news-sv.sinet!news.ecc.u-tokyo.ac.jp!not-for-mail
From: committee@fj-news.org
Newsgroups: fj.news.lists,fj.news.group,fj.archives.documents
Subject: Active Newsgroups List of fj (2005/1/20)
Followup-To: fj.news.group
Date: 20 Jan 2005 14:12:06 +0900
Organization: fj Newsgroups Management Committee
Lines: 1105
Sender: kuno@ux101.ecc.u-tokyo.ac.jp
Approved: committee@fj-news.org
Message-ID: <active-newsgroups.part1.20050120@fj-news.org>
Reply-To: committee@fj-news.org
NNTP-Posting-Host: ux101.ecc.u-tokyo.ac.jp
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-2022-jp
X-Trace: news.ecc.u-tokyo.ac.jp 1106197659 22382 133.11.50.145 (20 Jan 2005 05:07:39 GMT)
X-Complaints-To: usenet@news.ecc.u-tokyo.ac.jp
NNTP-Posting-Date: Thu, 20 Jan 2005 05:07:39 +0000 (UTC)
User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.3.50
Xref: orchid-news.coins.tsukuba.ac.jp fj.news.lists:1093 fj.news.group:583 fj.archives.documents:183


Archive-name: fj-news/active-newsgroups/part1
Original-author: saitoh@ics.es.osaka-u.ac.jp (SAITOH akinori)
Last-change: 2004/11/09 by miya@fairyring.org

fjのニュースグループの一覧とその解説

・現在 fj にあるニュースグループ 411 個の名前と説明文です。

・この文書は「JUNET利用の手引 (第1版)」に由来するもので、
  現在はfjニュースグループ管理委員会(committee@fj-news.org)が
  維持管理を担当しています。

  出所 (題名と日付) を明示する限りにおいて、引用、転載、複製等は、
  著作者等に断りなしに、自由におこなって構いません。
  文書の一部を他の著作物に流用する等の利用は、完全に自由とします。
・・・

◆記事のヘッダ

Newsgroups:
ニュース・グループ
From:
差出人の電子メールアドレス
Subject:
記事の題名(題目、表題)。
Date:
記事が書かれた日付
Message-ID:
メッセージ識別子。その記事に対して世界中で重複がないように付けられた文字
Path:
記事が通過したサーバ。

◆ネットワーク・ニュースの記事の配送の仕組

図 ネットワーク・ニュースの記事の配送の仕組
図 ネットワーク・ニュースの記事の配送の仕組

サーバ NNTP

◆NNTP

NNTP(Network News Transfer Protocol) とは、ネットワーク・ニュースの記 事の転送や、記事の読み書きを行うためのプロトコルである。mnews や GNUS などのネットワーク・ニュースを読み書きするソフトウェアは、クライアント として NNTP サーバとの間に TCP/IP による通信路を開設する。そして、クラ イアントは、記事を要求する文字列や、ニュース・グループの一覧を要求する コマンドをサーバに送る。これに対してサーバは、要求された記事やニュース・ グループの一覧をクライアントに返す。表4に、クライアントからサーバへ送 られるNNTPのコマンド、表5に、サーバからクライアントへ返される応答を示 す。

表4 NNTPのコマンド

--------------------------------------------------------------------
GROUP	ニュース・グループ名
	ニュース・グループを選択する。結果として、記事の数、記事の番号
	の上限と下限が返される。

ARTICLE 記事番号
	その記事の内容を得る。ニュース・グループが選択されている状態の
	時に使える。

ARTICLE 
	メッセージIDの記事の内容を得る。
LIST
	ニュースグループの一覧を得る。
HELP
	ヘルプ・メッセージの表示
QUIT
	終了
POST
	記事を投稿する。
--------------------------------------------------------------------

表5 NNTPの応答

--------------------------------------------------------------------
応答コード	説明
--------------------------------------------------------------------
100		ヘルプのテキストが続く。
200		要求受け付け可能である(投稿可)。
201		要求受け付け可能である(投稿不可)。 
205		通信路を切断する。
211		ニュース・グループが選ばれた。
		記事の数、記事番号の上限、下限、ニュース・グループ名。
235		記事の転送は成功した。
335		記事を送れ。最後は、CR-LF . CR-LF 。
400		サービスを中断する。
411		そのようなニュース・グループがない。
421		もうそのニュース・グループには次の記事がない。
435		その記事は欲しくない。(もう既に受け取っている)
436		転送に失敗した。後でもう一度転送しB$iて欲しい。
437		転送に失敗した。もう転送するな。
500		コマンドが認識できなった。
501		コマンドの文法に誤りがあった。
502		アクセスが制限されている。
--------------------------------------------------------------------

以下に、telnet コマンドを利用して、NNTP サーバに接続した様子を示す。 telnet $NNTPSERVER 119 group fj.news.lists article 423 quit
% telnet $NNTPSERVER 119 [←]
Trying 130.158.86.3...
Connected to orchid-c.coins.tsukuba.ac.jp.
Escape character is '^]'.
200 orchid-news.coins.tsukuba.ac.jp InterNetNews NNRP server INN 2.3.1 ready (po
sting ok).
group fj.news.lists[←]
211 5 1088 1095 fj.news.lists
article 1093[←]
220 1093 <active-newsgroups.part1.20050120@fj-news.org> article
Path: orchid-news.coins.tsukuba.ac.jp!gama.is.tsukuba.ac.jp!nadesico.cc.tsukuba.ac.jp!news-sv.sinet!news.ecc.u-tokyo.ac.jp!not-for-mail
From: committee@fj-news.org
Newsgroups: fj.news.lists,fj.news.group,fj.archives.documents
Subject: Active Newsgroups List of fj (2005/1/20)
Followup-To: fj.news.group
Date: 20 Jan 2005 14:12:06 +0900
Organization: fj Newsgroups Management Committee
Lines: 1105
Sender: kuno@ux101.ecc.u-tokyo.ac.jp
Approved: committee@fj-news.org
Message-ID: <active-newsgroups.part1.20050120@fj-news.org>
Reply-To: committee@fj-news.org
NNTP-Posting-Host: ux101.ecc.u-tokyo.ac.jp
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-2022-jp
X-Trace: news.ecc.u-tokyo.ac.jp 1106197659 22382 133.11.50.145 (20 Jan 2005 05:07:39 GMT)
X-Complaints-To: usenet@news.ecc.u-tokyo.ac.jp
NNTP-Posting-Date: Thu, 20 Jan 2005 05:07:39 +0000 (UTC)
User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.3.50
Xref: orchid-news.coins.tsukuba.ac.jp fj.news.lists:1093 fj.news.group:583 fj.archives.documents:183
<中略>
.
quit[←]
205 .
Connection closed by foreign host.
% []
ここで、強調で示した部分が、キーボードからのタイプである。 この例では、ホスト $NNTPSERVER のポート番号119(nntp)のポート に、TCP/IPにより接続を試みている。続く3行は、telnet コマンドによる定 型的な表示である。通信路が開設されると、サーバは、"200" という応答を返している。これは、NNTP で定義されている応答であり、サー バが、要求を受け付け可能であり、かつ、要求としては投稿要求(POST)も受 け付けることを意味している。"200" 以降の文字列は、コメン トである。

接続されると、"group" というコマンドをサーバに送っ ている。これに対して、サーバは、"211" という応答に続けて、 記事の数、記事番号の上限、下限、ニュース・グループ名を送っている。

次に "article" コマンドを送っている。これによ り記事が転送されている。記事の最後には、"." からなる行が ある。これが、articleコマンドに対する応答の終 りを示している。

最後に "quit" というコマンドをサーバに送ってい る。これにたいして、サーバは、205 という応答を返し、続いて TCP/IP の通 信路を切断している。その下の Connection closed... は telnet コマンドが生成したメッセージである。

参考

NNTP は、現在改定作業中。 http://www.ietf.org/ids.by.wg/nntpext.html

◆INN newsfeed

ME:!*/!local::
orchid-news.coins.tsukuba.ac.jp/orchid-news.coins.tsukuba.ac.jp:campus.*,coins.*,comp.*,denjo.*,fj.*,gnu.*,news.*,okinawa.*,tnn.*,tsukuba.*:Tm:innfeed!
news.ie.u-ryukyu.ac.jp/ie.u-ryukyu.ac.jp:fj.*,okinawa.*:Tm:innfeed!
nadesico.cc.tsukuba.ac.jp/nadesico.cc.tsukuba.ac.jp:comp.*,sci.*,rec.*,news.*,soc.*,talk.*,misc.*,fj.*,gnu.*,tsukuba.*,campus.*,tnn.*:Tm:innfeed!
news.esys.tsukuba.ac.jp/news.esys.tsukuba.ac.jp:coins.*,tsukuba.*:Tm:innfeed!
keknews.kek.jp/keknews:tsukuba.*:Tm:innfeed!
転送の様子
maple% telnet gama.is.tsukuba.ac.jp nntp[←]
Trying 130.158.80.241 ...
Connected to gama.is.tsukuba.ac.jp.
Escape character is '^]'.
200 gama.is.tsukuba.ac.jp InterNetNews server INN 1.5.1sec2 25-Jul-1997 ready
IHAVE  <YAS.98Feb2175819@is.tsukuba.ac.jp>
335
Newsgroups: denjo.test[←]
Path: is.tsukuba.ac.jp!gama.is.tsukuba.ac.jp!is.tsukuba.ac.jp!yas[←]
From: yas@is.tsukuba.ac.jp (Yasushi Shinjo)[←]
Subject: from maple[←]
Date: Mon, 2 Feb 1998 08:58:17 GMT[←]
Nntp-Posting-Host: hlla-gw[←]
Organization: Institute of Information Sciences and Electronics, University of[←]
Tsukuba[←]
Sender: news@is.tsukuba.ac.jp (News Manager)[←]
Message-ID: <YAS.98Feb2175819@is.tsukuba.ac.jp>[←]
Lines: 2[←]
[←]
fake Path: gama.is.tsukuba.ac.jp!is.tsukuba.ac.jp!yas[←]
1998/02/02 17:58:13[←]
.[←]
235
QUIT[←]
205 .
Connection closed by foreign host.
maple% []

◆故障への対応

サーバやネットワークが落ちることがある。 核攻撃が無くても落ちる。

冗長リンクを持つと、同じ記事が複数の隣接するサーバから送られて来る。

◆冗長のリンク

図? 冗長リンクを含むニュースの配送

図? 冗長リンクを含むニュースの配送

◆記事の重複への対応(1)

履歴を利用する。
#gama[lib-news] 113# tail history
<19980131213101.QAA14061@ladder03.news.aol.com> 886406952~-~886282319   rec.collecting.sport.hockey/46595
<8E8622E.0015000738.uuout@venture.fipnet.fi>    886406953~-~886231080   comp.sys.ibm.pc.demos/3590
<34D57354.592B@pp.kolumbus.fi>  886406953~-~886403924   comp.sys.ibm.pc.games.action/24913
   886406953~-~886282077   control/403867
<01bd2b53$921e9680$LocalHost@santotan>  886406953~-~886282077
<6b3s6k$85k$1@talia.mad.ibernet.es>     886406953~-~886403962   comp.sys.ibm.pc.games.flight-sim/52150
<34cd5ecb.20149236@nntp.best.com>       886406953~-~885929344   rec.arts.sf.tv.babylon5.moderated/10108
<34d4eeb3.2546651@news.txdirect.net>    886406953~-~886370114   rec.backcountry/9841
  886406954~-~885923414   misc.fitness.weights/21696
<6b3s8r$dp0@sjx-ixn5.ix.netcom.com>     886406954~-~886404085   comp.sys.ibm.pc.games.flight-sim/52151
#gama[lib-news] 114# ls -l history*
-rw-rw-r--   1 news     110490739 Feb  2 17:09 history
-rw-rw-r--   1 news          122 Feb  2 17:14 history.dir
-rw-rw-r--   1 news      8294372 Feb  2 17:09 history.pag
#gama[lib-news] 115#
同じ記事を送ろうとしたとき。
maple% telnet gama.is.tsukuba.ac.jp nntp[←]
Trying 130.158.80.241 ...
Connected to gama.is.tsukuba.ac.jp.
Escape character is '^]'.
200 gama.is.tsukuba.ac.jp InterNetNews server INN 1.5.1sec2 25-Jul-1997 ready
Trying 130.158.80.241 ...
Connected to gama.is.tsukuba.ac.jp.
Escape character is '^]'.
200 gama.is.tsukuba.ac.jp InterNetNews server INN 1.5.1sec2 25-Jul-1997 ready
IHAVE  <YAS.98Feb2175819@is.tsukuba.ac.jp>
435 Duplicate
QUIT[←]
205 .
Connection closed by foreign host.
maple% []

◆記事の重複への対応(2)

Path: の利用 図? 冗長リンクを含むニュースの配送

Aで投稿された記事が、B,C,Dを通って E までやってきた時には、Path: には、通ってきたニュースのサイトの名前が入る。

Path: E!D!C!B!A!username
サイト E のサーバは、この記事は サイト A を通ったと判断し、その記事を サイト A には送らない。

実際の Path: の例。

Path: gama.is.tsukuba.ac.jp!is.tsukuba.ac.jp!hagi!chiba-ns!odins-suita!news.cs.ritsumei.ac.jp!nf2.spnet.ne.jp!nf1.spnet.ne.jp!news.hits.ad.jp!spinnews!spin-hsd0-tky!news-relay.jpn!hpujjpo!hpscit.sc.hp.com!sdd.hp.com!vixen.cso.uiuc.edu!logbridge.uoregon.edu!hammer.uoregon.edu!cs.uoregon.edu!news.nero.net!takikawm
From: fj-committee@cow.nara.sharp.co.jp
Newsgroups: fj.news.lists,fj.news.group,fj.archives.answers
Subject: Active Newsgroups List of fj (1998/1/15)
Date: 16 Jan 1998 01:18:53 GMT
Organization: Fj Newsgroups Management Committee
Lines: 1033
Message-ID: <fj.active.newsgroups.19980115@cow.nara.sharp.co.jp>
References: <fj.active.newsgroups.19971228@cow.nara.sharp.co.jp>

◆制御メッセージ(Control Message)

Path: gama.is.tsukuba.ac.jp!is.tsukuba.ac.jp!hagi!ume!igakukei!news.cs.ritsumei.ac.jp!kuis-news!kuee-news!tamaru-news!Q.T.Honey!news.hbl.or.jp!news.ksi.co.jp!spinosk!threeWeb-news!nf2.iij.ad.jp!nr0.iij.ad.jp!news.iij.ad.jp!newsgw.yokohama.tao.or.jp!news.yokohama.tao.or.jp!citron!miyano
From: fj-committee@cow.nara.sharp.co.jp
Newsgroups: fj.rec.trading-cards
Subject: cmsg newgroup fj.rec.trading-cards
Control: newgroup fj.rec.trading-cards
Date: 12 Jan 1998 23:53:28 GMT
Message-ID: <newgroup.fj.rec.trading-cards.19980113@cow.nara.sharp.co.jp>

For your newsgroups file:
fj.rec.trading-cards	Topics and discussions on trading-cards

◆よく使われるコントロール・メッセージ

--------------------------------------------------------------------
名前
--------------------------------------------------------------------
cancel <message-id>	記事のキャンセル
newgrop groupname [moderated]
			ニュース・グループの作成
rmgroup groupname	ニュース・グループの削除
checkgroups		activeファイルの確認
ihave	systemname	送りたい記事のリスト
sendme	systemname	送って欲しい記事のリスト
sendsys			sysファイルの転送要求
version			ニュース・システムのバージョンの転送
--------------------------------------------------------------------

◆問題点

ニュース・システムは、権限のない制御メッセージに弱かった。

◆ディジタル署名

送られてきたメッセージが送信者本人のものであることを識別・確認する。

◆ディジタル署名つきのコントロール・メッセージ

Path: bounce-back
From: committee@fj-news.org (Fj Newsgroups Management Committee)
Newsgroups: fj.comp.dev.pc-card
Subject: cmsg newgroup fj.comp.dev.pc-card
Control: newgroup fj.comp.dev.pc-card
Approved: yas@is.tsukuba.ac.jp
Message-ID: <newgroup.fj.comp.dev.pc-card.19990112@fj-news.org>
Date: Tue, 12 Jan 1999 07:12:37 -0000
Lines: 26
X-Info: ftp://ftp.isc.org/pub/pgpcontrol/README.html
	ftp://ftp.isc.org/pub/pgpcontrol/README
X-PGP-Sig: 2.6.3ia Subject,Control,Message-ID,Date,From,Sender
	iQCVAwUBNpr16hf4TH9gf12pAQHabwP/SLnIuV26QMrAB6EdSahCzHniDvlmwjWB
	EXbPine+y0zcoSWYtj0h1ZBuY9HTV8h/Y3WMGEbsZ7UTDrK8HKYh3agEB1ZRQEe8
	jY3Ya1WCTk8ht7WGqf6mfihJB9pyXy2tkTLjaJ3CwjyQ/OGx+Ogo+4kr1oZeJ/Vt
	pC9OH+/G0CI=
	=KxP+

For your newsgroups file:
fj.comp.dev.pc-card	Discussion on PC Card(JEIDA/PCMCIA Card).

◆まとめ

ニュース・システムに見られる分散システム構築の技術

■WWW (World Wide Web)

分散システムとして見た時には、あまり面白くない。

特徴

なぜ木構造やハイパーテキストを使うのか。その利点、問題点はどこにあるの か。

参考

総合科目「IT革命を解き明かす」/木構造
http://www.hlla.is.tsukuba.ac.jp/~yas/gen/it-2004-10-04/

1学期のシステムプログラムにある HTTP の簡単な説明
http://www.coins.tsukuba.ac.jp/~yas/coins/syspro-2004/2004-04-26/http.html

◆WWWサーバの負荷均衡

アクセスが集中すると、1台のサーバで処理できない/ 1個所にネットワークで処理できなくなる。

サーバのコピーを世界中に置く(複製(replication))。

コピーの選択方法。

サーバのダウンした時、自動的に生きているものに接続できるか。

◆WWW Proxy

クライアント、Proxy、WWWサーバ、キャッシュ

図? クライアント、Proxy、WWWサーバ、キャッシュ

設定によっては、WWW ブラウザは、直接 WWW サーバに要求を送らずに、Proxy サーバに要求を送る。 proxyとは、「代理」の意味。

WWW Proxy の利用目的

◆空間と時間の変換

キャッシングの意味 時間的に得をするのは、同じデータをもう一度使う場合だけ。1度しか使わな いなら、時間でも損。

WWWでのキャッシュのヒット率は高くはない。40%くらい。

◆クッキー

cookieは、コンピュータ・サイエンスの専門用語。

協調して動作しているプログラムの間で、ある一連の作業を識別するための数 を意味する。

RPC、HTTP(WWW)で使われる。

◆NFS/RPC での cookieの利用

ディレクトリの読み込み手続き nfsproc_readdir() で、ディレクトリのどの 位置まで読み込んだかを示すために使われている。

NFS が利用している SunRPC では、UDP/IP実装の制限から最大のメッセージの 長さが決まっている。上限を越えるディレクトリを読み込む場合、1回のRPC で終らない。

/usr/include/rpcsvc/nfs_prot.x:


/*
 * Arguments to readdir
 */
struct readdirargs {
        nfs_fh dir;             /* directory handle */
        nfscookie cookie;
        unsigned count;         /* number of directory bytes to read */
};
struct entry {
        unsigned fileid;
        filename name;
        nfscookie cookie;
        entry *nextentry;
};

struct dirlist {
        entry *entries;
        bool eof;
};

union readdirres switch (nfsstat status) {
case NFS_OK:
        dirlist reply;
default:
        void;
};

                readdirres
                NFSPROC_READDIR(readdirargs) = 16;

nfsproc_readdir() の1回目と2回目の RPC の間にディレクトリの内容が更 新された場合、どのような結果になるのか予想できない。

◆WWWでのcookie

WWW(World Wide Web)では、1回のデータ転送ごとに通信路が切断される ので、通常はWWWのブラウザ(クライアント)とWWWサーバの間では、途 中経過を保持することができない。

途中経過を保存したい時:

WWWで途中経過を保存するためには、cookie が使われる。

サーバは、その情報を利用して、適切なページ(たとえば前回最後に訪れたペー ジ)を表示させるようにすることができる。

◆WWW cookieの例(RFC2965より)

User Agent は、WWW ブラウザと思ってよい。
4.  EXAMPLES

4.1  Example 1

   Most detail of request and response headers has been omitted.  Assume
   the user agent has no stored cookies.

      1. User Agent -> Server

        POST /acme/login HTTP/1.1
        [form data]

        User identifies self via a form.

      2. Server -> User Agent

        HTTP/1.1 200 OK
        Set-Cookie2: Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"

        Cookie reflects user's identity.

      3. User Agent -> Server

        POST /acme/pickitem HTTP/1.1
        Cookie: $Version="1"; Customer="WILE_E_COYOTE"; $Path="/acme"
        [form data]

        User selects an item for "shopping basket".

      4. Server -> User Agent

        HTTP/1.1 200 OK
        Set-Cookie2: Part_Number="Rocket_Launcher_0001"; Version="1";
                Path="/acme"

        Shopping basket contains an item.

      5. User Agent -> Server

        POST /acme/shipping HTTP/1.1
        Cookie: $Version="1";
                Customer="WILE_E_COYOTE"; $Path="/acme";
                Part_Number="Rocket_Launcher_0001"; $Path="/acme"
        [form data]

        User selects shipping method from form.

      6. Server -> User Agent

        HTTP/1.1 200 OK
        Set-Cookie2: Shipping="FedEx"; Version="1"; Path="/acme"

        New cookie reflects shipping method.

      7. User Agent -> Server

        POST /acme/process HTTP/1.1
        Cookie: $Version="1";
                Customer="WILE_E_COYOTE"; $Path="/acme";
                Part_Number="Rocket_Launcher_0001"; $Path="/acme";
                Shipping="FedEx"; $Path="/acme"
        [form data]

        User chooses to process order.

      8. Server -> User Agent

        HTTP/1.1 200 OK

        Transaction is complete.

   The user agent makes a series of requests on the origin server, after
   each of which it receives a new cookie.  All the cookies have the
   same Path attribute and (default) domain.  Because the request-URIs
   all path-match /acme, the Path attribute of each cookie, each request
   contains all the cookies received so far.

◆WWW cookieとプライバシ

現在の Cookie の実現では、利用者のプライバシーを犯す危険性が高いという 問題が指摘されている。

普通のWWWサーバでは、要求を送ってきたコンピュータのIPアドレスを記 録しているので、コンピュータ単位でのアクセス状況を記録することはできる が、個人を特定することはできない。

クッキーを利用することにより、コンピュータではなくどの個人がアクセスし てきたかを記録することができる。

クッキーから電子メールのアドレスや氏名まで調べることはできない。 しかし、インターネットをサーフしている間にどこかでそれを打ち込んだが最 後、クッキーと電子メール・アドレスや氏名との対応が記録されてしまう危険 性がある。

参考

RFC2965 HTTP State Management Mechanism
Netscape社によるWWWにおけるクッキー実現の案
http://wp.netscape.com/newsref/std/cookie_spec.html

■物理クロック

◆論理クロックと物理クロック

論理クロック
内部で一貫性がとれていればいい
物理クロック
実際の時計と大きくずれていてはいけない

◆物理クロック同期の応用

◆物理クロックの基準

太陽
地球の公転、自転は一定ではない。ふらつきがある。 だんだん1日が長くなってきている。
原子時計
セシウム133が 9,192,631,770 回振動。実際の日とずれる。
UTC (Universal Coordinated Time)。
閏秒で調整。

◆物理クロックを合わせる方法

GPS の普及で、正確な時刻が簡単に取り出せるようになった。 NTP (Network Time Protocol) がよく使われる。

まず古い方法から。

◆Sun rdate

初期の方法。rdate コマンドで特定のホストに合わせる。
% rdate orchid-a [←]
問題点

◆adjtime(2)

Unix のシステムコール。進みすぎたクロックを逆行させて戻す変わりに、ペー スを落とす。

int adjtime(const struct timeval *delta, struct timeval *olddelta)

◆Cristianの方法

UTCを持っている時刻サーバに問い合わせる。
  1. T0: クライアントが要求を送る。
  2. I : サーバ内の割込み処理
  3. T1: クライアントが応答を送る。

図? 時刻サーバに問い合わせる

図? 時刻サーバに問い合わせる

単純な方法:クライアントの時刻を、送られた UTC に合わせる。

Cristianの方法は、応答メッセージの遅延時間を測定するものである。 転送時間や割込み処理の時間が不明な時には、次の式で転送時間を見積もり、 補正する。

サーバが1つなら、アルゴリズムとしては問題なし。しかし、次のような問題 がある。

◆The Berkeley Algorithm

マスタとスレーブがある。 単純に平均すると、嘘つきに弱い。 実際にクロックが100倍速く進むシステムがあった。

fault-tolerant average。 往復時間の誤差。

◆NTP(The Network Time Protocol)

サーバが木構造で構成される。レベルを stratum (ストレータム) と呼ぶ。レ ベルの値が小さいほど正確。Stratum 1 は、UTC の供給源に直接接続されてい る。原子時計やGPSなど。

図? NTP(Network Time Protocol)サーバのレベル(stratum)

図? NTP(Network Time Protocol)サーバのレベル(stratum)

同期方法

詳しい資料。

Coins Linux (RedHat) /usr/share/doc/ntp-4.0.99k/index.htm

設定ファイルは、/etc/ntp.conf にある。orchid-a とその他のホストの設定 が異なる。


Last updated: 2005/02/07 01:34:52
Yasushi Shinjo / <yas@is.tsukuba.ac.jp>