291 lines
12 KiB
HTML
291 lines
12 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
|
<!-- saved from url=(0047)http://www.newsreaders.com/misc/pipelining.html -->
|
|
<HTML><HEAD><TITLE>Some Comments about pipelining/batching NNTP Commands</TITLE>
|
|
<META http-equiv=Content-Type content="text/html; charset=windows-1252">
|
|
<META content="MSHTML 5.50.4134.600" name=GENERATOR></HEAD>
|
|
<BODY bgColor=white>
|
|
<CENTER><FONT size=+2>NewsReaders.com: Technical Documents and
|
|
links</FONT></CENTER><!-- start header --><!-- TITLE: X --><!-- COLOR: X -->
|
|
<CENTER><FONT size=+2>an eMailman(sm) production</FONT></CENTER>
|
|
<CENTER><FONT size=+1>a site about newsgroups and software related to
|
|
them</FONT></CENTER><BR>
|
|
<HR>
|
|
|
|
<CENTER>[<A href="http://www.emailman.com/">eMailman</A>] [<A
|
|
href="http://www.emailman.com/emailorder/index.html">eMailOrder</A>] [<A
|
|
href="http://www.newsreaders.com/search/index.html">Search NewsReaders.com</A>]
|
|
[<A href="http://www.newsreaders.com/consult/index.html">Consulting</A>] [<A
|
|
href="http://www.newsreaders.com/credits/index.html">Credits</A>] </CENTER>
|
|
<HR>
|
|
<BR><A
|
|
href="http://209.235.94.18/emailman/emailmanform.cgi?name=addcorrect&form=3">[Submit
|
|
Addition/Corrections]</A><BR><BR><!-- end header --><PRE>
|
|
Although it isn't explicitly stated in RFC 977, the nature of the
|
|
connection between the server and the client means that in practice a
|
|
client can batch or pipeline commands (send a series of commands and
|
|
receive a series of answers).
|
|
|
|
This has been empirically confirmed with the following news servers:
|
|
|
|
Changi
|
|
Diablo
|
|
DNEWS
|
|
INN
|
|
Leafnode
|
|
Microsoft Internet Services
|
|
Netscape-Collabra/3.52
|
|
RumorMill
|
|
Tortoise 2.1beta
|
|
Typhoon
|
|
|
|
There are commands which can NOT be batched because of their nature
|
|
(POST and other commands which change the state of the server and
|
|
may fail or return unexpected results, under certain conditions this
|
|
includes *GROUP).
|
|
|
|
This pipelining or batching of commands by the client can result in
|
|
significant speed improvements over the more traditional
|
|
command->response/command->response sequence.
|
|
|
|
Commands which may change the state and derail any batched commands:
|
|
MODE READER, POST, *GROUP, IHAVE, SLAVE, QUIT
|
|
|
|
*if GROUP fails because the group doesn't exist, then commands that
|
|
depend upon the article pointer or article number may also fail.
|
|
Thus using it to get the High/Low marks of a group is safe as long
|
|
as the result is parsed correctly when it is processed, but ARTICLE,
|
|
BODY, HEAD, NEXT and LAST can produce misleading or incorrect results
|
|
and should be avoided until after you have the response from GROUP.
|
|
|
|
</PRE>Below is a table listing commands, their typical response code, and
|
|
whether or not servers typically pipeline them. New commands discussed in the
|
|
NNTP-EXT Working Group are in italic, "unofficial" but nevertheless widely used
|
|
commands are in bold.
|
|
<H1>NNTP Commands</H1>
|
|
<TABLE cellSpacing=1 cellPadding=5 width=499 border=1>
|
|
<TBODY>
|
|
<TR>
|
|
<TD vAlign=center width="30%"><B>
|
|
<P>Command</B></P></TT></TD>
|
|
<TD vAlign=center width="60%"><B>
|
|
<P>Action & Reply</P></B></TT></TD>
|
|
<TD vAlign=center align=middle width="10%"><B>
|
|
<P>Client May Batch</P></B></TT></TD></TR>
|
|
<TR>
|
|
<TD vAlign=top width="30%"><TT>
|
|
<DL>
|
|
<DT><initial connect> </DT></DL></TT></TD>
|
|
<TD vAlign=top width="60%">
|
|
<P><TT>200 OK</TT>;<TT> 201 Posting OK</TT>;<TT> 205
|
|
Authenticate</TT></P></TD>
|
|
<TD vAlign=top align=middle width="10%">
|
|
<P><TT>No</TT></P></TD></TR>
|
|
<TR>
|
|
<TD vAlign=top width="30%" bgColor=#008080><I>
|
|
<P><TT>MODE READER</I></TT></P></TD>
|
|
<TD vAlign=top width="60%" bgColor=#008080>
|
|
<P>Optionally notes client is interactive; <TT>200</TT>, <TT>201</TT>,
|
|
<TT>205</TT> replies</TT></P></TD>
|
|
<TD vAlign=top align=middle width="10%" bgColor=#008080>
|
|
<P><TT>No</TT></P></TD></TR>
|
|
<TR>
|
|
<TD vAlign=top width="30%">
|
|
<P><TT>SLAVE</TT></P></TD>
|
|
<TD vAlign=top width="60%">
|
|
<P><TT>Notes client serves many users [Obsolete]; <TT>202
|
|
Noted</TT></P></TT></TD>
|
|
<TD vAlign=top align=middle width="10%">
|
|
<P><TT>No</TT></P></TD></TR>
|
|
<TR>
|
|
<TD vAlign=top width="30%" bgColor=#008080>
|
|
<P><TT>LIST <B><I>EXTENSIONS</B></I></TT></P></TD>
|
|
<TD vAlign=top width="60%" bgColor=#008080>
|
|
<P><TT>202 Supported Extensions</TT> followed, one per line</TT></P></TD>
|
|
<TD vAlign=top align=middle width="10%" bgColor=#008080>
|
|
<P>Yes</TT></P></TD></TR>
|
|
<TR>
|
|
<TD vAlign=top width="30%"><I>
|
|
<P><TT>AUTHINFO USER name<BR>AUTHINFO PASS pass</I></TT></P></TD>
|
|
<TD vAlign=top width="60%"><TT>
|
|
<DL>
|
|
<DT>350 Continue with PASS</TT><BR><TT>A cleartext password system</TT>
|
|
</DT></DL></TD>
|
|
<TD vAlign=top align=middle width="10%"><TT>No</TT></TD></TR>
|
|
<TR>
|
|
<TD vAlign=top width="30%" bgColor=#008080><I>
|
|
<P><TT>AUTHINFO GENERIC </TT>...</I></TT></P></TD>
|
|
<TD vAlign=top width="60%" bgColor=#008080>
|
|
<DL>
|
|
<DT>Arbitrary auth procedure: <TT>250 Accepted</TT>; <TT>452 Rejected
|
|
</DT></DL></TT>
|
|
<P></P></TD>
|
|
<TD vAlign=top align=middle width="10%" bgColor=#008080>
|
|
<P><TT>No</TT></P></TD></TR>
|
|
<TR>
|
|
<TD vAlign=top width="30%">
|
|
<P><TT>LIST <I>[ACTIVE [wild]]</I></TT></P></TD>
|
|
<TD vAlign=top width="60%">
|
|
<P>For all, active, or only matching group names,
|
|
list:<BR><TT><group> <last> <first> <post?></TT>
|
|
(<TT>y</TT>es/<TT>n</TT>o/<TT>m</TT>od)</TT></P></TD>
|
|
<TD vAlign=top align=middle width="10%">
|
|
<P>Yes</TT></P></TD></TR>
|
|
<TR>
|
|
<TD vAlign=top width="30%" bgColor=#008080>
|
|
<P><TT>LIST <I>DISTRIBUTIONS</I></TT></P></TD>
|
|
<TD vAlign=top width="60%" bgColor=#008080>
|
|
<P><TT>215</TT> lists & describes valid "regions" at this server
|
|
</TT></P></TD>
|
|
<TD vAlign=top align=middle width="10%" bgColor=#008080>
|
|
<P>Yes</TT></P></TD></TR>
|
|
<TR>
|
|
<TD vAlign=top width="30%">
|
|
<P><TT>LIST <I>NEWSGROUPS wild</I></TT></P></TD>
|
|
<TD vAlign=top width="60%"><TT>
|
|
<DL>
|
|
<DT>215</TT> lists one-line descriptions of all or matching groups
|
|
</DT></DL></TT>
|
|
<P></P></TD>
|
|
<TD vAlign=top align=middle width="10%">
|
|
<P>Yes</TT></P></TD></TR>
|
|
<TR>
|
|
<TD vAlign=top width="30%" bgColor=#008080><I>
|
|
<P><TT>LISTGROUP [ggg]</I></TT></P></TD>
|
|
<TD vAlign=top width="60%" bgColor=#008080>
|
|
<P><TT>211</TT> lists all articles by number; resets pointer to
|
|
first</TT></P></TD>
|
|
<TD vAlign=top align=middle width="10%" bgColor=#008080>
|
|
<P>Yes</TT></P></TD></TR>
|
|
<TR>
|
|
<TD vAlign=top width="30%"><I>
|
|
<P><TT>OVER [range]</I></TT></P></TD>
|
|
<TD vAlign=top width="60%">
|
|
<P><TT>224</TT> returns all headers cached in a news overview
|
|
dbase</TT></P></TD>
|
|
<TD vAlign=top align=middle width="10%">
|
|
<P>Yes</TT></P></TD></TR>
|
|
<TR>
|
|
<TD vAlign=top width="30%" bgColor=#008080><I>
|
|
<P><TT>PAT hdr range|ID pat</I></TT></P></TD>
|
|
<TD vAlign=top width="60%" bgColor=#008080><TT>
|
|
<DL>
|
|
<DT>221</TT> lists headers of specified articles with matching values
|
|
</DT></DL></TT>
|
|
<P></P></TD>
|
|
<TD vAlign=top align=middle width="10%" bgColor=#008080>
|
|
<P>Yes</TT></P></TD></TR>
|
|
<TR>
|
|
<TD vAlign=top width="30%">
|
|
<P><TT>NEWGROUPS time dist</TT></P></TD>
|
|
<TD vAlign=top width="60%"><TT>
|
|
<DL>
|
|
<DT>[YY]YYMMDD HHMMSS [GMT|UTC]</TT>; and distribution limits
|
|
</DT></DL></TT>
|
|
<P></P></TD>
|
|
<TD vAlign=top align=middle width="10%">
|
|
<P>Yes</TT></P></TD></TR>
|
|
<TR>
|
|
<TD vAlign=top width="30%" bgColor=#008080>
|
|
<P><TT>NEWNEWS gs time dist</TT></P></TD>
|
|
<TD vAlign=top width="60%" bgColor=#008080>
|
|
<P><TT>230</TT> lists article-IDs in group(s) -- wildcard matching is
|
|
OK</TT></P></TD>
|
|
<TD vAlign=top align=middle width="10%" bgColor=#008080>
|
|
<P>Yes</TT></P></TD></TR>
|
|
<TR>
|
|
<TD vAlign=top width="30%">
|
|
<P><TT>GROUP ggg</TT></P></TD>
|
|
<TD vAlign=top width="60%">
|
|
<P><TT>211 <est-num> <first> <last> <group>
|
|
selected</TT> [Sets current-article-pointer to first message of this
|
|
group, if the group doesn't exist the article pointer remains unchanged,
|
|
if the group exist but is empty the article pointer is indeterminate and
|
|
should be avoided]</TT></P></TD>
|
|
<TD vAlign=top align=middle width="10%">
|
|
<P><TT>Yes<BR>(To get High/Low marks)</TT></P></TD></TR>
|
|
<TR>
|
|
<TD vAlign=top width="30%" bgColor=#008080>
|
|
<P><TT>NEXT</TT></P></TD>
|
|
<TD vAlign=top width="60%" bgColor=#008080>
|
|
<P>Advances current-article-pointer (skips "holes')</TT></P></TD>
|
|
<TD vAlign=top align=middle width="10%" bgColor=#008080>
|
|
<P>Yes</TT></P></TD></TR>
|
|
<TR>
|
|
<TD vAlign=top width="30%" height=30>
|
|
<P><TT>LAST</TT></P></TD>
|
|
<TD vAlign=top width="60%" height=30>
|
|
<P>Advances current-article-pointer to end of group</TT></P></TD>
|
|
<TD vAlign=top align=middle width="10%">
|
|
<P>Yes</TT></P></TD></TR>
|
|
<TR>
|
|
<TD vAlign=top width="30%" bgColor=#008080>
|
|
<P><TT>ARTICLE[<msgid>|nnn]<BR>HEAD [<msgid>|nnn]<BR>BODY
|
|
[<msgid>|nnn]</TT></P></TD>
|
|
<TD vAlign=top width="60%" bgColor=#008080>
|
|
<P>Send current [or specified] article's headers, body, or both
|
|
<BR>Specifying an article-number advances the current-article<BR><TT>220
|
|
<art-num> <art-ID> head or body follows</TT></P></TD>
|
|
<TD vAlign=center align=middle width="10%" bgColor=#008080>
|
|
<P>Yes</TT></P></TD></TR>
|
|
<TR>
|
|
<TD vAlign=top width="30%">
|
|
<P><TT>STAT [<msgid>|nnn]</TT></P></TD>
|
|
<TD vAlign=top width="60%">
|
|
<P>Check if current [or specified] article is still valid; no
|
|
data</TT></P></TD>
|
|
<TD vAlign=top align=middle width="10%">
|
|
<P>Yes</TT></P></TD></TR>
|
|
<TR>
|
|
<TD vAlign=top width="30%" bgColor=#008080>
|
|
<P><TT>POST</TT></P></TD>
|
|
<TD vAlign=top width="60%" bgColor=#008080>
|
|
<P><TT>340 Send article</TT>; <TT>240 Received OK</TT> (for
|
|
clients)</TT></P></TD>
|
|
<TD vAlign=top align=middle width="10%" bgColor=#008080>
|
|
<P><TT>No</TT></P></TD></TR>
|
|
<TR>
|
|
<TD vAlign=top width="30%">
|
|
<P><TT>IHAVE <msgid></TT></P></TD>
|
|
<TD vAlign=top width="60%">
|
|
<P><TT>345 Transfer article</TT>; <TT>435 Not Wanted</TT> (for
|
|
servers)</TT></P></TD>
|
|
<TD vAlign=top align=middle width="10%">
|
|
<P><TT>No</TT></P></TD></TR>
|
|
<TR>
|
|
<TD vAlign=top width="30%" bgColor=#008080>
|
|
<P><TT><B>XHDR header [range|<msgid>]</B></TT></P></TD>
|
|
<TD vAlign=top width="60%" bgColor=#008080><TT>
|
|
<DT>
|
|
<P>221 lists article number/msgid followed by the header contents
|
|
</TT></P></DT></TD>
|
|
<TD vAlign=top align=middle width="10%" bgColor=#008080>
|
|
<P>Yes</TT></P></TD></TR>
|
|
<TR>
|
|
<TD vAlign=top width="30%">
|
|
<P><TT><B>XOVER [range]</B></TT></P></TD>
|
|
<TD vAlign=top width="60%">
|
|
<P><TT>224</TT> returns all headers cached in a news overview
|
|
dbase</TT></P></TD>
|
|
<TD vAlign=top align=middle width="10%">
|
|
<P>Yes</TT></P></TD></TR>
|
|
<TR>
|
|
<TD vAlign=top width="30%" bgColor=#008080>
|
|
<P><TT><B>XPAT hdr [range|<msgid>] pat</B></TT></P></TD>
|
|
<TD vAlign=top width="60%" bgColor=#008080><TT>
|
|
<DL>
|
|
<DT>221</TT> lists headers of specified articles with matching values
|
|
</DT></DL></TT>
|
|
<P></P></TD>
|
|
<TD vAlign=top align=middle width="10%" bgColor=#008080>
|
|
<P>Yes</TT></P></TD></TR></TBODY></TABLE><!-- start footer --><!-- Changed per Andrew, 2000/01/25 -->
|
|
<HR>
|
|
|
|
<CENTER>[<A href="http://www.newsreaders.com/">NewsReaders.com</A>] [<A
|
|
href="http://209.235.94.18/privatesuite/multiform.cgi?name=Webmaster">Webmaster</A>]
|
|
</CENTER>
|
|
<HR>
|
|
|
|
<CENTER>If you aren't happy with your ISP's newsfeed, try a <A
|
|
href="http://www.newsreaders.com/newsfeeds/index.html">subscription
|
|
newsfeed</A>. </CENTER><!-- end footer --></BODY></HTML>
|