The TCP/IP Guide - Version 3.0 (Contents) ` 1500 _ © 2001-2005 Charles M. Kozierok. All Rights Reserved.
The Development of NNTP
Everything changed as the fledgling ARPAnet grew into the modern Internet. As the Internet
expanded, more and more sites connected to it, including many sites that were participating
in Usenet. Once a pair of sites were both on the Internet, it was an easy decision to use the
Internet to send Usenet articles rather than slow, expensive telephone calls. Over time,
more and more Usenet sites joined the Internet, and it became clear that just as e-mail had
moved from UUCP to the TCP/IP Internet, the future of Usenet was on the Internet as well.
The shifting of Usenet from UUCP connections to TCP/IP internetworking meant that some
rethinking was required in how Usenet articles were moved from server to server. On the
Internet, Usenet was just one of many applications, and the transfer of messages had to be
structured using one of the two TCP/IP transport protocols, TCP or UDP.
Thus, like other applications, Usenet required an application-level protocol to describe how
to carry Usenet traffic over TCP/IP. Just as Usenet had borrowed its message format from
e-mail's RFC 822, it made sense to model its message delivery protocol on the one used by
e-mail: the Simple Mail Transfer Protocol (SMTP). The result was the creation of the
Network News Transfer Protocol (NNTP), published as RFC 977 in February, 1986.
Overview of NNTP Operation
The general operation of NNTP is indeed very similar to that of SMTP. NNTP uses TCP,
with servers listening on well-known TCP port 119 for incoming connections, either from
client hosts or other NNTP servers. As in SMTP, when two servers communicate using
NNTP, the one that initiates the connection plays the role of client for that exchange.
After a connection is established, communication takes the form of commands sent by the
client to the server, and replies returned from the server to the client device. NNTP
commands are sent as plain ASCII text, just like those used by SMTP, FTP, HTTP and other
protocols. NNTP responses take the form of three-digit reply codes as well as descriptive
text, again just like SMTP (which in turn borrowed this concept from FTP).
NNTP was designed to be a comprehensive vehicle for transporting Usenet messages. It is
usually most often considered as a delivery protocol for moving Usenet articles from one
server to another, but is also used for connections from client hosts to Usenet servers for
posting and reading messages. Thus, the NNTP command set is quite extensive, and
includes commands to handle both inter-server and client-server communication. For
message propagation, a set of commands is provided to allow a server to request new
articles from another server, or to provide new articles to another server. For message
posting and access, commands allow a client to request lists of new newsgroups and
messages, and to retrieve messages for display to a user.
The commands defined in RFC 977 were the only “official” ones for over a decade.
However, even as early as the late 1980s, implementors of NNTP server and client
software were adding new commands and features to make NNTP both more efficient and
useful to users. These NNTP extensions were eventually documented in RFC 2980,
published in 2000. I describe them in more detail later in this section.