D', 'bold'); ?>
Warning: Cannot modify header information - headers already sent by (output started at /mnt/168/sdb/8/c/beckyuser/forumdata/cache/style_1.php:42) in /mnt/168/sdb/8/c/beckyuser/viewthread.php on line 41
BeckyUser Forum - Becky!使用讨论区 - RFC977_网络新闻传输协议 - powered by Discuz!
 
» 游客:  注册 | 登录 | 统计 | 帮助

 

作者:
标题: RFC977_网络新闻传输协议 上一主题 | 下一主题
beckyer
管理员





积分 274
发贴 274
注册 2008-6-18
状态 离线
#1  RFC977_网络新闻传输协议

附件是rfc977的中文翻译,可以到下面两个网址看到其他的rfc中文
http://www.flord.net/node/5
http://www.cnpaf.net/class/RfcAll/
如果你用oe,可以考虑开启oe日志,看看oe在后台的操作。菜单-〉工具-〉选项-〉维护-〉疑难解答


附件内容:

组织:中国互动出版网(http://www.china-pub.com/
RFC文档中文翻译计划(http://www.china-pub.com/compters/emook/aboutemook.htm
E-mail:ouyang@china-pub.com
译者:彭江涛(spender   mailto:spender@yeah.net)
译文发布时间:2002-10-22
版权:本中文翻译文档版权归中国互动出版网所有。可以用于非商业用途自由转载,但必须保留本文档的翻译及版权信息。

网络新闻传输协议
一个被提议用于标准的以流为基础的新闻传送协议
备忘录
NNTP为一个企业(公司)通过互联网传输基于流的新闻文章,可以发布、调查、获得、传送新闻。NNTP设计的新闻服务器的内容被放置在中心服务器上,读者可以阅读自己选择的新闻。假如新闻中包含旧的新闻内容,索引机制将自动包括原来的消息。本RFC请求ARPA互联网组织讨论、通过并改进这一协议。
发表本备忘录不受限制。
1. 导论
多年以来,ARPA互联网组织支持数以千计的参与者发布公告、信息和最新的数据。我们共同查阅这些“新闻”。这些新闻组快速提供我们一些象软件错误处理、新产品预览、技术交流、程序员技巧等一些工作在计算机方面的专业人员高效的讨论。新闻组讨论在这些读者之间非常受欢迎。

有两种流行方法可以处理这些新闻。一种是互联网上通过邮件发放,另一种就是使用USENET新闻讨论系统。

1.1.互联网邮件列表
互联网上的公司通过使用邮件列表发布新闻。 有一个邮件列表包括邮件订阅者的邮件地址,所有订阅者可以阅读、回复。这些邮件列表给所有的邮件订户同样的内容拷贝。这些邮件列表当远方的订户成倍增长或者用户急速增长时,处理效果将非常低。分发这些分散的邮件到每个订户手中将占用很大数量的网络带宽、CUP资源和大量的目标主机磁盘空间。同时又一个重要的问题是维护邮件列表本身:比如订阅者更换了工作,一个新的订阅者到达,原来的订阅者丢失,造成主机服务疲于应对。
1.2. USENET 新闻组
明显的,一种值得开发的产品是大量的资源存储在中心服务器上,可以通过邮件订阅者的方式到达每个订户的邮箱中。USENET正是通过这种方式处理的。有一个中心数据库用来存放这些文章在一台主机上(通常按照类别分类),并且设置一个程序允许订阅者选择自己喜欢的内容阅读。假如新闻中包含旧的新闻内容,索引机制将自动包括原来的消息。
1.3. 中心存储新闻
        大量的主机连接到一起形成一个高速的局域网(象以太网),恰当的安排一台(或者少量)主机分发这些固定新闻,并且允许访问这些新闻文章通过服务器/客户方式。订户也许仅仅需要阅读自己喜欢阅读的文章,不必在每台主机上面为每个同样的拷贝浪费空间。
1.4. 中心新闻服务
有一种经济的方法是有一台控制计算机系统可以为局域网中的其它计算机提供这种新闻服务。这个服务器可以管理、收集这些新闻文章、索引。通过局域网,每个用户可以阅读指定的新闻。在一个大型的计算机网络中,为了磁盘空间考虑,这种方案显然是值得做的。同样的,这种做法可以为每个工作站参与新闻讨论工作而不必为有限的磁盘空间考虑。
我们听到一些传言,有的地方通过努力成功的处理这种集中新闻服务使用IBIS和其他的分布式文件系统共享方式。这种分布式文件系统可以为一个小型的计算机系统使用同样的操作系统提供可能,这种策划不能为更加普遍大量的计算机提供客户服务,特别是大量的客户端使用不同的操作系统。有少量的共享或网络文件系统可以提供基于互联网TCP普通的流服务考虑到了不同的硬件和不同的操作系统。
NNTP指定了一个可靠的流协议,通过TCP客户/服务器方式用于发布、查阅、取回、发表新闻文章。NNTP设计所有的新闻文章存储在一台电脑主机中(一般为中心服务器),其他主机上的订户通过网络流连接到新闻服务器上阅读新闻文章。
NNTP新闻文章样式在 RFC850中制定,描述了使用 USENET 新闻系统。无论如何,NNTP只需要少量的结构、内容存储新闻文章,并且确保其他非USENET系统简单易用。
典型的NNTP服务在主机上面作为一个后台进程运行,可以通过网络连接其他主机。这些工作可以很好地为一定数量的小型计算机系统(比如工作站、仅仅一个或者少量用户的主机)、大型控制系统提供服务。
1.5. 中介新闻服务
        一部分集团有很多的用户(比如大学或者大型的工业企业)使用中介新闻服务。这些中介新闻服务或“从动”服务在每个计算机系统中运行,并且可靠的负责新闻中介阅读请求和履行本地最近收到的新闻文章缓冲。
        典型为:一个客户试图获得新闻服务将首先连接本地新闻服务器端口,如果这种努力不成功,返回一个失败的提示,中介服务器将选择不允许访问其他服务器,或者允许访问连接中心“主”新闻服务器。
        在工作站或者其他小型系统中,直接连接主服务器是普通的选择方式。
        本说明书没有包括从动NNTP服务操作。我们仅仅建议那些从动NNTP服务器逻辑上挂接到NNTP主服务器以增强本地大型网络的功能。
1.6. 新闻分发
        NNTP提供命令简易命令方式用于交换合作主机之间的文章。主机可以连接本地或者其他高速网络,获得新闻文章副本。查找NNTP比传统的传送文件(比如UUCP)方法更加高效。
        传统的分发新闻的方法,新闻传播通过广播的方式从一台主机到另一台主机,所有主机将发布自己的新闻到其他主机。这些主机将转发这些新闻文章到网络中的其他主机。显然的,这些主机有可能接收到已经从其他主机接收到的重复信息,这将导致通讯资源的浪费,但是使用单方传输比使用交互式传输发布时间减少(比如Unix里面的UUCP), 通过发送所有文章并丢弃已接受的传书副本。这种有效的通讯会议被限制为每天一次。
        使用NNTP,主机交换新闻文章有一个交互机制来决定哪些新闻将被传送。主机期望最新的新闻、或者最近被发送的,将决定连接一个或多个相邻的NNTP。首先它使用 NEWGROUPS命令询问服务器是否有新的新闻组添加进来,如果有,这些恰当的或者希望的(通过规则已经在本地订阅的),这些新闻组将被创建。
        客户主机通过NEWNEWS命令询问主机有哪些新闻在所有或者特定的新闻组中到达。它将接收到一个服务器上面的文章列表,并且可以请求传送那些他喜欢的或者还没有的文章。
        最后,客户机可以告诉服务器这些新闻文章已经被客户机接收了。服务器显示这些文章已经被获取了备份,并且哪些文章已经被他收集。
        在这种方式中,只有那些没有被复制的文章才被希望获得的人接收。

2. NNTP说明书
2.1. 概论
        新闻组服务指定了通过这个文档使用流连接(比如TCP)和SMTP之类的命令和返回结果。它被设计用于连接服务器,规定一个简单的接口到新闻数据库。
        这个服务仅仅是一个连接程序与新闻数据库的接口,他不执行任何用户交互或者陈述级功能。这些“用户友好的”功能是为了客户程序工作的更好,让他们有一个更好的简单操作环境。
        当通过TCP协议连接时,连接得端口分配为119。
2.2. 字符代码
        命令和答复设置为使用ASCII码。当使用8位字节传输时,每7位字符进行向右填充并且高位被清除置为0。
2.3. 命令集
        命令由命定单词组成,有时候后面跟有参数。命令与参数之间必须用一个或多个空格(或者一个或多个Tab)分割,命令行所有参数必须完整,不允许包含多个命令。
        命令行和命令行参数并不区分字母大小写,也就是说,命令行可以是小写、大写或者大小写混合输入。
        每一个命令行必须以 CR-LF(回车-换行)结束。
        命令行不能超过512个字符长度,计算所有字符包括空格、分隔符、标点和CR-LF(也就是实际上仅仅允许510个字符),没有规定命令行的连接符(命令行不得跨行)。
2.4. 返回
        服务器答复有两种方法,文本方式和状态方式。
2.4.1. 文本返回
        文本仅仅发送在一个数字状态答复行后面,简单说明答复内容。答复文本为普通的文本格式,每一行由CR-LF结束。多行答复文本的最后一行为一个句号(.),表示答复文本结束。(例:服务器将发送.CR-LF表示最后一行,其他行以CR-LF结束)。
        如果文本内容包含句号最为行首的话,那么首句号将采用两个句号,因此,客户程序必须检测接收得到每一行的首字母,这些用句号开头的行是否为两个句号。
        显示文本消息的目的是用来在用户的终端上显示,这样的话,用户可以知道当前操作的命令状态,可以提示下一步如何做。
2.4.2. 状态返回
        有一个状态答复,汇报服务器从客户端接收的最后一条命令的执行结果。
        状态答复使用3位数字代码报告所有的答复状态。常常后面跟有文本答复。
        第一位数字返回命令执行是否成功、失败或者上次命令。
                1xx - 情报消息
                2xx - 命令完成
                3xx - 远程命令完成可以,发送结果
                4xx - 命令正确,但是由于某种原因不能执行
                5xx - 命令未执行、不正确、或者严重的程序错误
        第二位数字表示命令执行结果种类
                x0x - 连接,设置,多种消息
                x1x - 新闻组选择
                x2x - 文章选择
                x3x - 分发功能
                x4x - 投递
                x8x - 不标准的扩充(自行开发)
                x9x - 调试输出
        准确地返回代码应该为每一个命令扩充详细的命令描述。另外,下面普通返回代码将随时可能被接收。
        准确的返回状态包括数字和名称的参数,数字和这些参数类型描述了每一个返回代码的简单执行结果。
        参数用一个单空格分割数字和其他。所有数字参数为10进值,并且大部分由0开头。所有字符串参数由一个空格开始,并且以空白或者CR-LF结束。(字符串参数也许不是,里面可能包含空格),所有文本,即便要,必须用空格分割指定的参数指定返回结果。同样的,
注释文本在各个服务器上面执行的结果可能不相同。3为数字将决定服务器返回那些结果。
        返回代码没有制定为标准,主要是考虑到软件附加信息。这些信息一般以 x8x 形式表示(如上,注意调试码x9x是明确的提示信息),使用不标准的返回码,本标准禁止使用。
        我们提供调试返回码x9x。自从这些调试码被分类到“情报消息”以后,我们期望,返回码190到199用来提示各种不同的调试信息。虽然没有要求指定调试消息,但是如果提供连接流,它就必须提供返回代码。如果适当的指定一个执行,其他x9x代码也许被用于调试。(例如 用290 答复一个远程的调试请求)

2.4.3. 普通应答
        下面的列表是一个服务器发送的普通应答。没有指定给任何命令,但是可以返回连接的结果,失效或者其他没有用的信息。
        在普通应答中,代码1xx也许被期望的忽略或者显示;代码200或者201被NNTP服务器在最初包括参数时发送;代码400在服务器禁止服务时发送(比如操作请求);代码5xx表示命令由于某种原因不能被执行。
                100 help text
                190
                        through
                199 debug output
                200 server ready - posting allowed
                201 server ready - no posting allowed
                400 service discontinued
                500 command not recognized
                501 command syntax error
                502 access restriction or permission denied
                503 program fault - command not performed

3. 命令与回应细节
下面描述已经被公证了的NNTP服务器命令和相应的返回代码。
为了清晰,每个命令用大写字母显示。NNTP服务器并不对字母大小写敏感。其他参数一律采用小写字母,可选参数用方括号[、]包括。
本节介绍的所有命令必须为所有的NNTP服务器执行。
并没有禁止其他的附加命令;为了避免与后续修订版本的冲突,没有指定的自定义命令一律采用“X”开头的命令。
        另外,那些自定义的命令不允许重新定义返回代码,使用附加的返回代码同时也被禁止。
3.1 ARTICLE, BODY, HEAD与STAT命令
        有两种方式使用ARTICLE命令(与BODY,HEAD,STAT命令有关),每个使用不同方法的命令都可以接收到文章。当ARTICLE命令后面使用尖括号(<和>)作为参数时,第一种方法被使用;当使用数字作为参数或者没有参数指定,第二种方法被使用。
        文件文本内容将被返回,关于返回格式,在早期文档中有定义。
        HEAD和BODY命令与ARTICLE命令一样,不同的是,他们返回文章的标题行与内容。
        STAT命令与ARTICLE命令相似,不同的是它不返回文本内容。当选择了新闻组中的消息号码以后,STAT命令发送服务器设置文章指针。返回经过确认以后的消息编号,这也许是一些值。使用STAT命令可以选择消息正确的编号但是可疑的值,选择以后并不改变“当前文件指针”。
3.1.1.  ARTICLE (通过消息号码选择)
        ARTICLE <message-id>
        显示指定文件的文件头,一个空行,然后是文件正文部分。Message-id 是一个文章编号,它包括在文件头中。这是客户端希望获得的消息编号,可以通过NEWNEWS命令获得。提供引用的其他文章的消息编号,或者回复文章编号。(一个新闻内容可能为回复,译者注)
        请注意,这个命令不能改变包括在其中的“当前文章指针”,在阅读文章之间,这是两个包括在文章内部的引用其他文件标识。由于语义的不同而决定正确的阅读顺序。一个新闻可能引用其它新闻组的内容。
3.1.2 ARTICLE (通过选择数字)
        ARTICLE [nnn]
        显示指定文件的文件头,一个空行,然后是文件正文部分。可选项nnn是一个当前新闻组中的文章数字编号,数字编号不得超出文章总数量,如果超界,当前文章将被选择。
        如果正确的指定的参数nnn,包含在内部的“当前文章”指针将被设置。
        [以上两种使用ARTICLE命令的方法],当前文件编号,message-id串,后面的文章内容将在随后的内容中被回送。
        包括在尖括号(<和>)中的message-id串,是一个经过验证了的字符串,它来源于文章自身,在文章头部(RFC850中描述)中的message-id文件的支持信息。如果文章中不包括在文章头部,可以通过用尖括号包围0的方式简单的指定(<0>)。
        Message-id是一个唯一的文章编号,可以使用新闻阅读程序跳过具有相同Message-id的被投递了两次的文章或者在不同的新闻组中重复投递的文章。
3.1.3 返回
        220 n <a> article retrieved - head and boody follow (n 是文章编号,<a>为消息id)
        221 n <a> article retrieved - head follows
        221 n <a> article retrieved - body follows
        222 n <a> article retrieved - body follows
        223 n <a> article retrieved - request text separatele
        412 no newsgroups has been selected
        420 no current article has been selected
        423 no such article number in this group
        430 no such article fount
3.2. GROUP 命令
3.2.1. GROUP
        GROUP ggg
        参数ggg说明要选择的新闻组名称(如 net.news )。服务器上可用的新闻组名称可以使用LIST命令取得。
        如果成功地选择了新闻组,本命令返回新闻组中文章的第一个、与最后一个文章编号与估算的文章数量。虽然文章估计数量非常有用,但是并不是必需的。它必须大于或等于文章数量。(实际上一些操作可以准确计算文章的数量,也可以通过最有一个编号减去第一个文章编号得到一个估计值。)
        通过这个命令选择了有效的新闻组以后,内部文章指针被设置为本新闻组的第一个文章。如果选择的新闻组无效,以前选择的新闻组和当前文章编号继续保留。如果选择的新闻组为空的,当前文件指针将是一个不可确定的值。
        注意,新闻组的名字不区分大小写。它必须匹配通过LIST命令获得的新闻组名称,否则返回一个错误的结果。
3.2.2. 返回
        211 n f l s group selected (其中:n=估计文章数量,f=首文章编号,l=最后一个文章编号,s=新闻组名称)
        411 no such news group
3.3. HELP命令
3.3.1. HELP
        HELP
        提供服务器上可执行命令的简短说明,帮助信息以文本的方式返回,并且以句号作为帮助文本的结束符。
3.3.2. 返回
        100 help text follows
3.4 IHAVE命令
3.4.1. IHAVE
        IHAVE <messageid>
        IHAVE命令告诉服务器客户端有一个编号为<messageid>文章准备发送。如果服务器希望返回一个希望客户端发送文章的指令,如果服务器不需要这个文章(比如说,这个文章已经在服务器上面有)它将返回给客户端不需要这个文章。
        如果文章可以被发送,客户端可以发送整个文章,包括文章头部和文章体,以指定的文本格式发送。当文章发送完成以后,返回一个成功或者失败的结果。
        与POST命令不同的是,这个命令用于传输已阅读文章到其他主机。一般的,它不能被个人用的新闻阅读程序使用。特别情况下,这个命令将通过设置标志、选项等调用服务器上的投递程序用于转发新闻文章到其他主机。
        在服务器方面,如果测试文章信任度不够或者投递不能到达,将不投递或者转发文章。服务器将发送436或者437错误代码。
        如果由于新闻组设置、磁盘空间不足、文章长度限制、混乱的文章头等原因,将造成文章拒绝投递。这些典型的限制条件一般被新闻服务器上面的软件设定,
3.4.2. 返回
        235 article transferred ok
        335 send article to be transferred. End with <CR-LF>.<CR-LF>
        435 article not wanted - do not send it
        436 transfer failed - try again later
        437 article rejected - to not try again
重要提示:
        由于一些新闻投递软将不能够马上知道文章投递是否已经到达或转发,他只承认已经成功的传输,然后在后台慢慢的检查文章数量。鉴于此,通过235代码可以察看文章的投递情况,然后慢慢的接收文章。这是一种成功地软件解决方案,也许一些程序将通过这些方案发送邮件给文章作者。
3.5. LAST命令
3.5.1. LAST
        LAST
        这个命令用来设置“当前文件指针”为现在的指针的前一个。如果已经指向了新闻组中的第一个文章,那么将返回一个错误消息,并且指针仍然指向第一个文章。
        内部文件指针可以用这个命令设置。
        这个命令返回包括当前文章编号、message-id串,没有其他文本信息。
3.5.2. 返回
        223 n a article retrieved - request text separately (n=文章编号,a=不重复的文章id)
        412 no newsgroup selected
        420 no current article has been selected
        422 no previous article in this group
3.6. LIST命令
3.6.1. LIST
        返回一个新闻服务器上面的有效新闻组列表。每一个新闻组用下列文本格式送出:
                group last first p
        其中:<group>是新闻组的名称,<last>是新闻组中当前已经有的最有一个已知文件编号,
<first>为新闻组中第一个文章编号,<p>为新闻组的权限设置,要么是'y',要么是'n'。'y'表示可以投递,'n'表示禁止投递。
        <last>和<first>始终是一个数字,可能有0开头。如果<last>小于<first>表示新闻组中目前没有内容。
        注意:通过LIST命令可以查看新闻组的投递权限,不允许投递到一个受限的新闻组。在POST命令中介绍客户端投递的详细描述。一些新闻组由于设置了禁止投递的权限,因而不允许投递文章。因为文章投递要经过不受限制的邮件投递,这些投递权限的设置由NNTP服务器设置。
        可能返回一个空的列表(比如仅仅收到一个以句号.结束的列表),这通常表示没有可以使用的新闻组。
3.6.2. 返回
        215 list of newsgroups follows
3.7. NEWGROUPS命令
3.7.1. NEWGROUPS
        NEWGROUPS date time [GMT] [<distributions>]
        显示新闻组中从<日期、时间>开始以后创建的新闻组,返回格式与LIST相同。
        日期date以6位数字的格式(YYMMDD)发送,YY为年份的最后两位数字,MM为月份的两位数字(如果需要,前面必须前导0,如03表示3月),DD表示月中的日期。其中YY被分配为离得最近的世纪(如:86=1986, 30=2030, 99=1999, 00=2000)。
        时间必须指定,格式为HHMMSS,其中HH为24小时制的时间(00-24),MM为分钟(00-59),SS为秒(00-59),时间假定为服务器的时间,除非有"GMT"后随,使用方式依赖于0度经线的时区差。
        可选参数"distributions"是一个用尖括号括起来的匹配组。如果指定的话,新的匹配的新闻组将被列表显示(如 'net' 匹配 'net.wombat'),如果需要多个匹配,在尖括号中用逗号分割。
        请注意,这个命令可能返回一个只有一个句号结束的文本,这表示没有新的新闻组。
3.7.2. 返回
        231 list of new newsgroups follows
3.8. NEWNEWS命令
3.8.1. NEWNEWS
        NEWNEWS newsgroups date time [GMT] [<distribution>]
        返回一个从指定日期以后已经投递或者回复的文章message-id列表。返回格式为每个message-id一行,以一个句号与CR-LF表示输出的结束。
        日期与时间格式与NEWGROUPS命令相同。
        如果newgroups包括星号("*"),将指定从一些或者所有新闻组中查找。这里的星号可以通配新闻组的名字(比如 net.micro* 将通配 net.micro.wombat, net.micro.apple等)。所以,如果仅仅是用一个星号的话,将查找所有新闻组中的新文章。(注意:星号"*"可以被任意放置,如:net.*.unix 匹配 net.wombat.unix与net.whocares.unix)
        相反的,如果没有星号进行匹配newgroup名称,将仅仅搜索指定的新闻组中的新文章,新闻组名称必须指定,可以通过逗号(,)分割多个新闻组名字(名字中可以包括星号)。无逗号引用将使用列表中的最后一个新闻组。特别需要提出的事,请注意不要把行的长度超过512个字符。
        使用感叹号("!")可以对匹配取反运算。可以取掉一些匹配大量的新闻组名字。例如:
newgroups被设置成 "net.*,mod.*,!mod.map.*"将指定所有“net.任意 和 mod.任意 除了 mod.map.任意”的新闻组,习惯上,感叹号放在第一个给定新闻组匹配的位置。
        可选项参数"distributions"是一个匹配列表组,用尖括号括起来。如果指定了这个参数,匹配部分将指定匹配(如net 匹配net.wombat)的新闻文章的匹配类别列表,并且这些文章至少属于匹配列表新闻组中的一个。如果提供多于一个的新闻组名字,可以使用逗号分割这些名字,并用尖括号括起来。
        使用IHAVE, NEWNEWS, NEWGROUPS命令中的distribute选项,在早期文档中也有描述。
        请注意,这个命令可能返回一个只有一个句号结束的文本,这表示没有新的新闻。
3.8.2. 返回
        230 list of new articles by message-id follows
3.9. NEXT命令
3.9.1. NEXT
        NEXT
        本命令用于设置当前文件指针为当前新闻组的下一个文章。如果再没有文章了,则返回一个出错消息,当前文件指针保持不变。
        本命令用于设置当前文件指针为当前新闻组的下一个文章。
        结果提示当前文章编号、消息编号串也被返回。没有其他文本信息。
3.9.2. 返回
        223 n a article retrieved - request text separately (n=文章编号,a=不重复的文章id)
        412 no newsgroup selected
        420 no current article has been selected
        421 no next article in this group
3.10. POST命令
3.10.1. POST
        如果新闻组允许投递,返回340代码表示文章可以被投递。返回码440表示由于某些原因文章不能被投递。
        如果允许投递,文章的格式必须依据RFC850中指定的格式投递,并且应该包括规定的各种文章头部信息。当完成从客户端到服务器传送文章头部与文章正文以后,服务器将返回传送成功或者失败的提示信息。
        文章头部与正文部分格式应该使用被标准给定的格式发送:一个以句号完成的行表示文本结束。双句号开头的文本可以屏蔽原文中的单句号开始的行。
        对投递来的文本,服务器不进行字符转换、限定输入行数或者其他限定。这样的话,我们的服务器仅仅传送这些消息文本到服务器。关于这方面的详细描述,参看RFC850中的规定。
        后来很多的新闻组客户程序允许用户通过小型的编辑软件撰写自己的消息,并且自动传送信息到服务器,这些客户程序在连接到服务器以后会注意到服务器的通知消息。这些消息里面会提示客户端那些新闻组投递的权限,是否为只读新闻组。这样可以防止用户在投递完消息以后才知道服务器上面的这个新闻组不可以投递从而节省时间。客户机与服务器之间的文章传送将依赖于服务器端的配置。
3.10.2 返回
        240 article posted ok
        340 send article to be posted. End with <CR-LF>.<CR-LF>
        440 posting not allowed
        441 posting failed
(结果中,下列代码在最初的连接中返回,客户程序可以测试是否有发送权限) 200 server ready - post allowed, 201 server ready - no posting allowed
3.11. QUIT命令
3.11.1. QUIT
        QUIT
        服务器收到这个命令以后,关闭与客户机之间的连接。这是使用NNTP协议断开连接服务器的首选方法。
        如果客户机简单的断开连接(由于时间超出或者其他原因导致),服务器将悄悄的断开与客户机之间的连接而不提示任何信息。
3.11.2. 返回
        205 closing connection - goodbye!
3.12. SLAVE命令
3.12.1. SLAVE
        指明客户机与服务器连接为从动方式,而非用户方式。
        这个命令设定用户到从动辅助服务器的连接为单用户方式。它也可以用来指出优先提供给客户端的服务方式,因为它也许正在为很多的用户提供服务。它可能用来解决服务器端由于系统超负荷时关闭哪些连接,然后把从动辅助服务器连接到客户端。实际操作过程中,可以使用这个命令把连接转移到从动辅助服务器上面,从而决定优先使用从动辅助服务器。实际操作中,可以把服务器从一个主机转换到另外一个主机。在不把从动辅助服务器首先转让给用户的NNTP服务器上,可以首先使用这个命令。
3.12.2 返回
        202 slave status noted
4 一个简单的会话过程
        这儿有一个假定的过程勇于从NNTP新闻服务器上完成一些特定的任务。其中C表示从客户端发送给服务器的命令,S表示服务器对客户端的回应。
4.1.  例 1 - 用NEXT命令访问下一个文章
        S:   (listens at TCP port 119)
C:   (requests connection on TCP port 119)
(客户端询问服务器可以使用的新闻组列表)
C:   LIST
S:   215 list of news groups follows
S:   net.wombats 00543 00501 y
S:   net.unix-wizards 10125 10011 y
S:   (其他更多的信息)
S:   net.idiots 00100 00001 n
S:   .

(客户端选择新闻组)
C:   GROUPS net.unix-wizards
S:    211 104 10011 10125 net.unix-wizards group selected
(there are 104 articles on file, from 10011 to 10125)
        (客户端选择一个文章阅读)
        C:      STAT 10110
    S:      223 10110 <23445@sdcsvax.ARPA> article retrieved - statistics
           only (article 10110 selected, its message-id is
           <23445@sdcsvax.ARPA>)
        (客户端查看文章头)
        C:           HEAD
S:     221 10110 <23445@sdcsvax.ARPA> article retrieved - head follows
(文件头部显示在这儿)
    S:      .
(客户端希望阅读文章正文)
C:      BODY
S:      222 10110 <23445@sdcsvax.ARPA> article retrieved - body follows
(文件正文显示在这儿)
S:      .
(客户端选择下一个文章)
C:      NEXT
S:      223 10113 <21495@nudebch.uucp> article retrieved - statistics            only (现在选择10113作为当前文件指针)
(客户端完成任务)
C:        QUIT
S:        205 goodbye.
4.2. 例2 - 使用ARTICLE命令完整的访问文章
        S:      (listens at TCP port 119)
        C:      (requests connection on TCP port 119)
        S:      201 UCB-VAX netnews server ready -no posting allowed
        C:      GROUP msgs
        S:      211 103 402 504 msgs Your new group is msgs
                (有103篇文章,编号从402到504)
        C:      ARTICLE 401
        S:      423 No such article in this newsgroups

        C:      ARTICLE 402
        S:      220 402 <4105@ucbvax.ARPA> Article retrieved, text follows
S:      (这儿显示文章的标题与正文)
S:      .

C:      HEAD 403
S:      221 403 <3108@mcvax.UUCP> Article retrieved, header follows
S:      (这儿显示文章头)

C:      QUIT
S:      205 UCB-VAX news server closing connection.  Goodbye.

4.3. 例3 - NEWGROUPS 命令
S:    (listens at TCP port 119)
C:    (requests connection on TCP port 119)
S:    200 Imaginary Institute News Server ready (posting ok)
(客户端询问从1985年4月3日以后新添加的新闻组)
C:    NEWGROUPS 850403 020000
S:    231 New newsgroups since 03/04/85 02:00:00 follow
S:    net.music.gdead
S:    net.games.sources
S:    .

C:    GROUP net.music.gdead
S:    211 0 1 1 net.music.gdead Newsgroup selected
(在这个新闻组中没有文章,首、未文章编号被忽略)

C:    QUIT
S:    205 Imaginary Institute news server ceasing service. Bye!
4.4. 例4 - 用POST发送文章
        S:    (listens at TCP port 119)

C:    (requests connection on TCP port 119)
S:    200 BANZAIVAX news server ready, posting allowed.
C:      POST
S:      340 Continue posting; Period on a line by itself to end
C:      (通过RFC850格式传输文章)
C:      .
S:      240 Article posted successfully.

C:      QUIT
S:      205 BANZAIVAX closing connection.  Goodbye.
4.5. 例5 - 在连接期间中断
S:      (listens at TCP port 119)
C:      (requests connection on TCP port 119)
S:      201 genericvax news server ready, no posting allowed.
        (假设已经会谈了一段时间,并且已经选择了新闻组)
C:      NEXT
S:      223 1013 <5734@mcvax.UUCP> Article retrieved; text separate.
C:      HEAD
C:      221 1013 <5734@mcvax.UUCP> Article retrieved; head follows.
S:      (发送文章头部,但是中途由于某种原因连接出错了,将出现。)

S:      (ends current line with a CR-LF pair)
S:      .
S:      400 Connection closed by operator.  Goodbye.
S:      (closes connection)
4.6. 例6 - 使用新闻服务器发送新闻到其他服务器上
S:      (listens at TCP port 119)
C:      (requests connection on TCP port 119)
S:      201 Foobar NNTP server ready (no posting)
(询问从2 am, May 15, 1985以后添加的新闻组)
C:      NEWGROUPS 850515 020000
S:      235 New newsgroups since 850515 follow
S:      net.fluff
S:      net.lint
S:      .
(询问从2 am, May 15, 1985以后添加的所有新闻)
C:      NEWNEWS * 850515 020000
S:      230 New news since 850515 020000 follows
S:      <1772@foo.UUCP>
S:      <87623@baz.UUCP>
S:      <17872@GOLD.CSNET>
S:      .
(查阅文件 <1772@foo.UUCP>)
C:      ARTICLE <1772@foo.UUCP>
S:      220 <1772@foo.UUCP> All of article follows
S:      (sends entire message)
S:      .
(查阅文件 <87623@baz.UUCP>
C:      ARTICLE <87623@baz.UUCP>
S:      220 <87623@baz.UUCP> All of article follows
S:      (sends entire message)
S:      .
(查阅文件 <17872@GOLD.CSNET>
C:      ARTICLE <17872@GOLD.CSNET>
S:      220 <17872@GOLD.CSNET> All of article follows
S:      (sends entire message)
S:      .
(客户端希望转发最近的文章)
C:      IHAVE <4105@ucbvax.ARPA>
S:      435 Already seen that one, where you been?

(客户端转发其它文件)
C:      IHAVE <4106@ucbvax.ARPA>
S:      335 News to me!  <CRLF.CRLF> to end.
C:      (发送文件)
C:      .
S:      235 Article transferred successfully.  Thanks.

(或者)

S:      436 Transfer failed.

(客户端完成任务)
C:      QUIT
S:      205 Foobar NNTP server bids you farewell.
4.7. 命令与返回综述
        下列命令与返回被NNTP服务设计为公认的。
4.7.1. 命令序列
ARTICLE
BODY
GROUP
HEAD
HELP
IHAVE
LAST
LIST
NEWGROUPS
NEWNEWS
NEXT
POST
QUIT
SLAVE
STAT
4.7.2. 返回
100 help text follows
199 debug output
200 server ready - posting allowed
201 server ready - no posting allowed
202 slave status noted
205 closing connection - goodbye!
211 n f l s group selected
215 list of newsgroups follows
220 n <a> article retrieved - head and body follow
221 n <a> article retrieved - head follows
222 n <a> article retrieved - body follows
223 n <a> article retrieved - request text separately
230 list of new articles by message-id follows
231 list of new newsgroups follows
235 article transferred ok
240 article posted ok

335 send article to be transferred.  End with <CR-LF>.<CR-LF>
340 send article to be posted. End with <CR-LF>.<CR-LF>

400 service discontinued
411 no such news group
412 no newsgroup has been selected
420 no current article has been selected
421 no next article in this group
422 no previous article in this group
423 no such article number in this group
430 no such article found
435 article not wanted - do not send it
436 transfer failed - try again later
437 article rejected - do not try again.
440 posting not allowed
441 posting failed

500 command not recognized
501 command syntax error
502 access restriction or permission denied
503 program fault - command not performed

4.8. NNTP新闻服务器摘要
   在 UNIX 世界,传统的使用拨号电话用1200 波特率连接服务器,Usenet 新闻系统演变为处理中央的存储, 索引,检索,与新闻的分发。与它的内在的运输机制的不同 ( UUCP ), Usenet 新闻是在 UNIX 和世界范围内为另外的主机上提供新闻和告示服务到订户的一个有效的工具。Usenet 新闻系统详细在 RFC 850 被讨论。它在 UNIX 的大多数版本上并且在许多另外的操作系统上运行,并且由customarily 免费发布。
Usenet 使用存在存储新闻文章的 UNIX 主机上的区域, 一个每文件。每篇文章由一系列标题文章组成, 它包含发送者的签名鉴定和组织上的名称, 日期戳, 电子的邮件答复地址, 标题, 新闻组 ( 题目范畴 ), 等等。一篇完全的新闻文章在它的全部被复制在里面。更多的细节请参看 RFC 850 。
        新闻服务器上面的一个文章的样板:
      Relay-Version: version B 2.10.3 4.3bsd-beta 6/6/85; site
      sdcsvax.UUCP
      Posting-Version: version B 2.10.1 6/24/83 SMI; site unitek.uucp
      Path:sdcsvax!sdcrdcf!hplabs!qantel!ihnp4!alberta!ubc-vision!unitek!honman
      From: honman@unitek.uucp (Man Wong)
      Newsgroups: net.unix-wizards
      Subject: foreground -> background ?
      Message-ID: <167@unitek.uucp>
      Date: 25 Sep 85 23:51:52 GMT
      Date-Received: 29 Sep 85 09:54:48 GMT
      Reply-To: honman@unitek.UUCP (Hon-Man Wong)
      Distribution: net.all
      Organization: Unitek Technologies Corporation
      Lines: 12

      I have a process (C program) which generates a child and waits for
      it to return.  What I would like to do is to be able to run the
      child process interactively for a while before kicking itself into
      the background so I can return to the parent process (while the
      child process is RUNNING in the background).  Can it be done?  And
      if it can, how?

      Please reply by E-mail.  Thanks in advance.

      Hon-Man Wong
5.主要参考文献
[1]  Crocker, D., "Standard for the Format of ARPA Internet Text Messages", RFC-822, Department of Electrical Engineering, University of Delaware, August, 1982.
[2]  Horton, M., "Standard for Interchange of USENET Messages", RFC-850, USENET Project, June, 1983.
[3]  Postel, J., "Transmission Control Protocol- DARPA Internet Program Protocol Specification", RFC-793, USC/Information Sciences Institute, September, 1981.
[4]  Postel, J., "Simple Mail Transfer Protocol", RFC-821, USC/Information Sciences Institute, August, 1982.
6.感谢
作者希望真诚表示由于对此说明做出贡献的许多人,并且特别到致谢Erik Fair与Chuq von Rospach , 没有他们的灵感,就没有整个事件。
7. 特别说明

   <1> UNIX是贝尔实验室的一个商标.



全文完
RFC977 - Network News Transfer Protocol                                  网络新闻传送协议NNTP




1
RFC文档中文翻译计划

附件 1: RFC977_网络新闻传输协议.txt (2009-4-11 00:29, 28.53 K,下载次数: 79)
2009-4-11 00:29
查看资料  发送邮件  发短消息   编辑帖子  引用回复
beckyer
管理员





积分 274
发贴 274
注册 2008-6-18
状态 离线
#2  

FRC-3977里定义的新命令,用法和格式根XOVER差不多,只是除了支持编号,还支持Message-ID,
具体请看RFC-3977( http://www.rfc-editor.org/rfc/rfc3977.txt 或者 http://rfc.net/rfc3977.html
其实RFC的全文本你可以在很多网站找到,比如RFC官方网站: http://www.rfc-editor.org/
http://rfc.net/ 以及FAQS网站: http://www.faqs.org/rfcs/ 等等)。

附件 1: RFC977.pdf (2009-4-11 00:32, 91.33 K,下载次数: 69)
附件 2: RFC2980.pdf (2009-4-11 00:32, 96.74 K,下载次数: 69)
2009-4-11 00:32
查看资料  发送邮件  发短消息   编辑帖子  引用回复


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



 



[ 联系我们 - BeckyUser Forum ]

Powered by Discuz! 2.5 © 2001-2005 Comsenz Technology Ltd.
Processed in 0.089324 second(s), 6 queries