共通科目情報処理(上級)、インターネットの仕組み、2006年02月14日 電子・情報工学系 新城 靖 <yas@is.tsukuba.ac.jp>
このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~yas/ipe/inet-2005/2006-02-14
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~yas/
http://www.cs.tsukuba.ac.jp/~yas/
http://www.ipe.tsukuba.ac.jp/~yshinjo/
ネットワーク・ニュースのメッセージを読み書きするには、ニュース・リーダ と呼ばれるプログラムを使う。
ニュース・リーダの種類:
ネットワーク・ニュース(network news) あるいは、 ネットニュース(netnews) は、インターネットで「1対多の通信」を実現するための仕掛けの1つ。 Usenet と呼ばれることもある。 ネットワーク・ニュースでは、ある書き手が発したメッセージを、大勢の人が 読む。ネットワーク・ニュースでは、メッセージの事を新聞に たとえて「 記事(article) 」と呼ぶ。 1つひとつの記事は、電子メールと同じく、基本的にはテキストである。
図?は、ネットワーク・ニュースの記事が配送される様子を表わしている。
各LAN上のどれかのコンピュータでは、ネットワーク・ニュースのサーバ (NNTPサーバ) が動いている。そのサーバは、LAN内の他のコンピュータで動いているニュー ス・リーダからの要求に従って、自分が保存している記事を提供する。また、 投稿された記事や他のサーバから受け取った記事を、他のサーバへ転送する。 この時、サーバ間、および、サーバとニュース・リーダの間で使われる、 TCP/IP上の通信プロトコルは、 NNTP (Network News Transfer Protocol) である。
このように、ネットワーク・ニュースの記事はサーバ間で次々にコピーされる 形で伝わっていく。この時、世界中の数百万のサーバの中には、コピーに 失敗することがある。こういう現象を、「記事が落ちる」という。 また、コピーには、どうしても遅れか生じる。電子メールが1分もかからな いで届くような間でも、ネットワーク・ニュースの場合は、数時間はかかると こともある。また、途中のサーバが止まっていると、記事が落ちな いまでも、そこで何日か足止めされることがある。
ニュース・リーダ(news reader) は、ユーザと対話しながら、サーバから記事を取り寄せたりサーバに記事を送っ たりするプログラムである。
ネットワーク・ニュースでは、毎日膨大な量の記事が投稿されている。それ を保存するためのディスク容量には、限りがある。よって、記事は、あ る保存期間が過ぎると自動的に消されるようになっている。 これを、 エクスパイア(expire) するという。保存期間は、サーバによって異なるか、普通は2週間程 度である。
ネットワーク・ニュースの記事は、次のようなテキストです。
Newsgroups: fj.news.reader From: shiro@is.tsukuba.ac.jp (Shiro Yagi) Subject: E-Mail facility of news readers Date: Thu, 20 Mar 1997 00:55:50 GMT Organization: Institute of Information Sciences and Electronics, Univ of Tsukuba Message-ID: <SHIRO.02Mar20005550@is.tsukuba.ac.jp> こんにちは。白やぎです。 ニュース・リーダの電子メールも読み書き機能では、どれが便利一 番便利でしょうか。GNUS でも、メールが読めると聞いたのですけ れど。 ♪♪ 白やぎ ♪♪ http://www.is.tsukuba.ac.jp/~shiro/
ネットワーク・ニュースの記事の構造は、 電子メールと共通である。 電子メールもネットワーク・ニュースの記事も、空行で ヘッダ(header、頭) と 本文(body) にわかれる。
電子メールと共通のフィールド:
Newsgroups:
Followup-To:
Distribution:
記事は、
ニュース・グループ(newsgroup)
と呼ばれる仕組みを使って分類されている。世界中で1日に投稿される記事
は、数百万にもなる。それらの記事を全部読むことはできない。
ニュース・グループという仕組みを利用して記事を分類し、各自が興味を持っ
ている記事を簡単に見つけられるようにしている。
それぞれの記事のヘッダのNewsgroups:
フィールドには、その記事がど
のニュース・グループに属しているかが書かれている。
ニュース・グループには、次のように、「.」で区切られたアルファベット や数字などで名前が付けられている。
fj.rec.music
fj.comp.lang.c
ニュース・グループの名前は、英語で、かつ長いものは省略形で 付けられてる。
ニュース・グループの名前は、全体として、 木構造(tree structure) になっています。木構造が使われている理由は、 ファイルの名前付けや DNS (Domain Name System) と同様に、非常に多くのニュース・グループを扱えることによる。
ニュース・リーダの中でも、mnews
や vin
は、ユーザがニュー
ス・グループの木構造にそってニュース・グループを選んでいくことになる。
ニュース・リーダによっては、ユーザは、木構造をあまり意識せず、自分が
興味があるグループを自分が好きな順序で選んでいくことができるようになっている。
1つの記事は、普通、1つのニュース・グループにだけ現われる。記事を投 稿する時に、複数のニュース・グループに現われるようにすることを、 クロスポスト という。
よいニュース・リーダなら、クロスポストされた記事を見つけると、一度 だけユーザに提示し、別のニュース・グループでは既読として扱い、提示しな いという機能がある。クロスポストの機能を使わずに、同じ内容の記事を 複数のニュース・グループに別々に投稿することを マルチポスト という。マルチポストは、特別な場合を除いて、避けるべきである。い くら大事で有益な情報でも、何度も同じ記事を読むことを望む人はいない。
Distribution:
とは、
普通、記事が配られる範囲を制限する(小さくする)機能である。
配布範囲の例としては、
学内、社内、市内などが考えられます。典型的な使い方は、
たとえば、fj などのもともと世界区のニュース・グループに、学内に限定し
た話題を投稿する時に、配布範囲として「学内」を指定して投稿するというこ
とである。
特別な配布範囲:
local
world
配布範囲の機能は、現在の所、あまりうまく活用されていない。
多くの場合は、空のままでよい。配布範囲が空の場合、
world
という意味になる。
Subject:
や From:
を見て、その記事を読むかどうかを
決める。
ニュース・グループの中には、自分には興味がないものもある。ニュース・ リーダには、そのようなニュース・グループを、表示しない機能がある。 このことを、ニュース・グループを購読しない状態にするとか、 アンサブスクライブ(unsubscribe) するという。多くのニュース・リーダは、新しいニュース・グループを 購読する状態 ( サブスクライブ(subscribe) された状態 ) にする。ユーザは、興味があればそのままの状態にしておき、興味がなけれ ば、アンサブスクライブする。
1つのニュース・グループでは、各記事には、サーバが受け取った順に付けら
れた番号が付けられている。
記事番号
と呼ぶことがある。ニュース・リーダは、標準では、この記事番号の順番
に記事を提示する。Subject:
や、
スレッド
の順序で並べ変えて関連する話題を連続的に読めるように提示する機能がある
ニュース・リーダもある。記事番号、ニュース・サーバごとに異なる。
記事を参照する時には、 Message_ID:
を使う。
記事を書くには、記事の形式で説明 したようなテキストを作成し、サーバ・プロセスに渡すことになる。この 作業を、記事を投稿する、 あるいは、 ポストするという。
ネットワーク・ニュースの記事を投稿するのは、電子メールを出すことと非常
によく似ている。異なる点は、
電子メールの受取人の電子メールのアドレス(To:
)の代わりに、ニュー
ス・グループ名(Newsgroups:
)を指定する所、および、
配布範囲
(Distribution:
)を指定することである。
投稿された記事は、すぐには読めない。これは、効率のため、ある程度ため 込んでまとめて処理されるからである。うまく投稿されたかどうかを確認するに は、場合によっては10分〜15分ほど待つ必要がある。そして、1度 ニュース・リーダをを終了して、再び実行しなおすか、新着記事をチェックす る操作を行うと、見えるようになる。
ネットワーク・ニュースでは、記事を投稿する時に、他の人が書いた記事を引 用しつつ自分の意見を書き加える形で行なうことがよく行われる。この方法の 投稿ことを、 フォローアップ(followup) という。ネットワーク・ニュースの記事を読むと直ぐに気が付くように、 記事の大部分はフォローアップ記事である。どのニュース・リーダも、フォ ローアップ記事を簡単に投稿できるような機能を持っている。
記事をクロスポスト記事するには、
Newsgroups:
ヘッダに、ニュース・グループを「,」で区切りながら並べる。
また、クロスポストする時には、同時に
Followup-To:
を付け、以後の議論が続けたいニュース・グループを指定することができる。
これが付いた記事にフォローアップしようとすると、ニュース・リーダは、こ
こに指定されたニュース・グループをNewsgroups:
に設定する。
ネットワーク・ニュースでは、フォローアップで話を進めていくことが基本だが、 記事を書いた人に電子メールを出して詳しい話を聞いたり、 詳しい情報提供をしたりすることも行われる。 このことを、電子メールと同様に、 リプライ(reply) するという。
電子メールと違って、ネットワーク・ニュースでは、一度投稿した記事を 取り消すことができる。これを、記事を キャンセル(cancel)、きゃんせる するという。キャンセルできるのは、自分が投稿した記事だけである。 普通のニュース・リーダなら、キャンセルする機能があります。
記事は、保存期間が終ると消えるので、ネットワーク・ニュースの記事で、有 益なものを見つけた時には、ファイルに保存する必要がある。ニュース・ リーダでは、記事を保存する機能がある。
NNTPSERVER
)
が使われる。ポー
ト番号は、標準では 119 が使われるので、普通は、ホスト名だけを指定する。
ニュース・リーダの中には、119 以外のポート番号に接続できるものや、複数
のサーバに接続できるものもある。
サーバ・プロセスが動いているホストでは、直接、サーバが管理しているファ イルを参照して、記事を読むこともできる。NNTP が普及する前は、この方 法が一般的であった。現在では、自宅のパソコンでオフラインでニュースを読む時 にこの方法が使われることがある。 この場合、次のようなファイルやディレクトリが重要になる。
active
ファイル。
/usr/local/news/etc/active
や/usr/lib/news/active
という名前のファイルが使われることが多い。
/usr/local/news/spool/articles/
や
/var/spool/news/
という名前
がよく使われる。各記事は、このディレクトリ以下に、ニュース・グループ名
の「.
」「/
」に変えたディレクトリの下の
記事番号の名前のファイルに保存される。
表2 NNTPの応答
応答コード | 説明 |
---|---|
100 | ヘルプのテキストが続く。 |
200 | 要求受け付け可能である(投稿可)。 |
201 | 要求受け付け可能である(投稿不可)。 |
205 | 通信路を切断する。 |
211 | ニュース・グループが選ばれた。記事の数、記事番号の上限、下限、ニュース・グループ名。 |
235 | 記事の転送は成功した。 |
335 | 記事を送れ。最後は、CR-LF . CR-LF 。 |
400 | サービスを中断する。 |
411 | そのようなニュース・グループがない。 |
421 | もうそのニュース・グループには次の記事がない。 |
435 | その記事は欲しくない。(もう既に受け取っている) |
436 | 転送に失敗した。後でもう一度転送しB$iて欲しい。 |
437 | 転送に失敗した。もう転送するな。 |
500 | コマンドが認識できなった。 |
501 | コマンドの文法に誤りがあった。 |
502 | アクセスが制限されている。 |
% telnet newshost nntpここで、強調で示した部分が、キーボードからのタイプである。 この例では、ホスト newshost のポート番号119(nntp)のポートに、 TCP/IPにより接続を試みている。2行目から4行目は、telnet コマンドによる 定型的な表示である。通信路が開設されると、サーバは、 "Trying XXX.YYY.ZZZ.UUU ... Connected to newshost. Escape character is '^]'. 200 newshost InterNetNews NNRP server INN 2.3.1 ready (posting ok). help
100 This server accepts the following commands: ARTICLE BODY GROUP HEAD LAST LIST NEXT POST QUIT STAT NEWGROUPS HELP IHAVE NEWNEWS SLAVE Additionally, the following extention is supported: XHDR Retrieve a single header line from a range of articles. XHIST Retrieve history file. XMIME Control MIME article handling. Bugs to Stan Barber (Internet: nntp@tmc.edu; UUCP: ...!bcm!nntp) . quit
205 newshost closing connection. Goodbye. Connection closed by foreign host. %
![]()
200
" という応答を返している。これは、NNTP で定義されて
いる応答であり、サーバが、要求を受け付け可能であり、かつ、要求としては
投稿要求(POST)も受け付けることを意味している。"200
" 以
降の文字列は、コメントである。
第6行では、"help
" というコマンドをサーバに送っ
ている。これに対して、サーバは、"100
" という応答に続けて、
受け付け可能なコマンドなど、簡単な使い方を返している。23行目に
".
" からなる行がある。これが、1つのコマンドに対する応答
の終りを示している。
次に、24行において、"quit" というコマンドをサーバに送っている。これに たいして、サーバは、205 という応答を返し、続いて TCP/IP の通信路を切断 している。26行目は、telnet コマンドが生成したメッセージである。
メール・リーダとしての設定後、次のようする。
Unix サーバで動作する。
mnews
は、ユーザがニュース・グループの木構造にそってニュース・グ
ループを選んでいくタイプのニュース・リーダである。
mnews
では、ネットワーク・ニュースだけでなく、電子メールを読み
書きすることもできる。mnews
を電子メールの読み書きだけに使っ
ている人もいる。
mnews
を使うには、まず、Telnet (TeraTerm) でサーバに接続する。
次に、「icho% 」に対して、「mnews 」と打つ。
mnews を終了するには、何度か「q」キーを押す。
詳しい使い方:
保存した記事、および、その記事に対する批評(よい所、悪い所、賛成できる 所、反対な所)を、各自の掲示板のページに書きなさい。
ファイルに保存したファイルを、ページに対する添付ファイルで張りなさい。 Hiki の場合、「編集」の中で、添付ファイルの機能が使える。
Hiki の場合、添付ファイルを表示するには、次のような記述を入れる。
{{attach_view(filename.txt,学績番号-NetNews)}}または、次のようにしてリンクで参照する。
{{attach_anchor(filename.txt,学績番号-NetNews)}}
締め切りは、2006年2月28日月曜日 23:59:59 とする。
注意:記事を投稿する必要はない。
注意すべきこととして、GROUP コマンドでは、ニュース・グループ名を一度に 与えることがあげられる。たとえば、comp.sys.mac というニュース・グルー プならば、次のように、一度に全部のニュース・グループ名を与える。
GROUP comp.lang.ruby次のように、部分的に与えることはできない。
GROUP comp GROUP lang GROUP rubyvin や mnews では、ニュース・グループを階層構造を持つものとして利用者 に提示している。しかしながら、NNTP のレベルにおいては、そのような階層 構造は存在しない。
その他の NNTP のコマンドを使ってみなさい。NNTP の定義は、 RFC977 という ドキュメントにある。
Date: