第六节 USENET新闻

网络新闻(net news)是一个世界范围的新闻组系统,也常被称为USENET。
起源于用uucp(unix to unix copy)程序进行文件传输的独立UNIX系统间的物理网。
USENET和因特网并非一回事,有些因特网站点是得不到网络新闻的,而另一些站点即使不在因特网上,也能收到网络新闻。
7.6.1 用户角度的USENET——可以被认为是某种高层次上的多点播送
新闻组:是一个关于特定论题的世界级论坛,对话题感兴趣的人可以登记为新闻组的订户,订户可以用特殊的用户代理(新闻阅读器),来读取投寄给新闻组的所有文章(消息)。
与收件人地址列表的内部实现完全不同!
特点:
每一篇“邮寄”给新闻组的文章都自动地投递给所有的订户;
邮寄时间取决于发件人与收件人之间的距离,典型的投递可能只需几秒。
因新闻组的数量庞大(可能超过10000),常将它们组织成层次结构进行管理。
表中是“正式”层次结构的最顶层,另外还存在其他一些分层结构,但它们主要是为了地区性消费或非英语语言的,如Alt。
Alt:相对于正式组织,是一个混乱的、无规则的、混杂的新闻组群,涉及许多主题,其中有些非常流行,大部分是世界范围的。
表中所列的每一类均可再细分为许多子类,并且继续细分下去。

新闻阅读器:在启动时检查某个文件,以确定这个用户是哪些新闻组的订户,然后在第一个新闻组中显示所有未读过文章的摘要,并等待用户有选择地阅读其中的一个或多个,一次显示一篇被选中的文章。
新闻阅读器的功能:
可以让使用者成为新闻组的订户或从中退出;
改变订阅:编辑一个描述该用户是哪些新闻组订户的本地列表文件。
处理“邮寄”,用户写完一篇文章后,使用一条命令或单击一个图标将它发送出去,仅在一天之内就能寄到所寄往的新闻组的所有订户那儿;
文章还可以被跨组投递(cross post),即能用一条命令发送到多个新闻组;
还可以限制“邮寄”的地理区域。
解决“不想收到的消息”:
一是从个人这一方,个人用户可以安装一个“否决文件(kill file)”,指明关于某一特定话题的,或从某人那儿发来的文章一到就被丢弃,不予显示;
二是从集体这一方,新闻组建立常见问题FAQ(Frequently Asked Question)文件来回答初学者的所有问题,维护者每月发布它们一到两次。
匿名转发人(anonymous remailer):接收或邮寄电子邮件消息,修改“发信人(from)”、“收信人(Sender:)”和“答复给(reply-To:)”等字段,使它们指向转发人,而不指向发送人。
7.6.2 USENET的实现
较小的新闻组:可以用收件人地址列表实现。
规模庞大的新闻组:用收件人地址列表实现,会导致服务器由于大量的电子邮件到来而崩溃,因而代之以每一站点(校园、公司或因特网服务供应商)在一个单独的目录下存储到来的函件,即无论有多少用户成为该新闻组的订户,每个站点只需一份新闻文章的拷贝,过期文章从磁盘上删除。
新闻组的两种工作方式:
想得到新闻的站点周期性地查询其新闻供给,询问自上次接触以来是否有新的新闻到来,如果有则将那些新闻收集起来,存储到news下合适的子目录下(最初);
新闻供给者在有足够多的新闻时进行初始化和建立联系。并非每一站点都能得到所有新闻组(现在)。
用有向图表示USENET:作为有向图节点接收网络新闻的所有站点的集合,连接一对节点的传输结构成有向图的弧,这个图就是USENET。
位于因特网上的节点既无必要也不必充分地位于USENET上。
并非每一站点都能得到所有新闻组!
首先,每天的新闻传送总量已超过500MB,而且仍在迅速增长,如果要存储所有的新闻将需要非常大的磁盘空间。
其次,传输时间和费用都是问题,用一条专用电话线在56Kb/s的速率下,要传送24小时的新闻需要20小时的时间。
(一)字段的描述
新闻消息的格式:与RFC 822电子邮件消息的格式一样,只是增加了RFC 1036中定义的新闻头部字段,不仅易于传输,而且与目前大量存在的电子邮件软件兼容。
例:
一篇简单的新闻文章
From:Vogel@nyu.edu
Messgae-ld:<5473l@nyu.edu>
Subject:Bird Sighting
Path:cs.vu.nl! EU.net! news.sprintlink.net! in2.uu.nit! pcl44.nyu.edu! news
Newsgroups:rec.birds
Followup-To:rec.birds
Distribution:world
Nntp-Postion-host:nuthatch.bio.nyu.edu
References:
Organization:New York University
Lines:4
Summary:Guess what I saw
From:Vogel@nyu.edu
Messgae-ld:<5473l@nyu.edu>
Subject:Bird Sighting
Path:cs.vu.nl! EU.net! news.sprintlink.net! in2.uu.nit! pcl44.nyu.edu! news
Newsgroups:rec.birds
Followup-To:rec.birds
Distribution:world
Nntp-Postion-host:nuthatch.bio.nyu.edu
References:
Organization:New York University
Lines:4
Summary:Guess what I saw
Subject字段:把讨论的线索联系在一起,提供给用户一条命令用以在现在的主题上浏览下一篇文章,而非显示下一篇文章;另外否决文件和否决命令利用这一字段了解要拒绝什么文章。
Path字段:是消息从发件人到收件人中间所经过的节点清单,在每一段传输中,转发机器将自己的名字添加于清单头部,这个清单给出了一条返回发送者的路径。
感叹号:是指USENET地址。
Newsgroup字段:消息送往的新闻组,可能包含不止一个新闻组的名字,任何跨组发布的消息在该字段中将包含所有要送往的新闻组的名字。
Followup-TO字段:由于Newsgroup字段允许填多个名字,需要告诉人们应将评论和反映发送到哪儿,以便随后的讨论只在某个确定的组内进行。
Distribution字段:说明了传播消息的地理范围,可能包含一个或多个国家、州的编号,一个特定的地区或网络名称,或全世界范围。
Nntp-Posting-Host字段:与RFC 822的Sender字段类似,指出了真正发出这篇文章的机器,即使它是在另外一台机器上写成的。
Reference字段:指明这篇文章是对前面一篇文章的应答,并给出那篇文章的ID号,在开始新的讨论时则不能使用。
Organization字段:说明消息发送者所属的公司、大学或代理,填写这一字段的文章经常在文章末尾有一个否认声明,指出如果文章有误则并非该组织的过错。
(二)网络新闻传输协议NNTP(network news transfer protocol)
——文章在网络中传播的好方法
NNTP的两个设计目标:
使新闻文章在一条可靠的连接上(如TCP)从一台机器传送到另一台机器;
使不能收到新闻的台式机用户能在远程读到新闻。
新闻文章利用NNTP在网络上传播的两种通用方法:
新闻提取(pull),客户呼叫它的新闻供给之一,要求新的新闻;
新闻压入(push),新闻供给呼叫客户,并宣布它有新闻要发布。
几点说明:
客户和一个新闻供给在端口ll9上建立一个TCP连接,以得到最近的文章;
端口ll9后是NNTP守护进程,既可以始终等候客户,也可以在需要时创建;
TCP连接建立起来以后,客户和服务器间的通信是一系列命令和响应;
这些命令和响应用来确保客户得到所需要的文章,并且无论使用多少个新闻供给都没有重复。
主要用于新闻守护进程间移动文章的命令。

命令
含义
LIST
给出新闻组及文章的列表
NEWGROUPS 日期? 时间
给出在指定日期/时间后创建的新闻组
Group grp
列出grp中的所有文章
NEWNEWS grps 日期? 时间
列出在指定组中的新文章
ARTICLE id
给出指定的文章
POST
我有一篇文章,将它寄上
IHAVE id
我有文章id,你想要吗
QUIT
终止会话