NNTP:互联网新闻组

下载
第33章NNTP:互联网新闻组
作者:Daniel Baker
本章内容包括:
• 互联网新闻组
• 新闻组和层次
• 网络新闻传输协议
• 大量广告( S p a m m i n g )和新闻黑洞(Bl a c k h o l i n g )
本章将讨论与新闻组相关的各种主题。新闻组是互联网通信的最为古老方式之一,它目
前仍在使用。此外本章还讨论了如何与网络新闻传输协议(Network News Transfer Protocol ,
N N T P )服务器建立连接。
虽然N N T P并不是新闻组传输的原始协议,但是它使得所有早期的传输方法如U N I X到
U N I X拷贝协议( U N I X—t o—UNIX Copy Protocol ,U U C P )被淘汰。
33.1 互联网新闻组
Usenet(Usenet News),由两名D u k e大学的研究生在1 9 7 9年创建,是当前历史最长也是最
流行的网络服务之一。U s e n e t允许在整个互联网范围内的组成员间用基于文本的方式进行交
流。在这个方面,它非常类似于公共的、组电子邮件。
U s e n e t讨论是非实时的,文章从一个地点传输到另一个地点有时产生延误。然而,通常
这个延误是微不足道的,不能阻碍互联网用户进行网上讨论的能力。
近年来,由于U s e n e t极为流行以及互联网快速增长, U s e n e t经历了实实在在的成长痛苦。
许多年以前,设置一个新闻服务器仅需在互联网上随意接入一台电脑,并提供2 0~1 0 0 M磁盘
空间。然而今天,绝大多数I n t e r n e t服务提供商( I S P )已拥有多个U s e n e t服务器,它们通常要运
行一对骨干新闻发布版块(news box)负责用户的地址与互联网上其他地址间的通信,此外还需
要包括若干客户服务器用来向最终用户提供U s e n e t文章数据。为了提供高质量的U s e n e t的服务,
一个U s e n e t客户服务器必须保持不间断的、数兆带宽的互联网的连接,至少0 . 5G B的内存以及
若干高端的微处理器。
技术局限性不是导致U s e n e t存在问题的仅有根源。缺乏集中式管理、强加的商业信息以
及缺乏教育的用户都使U s e n e t较难扩大到其所需的规模。
注意Usenetll( http://www.usenet2.org/), 一个新的Usenet,声称它通过加强法规及控制能
够解决大多数Usenet存在的问题,使其能向正确的方向发展。
尽管还没有人能提出更好的方法,但大家都一致公认U s e n e t存储和传输文章的方法并不
是很有效的。目前,每一个U s e n e t服务器都要保存一份发布在其体系内中的每一篇文章。
文章通过一种称为对等的方法从一个服务器传输到另一个服务器。新闻管理员可以与其
他站点的对等层次的管理员进行谈判,决定他们与其他站点在U s e n e t的哪个层次上进行新闻
交流。通常情况是,一个新闻服务器拥有1~2 0 0个对等服务器。一个服务器收到的每一篇文
章,都会与所有与它的对等服务器进行连接(除了把文章传输给它的那个服务器),然后用
N N T P命令i h a v e将该文章传输给对等站点。
注意由于这种存储方式的原因,即使一个很小的Usenet的文章,都会占用惊人的存储
空间。举例说明,假如在互联网上有1 5 0 0个U s e n e t服务器,一个合理的2 5 0 0字节的文章
在互联网范围内将占用3 . 7 5 M存储空间(这个数字仅计算了存储这篇文章的服务器上的
被占用空间,而在阅读该文章的客户机所占用的存储空间都不计算在内。一个C D音质
的歌曲(大约3 . 5 M B )发布到U s e n e t,将占用5 . 2 5 G B的空间。一张运动的画片(大约1 . 2 G B )
发布到Usenet,将占用1.95TB的空间。
33.2 新闻组和层次
U s e n e t讨论组可以划分为成千上万个新闻组,传统上可以按其类别组织成分层的格式。
然而,存在着一些层次最高的“根”层次。主要的层次被称为“七大”。
表3 3 - 1显示了“七大”最高层次,表3 2 - 2展示了其他流行的层次。
表33-1 “七大”最高层次
名字描述
c o m p 计算
m i s c 其他各方面的
n e w s U s e n e t管理
r e c 娱乐
s c i 科学
s o c 社会
t a l k 一般讨论
表33-2 其他流行的层次
名字描述
a l t 不受控制的“可选”新闻组
b i o n e t 生物
c l a r i 从路透社、美联社等实况转播的新闻信息
k 1 2 包括1 2个年级的幼儿园
为了减少混淆,将不同的语言划分到不同的层次既符合习惯也较为方便。因此,不同的
国家通常位于不同的层次,如表3 3 - 3所示。
表33-3 国家层次
名字描述
c h 瑞士
f r 法国
d e 德国
绝大多数顶级层次都受到严格控制以确保仅仅被授权的管理员才可以创建和删除新闻组。
然而,最大的层次a l t没有任何正式和有效的方法去这样做。无论如何,一个新闻服务器的管
理员必须在接受询问的时候决定是否加强对层次的限制,然后该管理员必须对他或她的服务
366使用第八部分使用基于I P的应用
下载
器做出相应的配置。然而,新闻服务器管理员的有冲突的选择常常导致层次之间的不一致性。
例如,一些服务器可能认为某些服务器存在,然而其他的不存在,因为新闻服务器管理员在
层次规则上的宽容度不同。这些不一致对用户产生了极大的困扰,使Usenet 的管理变得复杂。
提示一个不错的想法是在发出任何控制消息之前应先对一个层次管理新闻组的政策有
充分的理解。控制消息是U s e n e t服务器的新闻组管理脚本语言从语法上所分析的U s e n e t
消息。控制消息可以要求Usenet的一个服务器创建一个新闻组、删除一个存在的新闻组、
取消一个Usenet报文或者其他的管理请求。
确定U s e n e t层次所覆盖的主题后,用户应可以轻松地找到一个新闻组来讨论其所感兴趣
的特定话题。例如,超过3 5 0 个新闻组在其名字中包括u n i x。其中最著名的新闻组就是
c o m p . u n i x . s o l a r i s和c o m . u n i x . a i x。这样名字为一个组所关注的主要话题提供了一个清晰的提
示。c o m p表明一个与计算机相关的讨论组,而u n i x表明第二层次中的组与基于u n i x的操作系
统相关。s o l a r i s代表S u n公司的S o l a r i s。
关于一个组内所允许讨论的内容,层次的名字应给予用户关键性的提示。例如,在
a l t . b i n a r i e s层次的每一个组中发布的都是一些二进制代码,例如计算机程序、音频文件、图
片等。除非另做特别说明,一个组的内容可以放心地假设为A S C I I码的英语文本。
提示将二进制内容发布到非二进制的新闻组是一种极端恶劣的行为。例如,将一个音
频的文件发布到a l t . t v. s e i n f e l d将会给新闻管理员带来极大的麻烦也违背了层次化的分层
组织系统的初衷。然而,将同样的文件发布到a l t . b i n a r i e s . s o u n d s . t v就比较合适,这也是
一种将文件传遍整个Usenet的最有效途径。
至此,我们已经知道一些U s e n e t的基本概念以及它的组织方式,接下来看看U s e n e t是如何
传输文章数据的。
33.3 网络新闻传输协议
网络新闻传输协议( N N T P )是新闻服务器与新闻客户间传输U s e n e t文章数据的最常见途径。
N N T P是一个A S C I I协议通常在T C P端口11 9进行的通信。尽管用户可以直接与新闻服务器以
N N T P连接(正如本节中所描述的),然而通常情况下用户的所有N N T P服务由一个新闻用户代
理来处理(包括发布、阅读等) 。U N I X用户经常使用的N N T P客户软件是t i n和t r n,然而
Wi n d o w s用户通常使用N e t s c a p e和微软的Outlook Express。
本节涵盖N N T P相关的各种话题,包括:
• 获取新闻组列表
• 获取特定的U s e n e t文章
• 发布消息到U s e n e t
本节将使用户对N N T P的功能基础结构有一个深入的认识。
33.3.1 获取新闻组
为了从N N T P服务器获取新闻组的列表,用户必须首先建立一个到N N T P服务器的连接,
进入阅读模式,然后请求“活跃”列表。
建立一个连接,输入:
第3 3章N N T P:互联网新闻组使用367
下载
用户应该看到下列输出:
这个时候,键入:
将有下列输出:
当继续进行的状态栏出现后,可以键入命令显示所有的U s e n e t组列表:
这个时候, N N T P服务器将显示所拥有的所有U s e n e t组的列表。
当结束操作后,键入:
N N T P服务器将结束会话并有如下输出:
注意绝大多数的服务器拥有巨大数量的新闻组。在一个服务器的可用文件中包含3000
~6000个新闻组一点也不奇怪。当用户发出LIST active命令,服务器可能会产生一个数
兆字节大小的文件。所以,为了节省连接双方的带宽起见最好避免,访问该文件。
服务器指明了新闻组的列表格式是“组高低标志(group high low flags)”;高和低是
N N T P客户从N N T P服务器当前能看到的文件编号区域。标志则显示了对该新闻组的控制状
态;其中“m”意思为中等的,而“ y”的意思是严厉的。
提示除了本章中提到的那些还有更多的NNTP命令。当连接到NNTP服务器上的时候,
客户可以键入H E L P来获取关于那些额外命令的帮助。绝大多数的客户都会得到一连串
368使用第八部分使用基于I P的应用
下载
的命令以及使用它们的必要参数。
33.3.2 获取消息
用户可以通过连接、选择组接着发出一个文章的标志号来从N N T P服务器上获取U s e n e t消
息。在接受到文章以后,用户可以继续通过标识号I D来请求其他文章,或者发出下一条命令。
为建立连接,键入:
用户将看到下列显示:
这时候键入:
下列结果将显示:
当继续进行的状态栏显示后,键入命令告诉新闻服务器用户想访问那一个新闻组:
服务器将回应在询问中所提到的组的一些信息:
在回应中的第二个数字是当前服务器包含的组中的文章数。第三和第四个数字是文章号
码区域的开始号码和结束号码。在服务器所拥有的文章总数和文章号码区域之间可能存在着
不一致,因为一些文章在收到后被服务器取消掉了。这些文章可能有一个文章号,但在服务
器上已经不存在了。
这个时候,用户可以从给定区域内选择任何号码来访问文章,如下所示:
用户将看到如下显示:
第3 3章N N T P:互联网新闻组使用369
下载
这个时候,用户可以继续进行N N T P会话,或键入Q U I T命令终止会话。
正如上所示,为了接收文章数据,用户必须指定一个组及其文章号码。
显示中的P a t h (路径)标题区域显示了该消息到达用户的N N T P客户服务器所经过的路径。
路径从右到左指明了消息所经过的主机的名称或其别名,各名称之间由惊叹号隔开。在上一
个示例中,发布到n e w s . d i s t r i b u t e d . n e t的文章,到达示例中的N N T P客户服务器news. cuckoo.
c o m经历了中间的两步跨越。
N N T P - P o s t i n g标题区域指明那一个客户连接到N N T P客户服务器。这个示例说明该文章是
由主机u n i x b o x . d i s t r i b u t e d . n e t在1 9 9 9年5月1 6日星期天2 1:4 2:3 6 P D T时刻发布的。
用n e x t命令也可以来请求服务器下一序号的文章,并显示它的标题及正文。
33.3.3 发布消息
用户可以通过与N N T P服务器建立连接、启动读者模式,接着发出一个P O S T命令来往
U s e n e t上发布消息。一旦这些准备结束,文章就可以像通常情况一样地输入。仅为完成文章
发布需要填写F r o m、N e w s g r o u p s和S u b j e c t标题区域。然而,许多其他标题都是标准化的,仅
由新闻客户来使用。
现在,用户需要让N N T P服务器知道用户想进入文章发布模式:
N N T P服务器将如下显示回应用户的请求:
这个时候,可以开始用户的U s e n e t文章发布了。在输入文章数据之前,用户必须先输入
标题,至少包括F r o m、N e w s g r o u p s和S u b j e c t几项。
370使用第八部分使用基于I P的应用
下载
用户可以在一空白行上输入一个句点来结束用户所发布的文章:
如果用户能够顺利完成以上各步, N N T P服务器将确认用户发布成功:
这时候用户可以退出会话。
如上所示,发布一个U s e n e t消息仅有少量的信息是必须的。
值得注意的是,发布中的最后那个句点是结束符。它必须单独占据一行并且位于行的开
头,这样N N T P服务器才能意识到这个句点标志着文件的结束。
下一小节涉及到了目前在U s e n e t中的一些关键性问题。因为是沿袭U s e n e t的传统设计,对
于整个基础结构没有官方的管理员;而由特定的层次管理员负责管理事宜,因此问题总有各
种各样的不同解决方法。
33.4 大量广告(Spamming)和新闻黑洞(Blackholing)
大量广告(“S p a m m i n g” )被发布到U s e n e t上是一个严峻的问题。不守规矩的公司贪图免
费传媒的好处将大量的广告发布到并不适合它们的组。这些不适宜的广告占据了大量的新闻
服务器资源,使终端用户必须烦恼地过滤大量广告才能获得自己想要的内容。
一些新闻管理员试图通过新闻黑洞技术来解决这个问题,换句话说,就是忽略那些接收
大量U s e n e t广告的、创建U s e n e t广告的、中继U s e n e t广告的站点。顾名思义,黑洞技术就是指
借助标记为“黑洞”的站点减少网络拥塞。任何加强了黑洞策略的站点将忽略被标记为黑洞
的站点。这就给那些有责任阻止大量广告的站点增加了压力,如果一个I S P的新闻服务器没有
能成功地阻止一个用户滥用其权利,它将被标记为“黑洞”。
另一项解决大量广告问题的技术是取消不适宜的文章。一些被称为“ c a n c e l b o t s”的程序
负责确认发布的商业性信息,对其进行监测,若存在有问题的文章,则发出控制命令请求
U s e n e t服务器将其删除。
注意MAPS RBL( http://maps.vix.com/rbl)是组织此类黑洞技术的最大的组织。
33.5 小结
在提供公众性的讨论论坛之外,多年来, U s e n e t也传播了大量的知识及信息,使所有的
互联网用户群都可以方便地获取。例如D e j a ( h t t p : / / w w w. d e j a . c o m / )网站保存了U s e n e t发布的所
有信息,允许用户查询多年来的U s e n e t数据。D e j a文档除了包括U s e n e t所涵盖的广泛话题外,
同时也包括与用户能想象到的几乎所有话题相关的文章。近期这些功能的实现进一步加强了
人们对于U s e n e t应用前景的信念。
U s e n e t是拥有巨大潜力、受人欢迎的服务。然而, U s e n e t若要取得成功、易于管理、便于
第3 3章N N T P:互联网新闻组使用371
下载
扩充,还需要解决许多重要的问题。但毫无疑问,这些问题终会以某种方式得到解决,并导
致U s e n e t走向繁荣、发挥出它的最大潜力。
下一章涵盖了运行We b站点服务所涉及到的各种管理上的问题。特别是,用户将学习到
有关Apache We b服务器、Netscape 企业级We b服务器、微软的互联网信息( Internet
I n f o r m a t i o n )服务器的基础知识。
372使用第八部分使用基于I P的应用
下载 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目 录 译者序 前言 第一部分 TCP事务协议 第1章 T/TCP概述 1 1.1 概述 1 1.2 UDP上的客户-服务器 1 1.3 TCP上的客户-服务器 6 1.4 T/TCP上的客户-服务器 12 1.5 测试网络 15 1.6 时间测量程序 15 1.7 应用 17 1.8 历史 19 1.9 实现 20 1.10 小结 21 第2章 T/TCP协议 23 2.1 概述 23 2.2 T/TCP中的新TCP选项 23 2.3 T/TCP实现所需变量 25 2.4 状态变迁图 27 2.5 T/TCP的扩展状态 28 2.6 小结 30 第3章 T/TCP使用举例 31 3.1 概述 31 3.2 客户重新启动 31 3.3 常规的T/TCP事务 33 3.4 服务器收到过时的重复SYN 34 3.5 服务器重启动 35 3.6 请求或应答超出报文段最大长度MSS 36 3.7 向后兼容性 39 3.8 小结 41 第4章 T/TCP协议(续) 43 4.1 概述 43 4.2 客户的端口号和TIME_WAIT状态 43 4.3 设置TIME_WAIT状态的目的 45 4.4 TIME_WAIT状态的截断 48 4.5 利用TAO跳过三次握手 51 4.6 小结 55 第5章 T/TCP协议的实现:插口层 56 5.1 概述 56 5.2 常量 56 5.3 sosend函数 56 5.4 小结 58 第6章 T/TCP的实现:路由表 59 6.1 概述 59 6.2 代码介绍 59 6.3 radix_node_head结构 60 6.4 rtentry结构 61 6.5 rt_metrics结构 61 6.6 in_inithead函数 61 6.7 in_addroute函数 62 6.8 in_matroute函数 63 6.9 in_clsroute函数 63 6.10 in_rtqtimo函数 64 6.11 in_rtqkill函数 66 6.12 小结 69 第7章 T/TCP实现:协议控制块 70 7.1 概述 70 7.2 in_pcbladdr函数 71 7.3 in_pcbconnect函数 71 7.4 小结 72 第8章 T/TCP实现: TCP概要 73 8.1 概述 73 8.2 代码介绍 73 8.3 TCP的protosw结构 74 8.4 TCP控制块 74 8.5 tcp_init函数 75 8.6 tcp_slowtimo函数 75 8.7 小结 76 第9章 T/TCP实现:TCP输出 77 9.1 概述 77 9.2 tcp_output函数 77 9.2.1 新的自动变量 77 9.2.2 增加隐藏的状态标志 77 9.2.3 在SYN_SENT状态不要重传SYN 78 9.2.4 发送器的糊涂窗口避免机制 78 9.2.5 有RST或SYN标志时强制发送报文段 79 9.2.6 发送MSS选项 80 9.2.7 是否发送时间戳选项 80 9.2.8 发送T/TCP的CC选项 80 9.2.9 根据TCP选项调整数据长度 83 9.3 小结 83 第10章 T/TCP实现:TCP函数 84 10.1 概述 84 10.2 tcp_newtcpcb函数 84 10.3 tcp_rtlookup函数 85 10.4 tcp_gettaocache函数 86 10.5 重传超时间隔的计算 86 10.6 tcp_close函数 89 10.7 tcp_msssend函数 90 10.8 tcp_mssrcvd函数 91 10.9 tcp_dooptions函数 96 10.10 tcp_reass函数 98 10.11 小结 99 第11章 T/TCP实现:TCP输入 101 11.1 概述 101 11.2 预处理 103 11.3 首部预测 104 11.4 被动打开的启动 105 11.5 主动打开的启动 108 11.6 PAWS:防止序号重复 114 11.7 ACK处理 115 11.8 完成被动打开和同时打开 115 11.9 ACK处理(续) 116 11.10 FIN处理 118 11.11 小结 119 第12章 T/TCP实现:TCP用户请求 120 12.1 概述 120 12.2 PRU_CONNECT请求 120 12.3 tcp_connect函数 120 12.4 PRU_SEND和PRU_SEND_EOF请求 124 12.5 tcp_usrclosed函数 125 12.6 tcp_sysctl函数 126 12.7 T/TCP的前景 126 12.8 小结 127 第二部分 TCP的其他应用 第13章 HTTP:超文本传送协议 129 13.1 概述 129 13.2 HTTP和HTML概述 130 13.3 HTTP 132 13.3.1 报文类型:请求与响应 132 13.3.2 首部字段 133 13.3.3 响应代码 133 13.3.4 各种报文头举例 134 13.3.5 例子:客户程序缓存 135 13.3.6 例子:服务器重定向 136 13.4 一个例子 136 13.5 HTTP的统计资料 138 13.6 性能问题 139 13.7 小结 141 第14章 在HTTP服务器上找到的分组 142 14.1 概述 142 14.2 多个HTTP服务器 144 14.3 客户端SYN的到达间隔时间 145 14.4 RTT的测量 149 14.5 用listen设置入连接队列的容量 150 14.6 客户端的SYN选项 154 14.7 客户端的SYN重传 156 14.8 域名 157 14.9 超时的持续探测 157 14.10 T/TCP路由表大小的模拟 160 14.11 mbuf的交互 162 14.12 TCP的PCB高速缓存和首部预测 163 14.13 小结 165 第15章 NNTP网络新闻传送协议 166 15.1 概述 166 15.2 NNTP 167 15.3 一个简单的新闻客户 170 15.4 一个复杂的新闻客户 171 15.5 NNTP的统计资料 172 15.6 小结 173 第三部分 Unix域协议 第16章 Unix域协议:概述 175 16.1 概述 175 16.2 用途 176 16.3 性能 177 16.4 编码举例 177 16.5 小结 179 第17章 Unix域协议:实现 180 17.1 概述 180 17.2 代码介绍 180 17.3 Unix domain和protosw结构 181 17.4 Unix域插口地址结构 182 17.5 Unix域协议控制块 183 17.6 uipc_usrreq函数 185 17.7 PRU_ATTACH请求和unp_attach函数 186 17.8 PRU_DETACH请求和unp_detach函数 187 17.9 PRU_BIND请求和unp_bind函数 189 17.10 PRU_CONNECT请求和unp_connect 函数 191 17.11 PRU_CONNECT2请求和unp_connect2 函数 195 17.12 socketpair系统调用 198 17.13 pipe系统调用 202 17.14 PRU_ACCEPT请求 203 17.15 PRU_DISCONNECT请求和 unp_disconnect函数 204 17.16 PRU_SHUTDOWN请求和unp_shutdown 函数 205 17.17 PRU_ABORT请求和unp_drop函数 206 17.18 其他各种请求 207 17.19 小结 209 第18章 Unix域协议:I/O和描述符的传递 210 18.1 概述 210 18.2 PRU_SEND和PRU_RCVD请求 210 18.3 描述符的传递 214 18.4 unp_internalize函数 218 18.5 unp_externalize函数 220 18.6 unp_discard函数 221 18.7 unp_dispose函数 222 18.8 unp_scan函数 222 18.9 unp_gc函数 223 18.10 unp_mark函数 230 18.11 性能(再讨论) 231 18.12 小结 231 附录A 测量网络时间 232 附录B 编写T/TCP应用程序 242 参考文献 246 缩略语 251

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值