システム・プログラム 電子・情報工学系 新城 靖 <yas@is.tsukuba.ac.jp>
このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~yas/classes/syspro-2003/2003-05-19
/nntp.html
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~yas/
http://www.is.tsukuba.ac.jp/~yas/index-j.html
表5 NNTPの応答
-------------------------------------------------------------------- 応答コード 説明 -------------------------------------------------------------------- 100 ヘルプのテキストが続く。 200 要求受け付け可能である(投稿可)。 201 要求受け付け可能である(投稿不可)。 205 通信路を切断する。 211 ニュース・グループが選ばれた。 記事の数、記事番号の上限、下限、ニュース・グループ名。 400 サービスを中断する。 411 そのようなニュース・グループがない。 421 もうそのニュース・グループには次の記事がない。 500 コマンドが認識できなった。 501 コマンドの文法に誤りがあった。 502 アクセスが制限されている。 --------------------------------------------------------------------以下に、telnet コマンドを利用して、NNTP サーバに接続した様子を示す。
ここで、強調で示した部分が、キーボードからのタイプである。 この例では、ホスト newshost のポート番号119(nntp)のポートに、 TCP/IPにより接続を試みている。2行目から4行目は、telnet コマンドによる 定型的な表示である。通信路が開設されると、サーバは、 "---------------------------------------------------------------------- % telnet newshost nntpTrying XXX.YYY.ZZZ.UUU ... Connected to newshost. Escape character is '^]'. 200 newshost InterNetNews NNRP server INN 2.3.1 ready (posting ok). help
100 Legal commands authinfo user Name|pass Password|generic
article [MessageID|Number] body [MessageID|Number] date group newsgroup head [MessageID|Number] help ihave last list [active|active.times|newsgroups|distributions|distrib.pats|overview.fmt|subscriptions|motd] listgroup newsgroup mode reader newgroups [YY]yymmdd hhmmss ["GMT"|"UTC"] [ ] newnews newsgroups [YY]yymmdd hhmmss ["GMT"|"UTC"] [ ] next post slave stat [MessageID|Number] xgtitle [group_pattern] xhdr header [range|MessageID] xover [range] xpat header range|MessageID pat [morepat...] xpath MessageID Report problems to . 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 コマンドが生成したメッセージである。
telnet コマンドを使って、NNTP サーバ jks-news にアクセスし、 ネットワーク・ニュースの記事を画面に表示させなさい。その記事のニュース・ グループ、ニュース・グループ内の番号、記事の先頭の20行程度を報告書に添 付しなさい。このとき、表4に示したコマンド、GROUP と ARTICLE を使うと よい。
注意すべきこととして、GROUP コマンドでは、ニュース・グループ名を一度に 与えることがあげられる。たとえば、comp.sys.mac というニュース・グルー プならば、次のように、一度に全部のニュース・グループ名を与える。
次のように、部分的に与えることはできない。GROUP comp.sys.mac
vin や mnews では、ニュース・グループを階層構造を持つものとして利用者 に提示している。しかしながら、NNTP のレベルにおいては、そのような階層 構造は存在しない。GROUP comp GROUP sys GROUP mac
その他の NNTP のコマンドを使ってみなさい。NNTP の定義は、RFC977 という ドキュメントにある。
NNTPサーバから記事を1つ得るプログラムを作りなさい。そのプログラムの名 前を、nncat とする。
nncat コマンドは、次のように3つの引数を与えて利用するものとする。
ここで、host は、NNTPサーバが動いているホストの名前、newsgroup は、ニュー ス・グループ、number は、記事番号である。NNTP プロトコルで用いられる標 準のポート番号は、119(nntp) である。getservbyname() で調べるとよい。-------------------------------------------------------------------- % ./nncat host newsgroup number--------------------------------------------------------------------
報告書には、作成した nncat コマンドの動作例を示しなさい。
NNTP では、本来、サーバからの応答を確認てから処理を進める必要がある。 この課題の範囲では、サーバからの応答を確認しないで命令を送ったとしても、 動作する可能性もある。
プログラムをつくる時には、行末の扱い(CR-LF)に注意し ないさい。