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.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.
|
Command |
Action & Reply |
Client May Batch |
|
200 OK; 201 Posting OK; 205 Authenticate |
No |
|
MODE READER |
Optionally notes client is interactive; 200, 201, 205 replies |
No |
|
SLAVE |
Notes client serves many users [Obsolete]; 202 Noted |
No |
|
LIST EXTENSIONS |
202 Supported Extensions followed, one per line |
Yes |
|
AUTHINFO USER name |
A cleartext password system |
No |
|
AUTHINFO GENERIC ... |
|
No |
|
LIST [ACTIVE [wild]] |
For all, active, or only matching group names,
list: |
Yes |
|
LIST DISTRIBUTIONS |
215 lists & describes valid "regions" at this server |
Yes |
|
LIST NEWSGROUPS wild |
|
Yes |
|
LISTGROUP [ggg] |
211 lists all articles by number; resets pointer to first |
Yes |
|
OVER [range] |
224 returns all headers cached in a news overview dbase |
Yes |
|
PAT hdr range|ID pat |
|
Yes |
|
NEWGROUPS time dist |
|
Yes |
|
NEWNEWS gs time dist |
230 lists article-IDs in group(s) -- wildcard matching is OK |
Yes |
|
GROUP ggg |
211 <est-num> <first> <last> <group> selected [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] |
Yes |
|
NEXT |
Advances current-article-pointer (skips "holes') |
Yes |
|
LAST |
Advances current-article-pointer to end of group |
Yes |
|
ARTICLE[<msgid>|nnn] |
Send current [or specified] article's headers, body, or both
|
Yes |
|
STAT [<msgid>|nnn] |
Check if current [or specified] article is still valid; no data |
Yes |
|
POST |
340 Send article; 240 Received OK (for clients) |
No |
|
IHAVE <msgid> |
345 Transfer article; 435 Not Wanted (for servers) |
No |
|
XHDR header [range|<msgid>] |
221 lists article number/msgid followed by the header contents |
Yes |
|
XOVER [range] |
224 returns all headers cached in a news overview dbase |
Yes |
|
XPAT hdr [range|<msgid>] pat |
|
Yes |