深入了解NNTP协议与nntpd服务器
1. NNTP简介
Network News Transfer Protocol(NNTP)为新闻交换提供了一种与C News及其他无原生NNTP支持的新闻服务器截然不同的方法。它摒弃了像UUCP这样的批处理技术,而是通过交互式网络连接来交换新闻文章。NNTP并非特定的软件包,而是RFC - 977中定义的互联网标准。它基于面向流的连接,通常通过TCP,在网络中任意位置的客户端与存储新闻的主机服务器之间建立连接。这种流连接使客户端和服务器能够交互式协商文章传输,几乎没有周转延迟,从而减少了重复文章的数量。结合互联网的高传输率,NNTP的新闻传输能力远远超过了最初的UUCP网络。以前一篇文章可能需要两周或更长时间才能到达Usenet的最后一个角落,现在通常不到两天,在互联网上甚至只需几分钟。
客户端可以使用各种命令来检索、发送和发布文章。发送和发布的区别在于,发布可能涉及头信息不完整的文章,通常意味着用户刚撰写好文章。文章检索既可以被新闻传输客户端使用,也可被新闻阅读器使用。这使得NNTP成为为本地网络中的众多客户端提供新闻访问的优秀工具,避免了使用NFS时所需的复杂操作。
NNTP提供了主动和被动两种新闻传输方式,通俗地称为“推送”和“拉取”。推送基本类似于C News使用的ihave/sendme协议。客户端通过IHAVE msgid命令向服务器提供文章,服务器返回响应代码,指示它是否已有该文章或是否想要该文章。如果服务器想要该文章,客户端将发送文章,文章以单独一行的单个点结束。不过,推送新闻的缺点是会给服务器系统带来沉重负担,因为系统必须为每篇文章搜索其历史数据库。
拉取新闻则是客户端请求指定日期之后到达的某个组中所