Initial
This commit is contained in:
@@ -0,0 +1,290 @@
|
||||
<!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>
|
||||
Reference in New Issue
Block a user