Annotation of 43BSD/contrib/nntp/doc/rfc977, revision 1.1.1.1

1.1       root        1: 
                      2: 
                      3: Network Working Group                      Brian Kantor (U.C. San Diego)
                      4: Request for Comments: 977                   Phil Lapsley (U.C. Berkeley)
                      5:                                                            February 1986
                      6: 
                      7:                      Network News Transfer Protocol
                      8:                                     
                      9:                 A Proposed Standard for the Stream-Based
                     10:                           Transmission of News
                     11: 
                     12: Status of This Memo
                     13: 
                     14:    NNTP specifies a protocol for the distribution, inquiry, retrieval,
                     15:    and posting of news articles using a reliable stream-based
                     16:    transmission of news among the ARPA-Internet community.  NNTP is
                     17:    designed so that news articles are stored in a central database
                     18:    allowing a subscriber to select only those items he wishes to read.
                     19:    Indexing, cross-referencing, and expiration of aged messages are also
                     20:    provided. This RFC suggests a proposed protocol for the ARPA-Internet
                     21:    community, and requests discussion and suggestions for improvements.
                     22:    Distribution of this memo is unlimited.
                     23: 
                     24: 1.  Introduction
                     25: 
                     26:    For many years, the ARPA-Internet community has supported the
                     27:    distribution of bulletins, information, and data in a timely fashion
                     28:    to thousands of participants.  We collectively refer to such items of
                     29:    information as "news".  Such news provides for the rapid
                     30:    dissemination of items of interest such as software bug fixes, new
                     31:    product reviews, technical tips, and programming pointers, as well as
                     32:    rapid-fire discussions of matters of concern to the working computer
                     33:    professional. News is very popular among its readers.
                     34: 
                     35:    There are popularly two methods of distributing such news: the
                     36:    Internet method of direct mailing, and the USENET news system.
                     37: 
                     38: 1.1.  Internet Mailing Lists
                     39: 
                     40:    The Internet community distributes news by the use of mailing lists.
                     41:    These are lists of subscriber's mailbox addresses and remailing
                     42:    sublists of all intended recipients.  These mailing lists operate by
                     43:    remailing a copy of the information to be distributed to each
                     44:    subscriber on the mailing list.  Such remailing is inefficient when a
                     45:    mailing list grows beyond a dozen or so people, since sending a
                     46:    separate copy to each of the subscribers occupies large quantities of
                     47:    network bandwidth, CPU resources, and significant amounts of disk
                     48:    storage at the destination host.  There is also a significant problem
                     49:    in maintenance of the list itself: as subscribers move from one job
                     50:    to another; as new subscribers join and old ones leave; and as hosts
                     51:    come in and out of service.
                     52: 
                     53: 
                     54: 
                     55: 
                     56: Kantor & Lapsley                                                [Page 1]
                     57: 
                     58: 
                     59: 
                     60: RFC 977                                                    February 1986
                     61: Network News Transfer Protocol
                     62: 
                     63: 
                     64: 1.2.  The USENET News System
                     65: 
                     66:    Clearly, a worthwhile reduction of the amount of these resources used
                     67:    can be achieved if articles are stored in a central database on the
                     68:    receiving host instead of in each subscriber's mailbox. The USENET
                     69:    news system provides a method of doing just this.  There is a central
                     70:    repository of the news articles in one place (customarily a spool
                     71:    directory of some sort), and a set of programs that allow a
                     72:    subscriber to select those items he wishes to read.  Indexing,
                     73:    cross-referencing, and expiration of aged messages are also provided.
                     74: 
                     75: 1.3.  Central Storage of News
                     76: 
                     77:    For clusters of hosts connected together by fast local area networks
                     78:    (such as Ethernet), it makes even more sense to consolidate news
                     79:    distribution onto one (or a very few) hosts, and to allow access to
                     80:    these news articles using a server and client model.  Subscribers may
                     81:    then request only the articles they wish to see, without having to
                     82:    wastefully duplicate the storage of a copy of each item on each host.
                     83: 
                     84: 1.4.  A Central News Server
                     85: 
                     86:    A way to achieve these economies is to have a central computer system
                     87:    that can provide news service to the other systems on the local area
                     88:    network.  Such a server would manage the collection of news articles
                     89:    and index files, with each person who desires to read news bulletins
                     90:    doing so over the LAN.  For a large cluster of computer systems, the
                     91:    savings in total disk space is clearly worthwhile.  Also, this allows
                     92:    workstations with limited disk storage space to participate in the
                     93:    news without incoming items consuming oppressive amounts of the
                     94:    workstation's disk storage.
                     95: 
                     96:    We have heard rumors of somewhat successful attempts to provide
                     97:    centralized news service using IBIS and other shared or distributed
                     98:    file systems.  While it is possible that such a distributed file
                     99:    system implementation might work well with a group of similar
                    100:    computers running nearly identical operating systems, such a scheme
                    101:    is not general enough to offer service to a wide range of client
                    102:    systems, especially when many diverse operating systems may be in use
                    103:    among a group of clients.  There are few (if any) shared or networked
                    104:    file systems that can offer the generality of service that stream
                    105:    connections using Internet TCP provide, particularly when a wide
                    106:    range of host hardware and operating systems are considered.
                    107: 
                    108:    NNTP specifies a protocol for the distribution, inquiry, retrieval,
                    109:    and posting of news articles using a reliable stream (such as TCP)
                    110:    server-client model. NNTP is designed so that news articles need only
                    111: 
                    112: 
                    113: Kantor & Lapsley                                                [Page 2]
                    114: 
                    115: 
                    116: 
                    117: RFC 977                                                    February 1986
                    118: Network News Transfer Protocol
                    119: 
                    120: 
                    121:    be stored on one (presumably central) host, and subscribers on other
                    122:    hosts attached to the LAN may read news articles using stream
                    123:    connections to the news host.
                    124: 
                    125:    NNTP is modelled upon the news article specifications in RFC 850,
                    126:    which describes the USENET news system.  However, NNTP makes few
                    127:    demands upon the structure, content, or storage of news articles, and
                    128:    thus we believe it easily can be adapted to other non-USENET news
                    129:    systems.
                    130: 
                    131:    Typically, the NNTP server runs as a background process on one host,
                    132:    and would accept connections from other hosts on the LAN.  This works
                    133:    well when there are a number of small computer systems (such as
                    134:    workstations, with only one or at most a few users each), and a large
                    135:    central server.
                    136: 
                    137: 1.5.  Intermediate News Servers
                    138: 
                    139:    For clusters of machines with many users (as might be the case in a
                    140:    university or large industrial environment), an intermediate server
                    141:    might be used.  This intermediate or "slave" server runs on each
                    142:    computer system, and is responsible for mediating news reading
                    143:    requests and performing local caching of recently-retrieved news
                    144:    articles.
                    145: 
                    146:    Typically, a client attempting to obtain news service would first
                    147:    attempt to connect to the news service port on the local machine.  If
                    148:    this attempt were unsuccessful, indicating a failed server, an
                    149:    installation might choose to either deny news access, or to permit
                    150:    connection to the central "master" news server.
                    151: 
                    152:    For workstations or other small systems, direct connection to the
                    153:    master server would probably be the normal manner of operation.
                    154: 
                    155:    This specification does not cover the operation of slave NNTP
                    156:    servers.  We merely suggest that slave servers are a logical addition
                    157:    to NNTP server usage which would enhance operation on large local
                    158:    area networks.
                    159: 
                    160: 1.6.  News Distribution
                    161: 
                    162:    NNTP has commands which provide a straightforward method of
                    163:    exchanging articles between cooperating hosts. Hosts which are well
                    164:    connected on a local area or other fast network and who wish to
                    165:    actually obtain copies of news articles for local storage might well
                    166:    find NNTP to be a more efficient way to distribute news than more
                    167:    traditional transfer methods (such as UUCP).
                    168: 
                    169: 
                    170: Kantor & Lapsley                                                [Page 3]
                    171: 
                    172: 
                    173: 
                    174: RFC 977                                                    February 1986
                    175: Network News Transfer Protocol
                    176: 
                    177: 
                    178:    In the traditional method of distributing news articles, news is
                    179:    propagated from host to host by flooding - that is, each host will
                    180:    send all its new news articles on to each host that it feeds.  These
                    181:    hosts will then in turn send these new articles on to other hosts
                    182:    that they feed.  Clearly, sending articles that a host already has
                    183:    obtained a copy of from another feed (many hosts that receive news
                    184:    are redundantly fed) again is a waste of time and communications
                    185:    resources, but for transport mechanisms that are single-transaction
                    186:    based rather than interactive (such as UUCP in the UNIX-world <1>),
                    187:    distribution time is diminished by sending all articles and having
                    188:    the receiving host simply discard the duplicates.  This is an
                    189:    especially true when communications sessions are limited to once a
                    190:    day.
                    191: 
                    192:    Using NNTP, hosts exchanging news articles have an interactive
                    193:    mechanism for deciding which articles are to be transmitted.  A host
                    194:    desiring new news, or which has new news to send, will typically
                    195:    contact one or more of its neighbors using NNTP.  First it will
                    196:    inquire if any new news groups have been created on the serving host
                    197:    by means of the NEWGROUPS command.  If so, and those are appropriate
                    198:    or desired (as established by local site-dependent rules), those new
                    199:    newsgroups can be created.
                    200: 
                    201:    The client host will then inquire as to which new articles have
                    202:    arrived in all or some of the newsgroups that it desires to receive,
                    203:    using the NEWNEWS command.  It will receive a list of new articles
                    204:    from the server, and can request transmission of those articles that
                    205:    it desires and does not already have.
                    206: 
                    207:    Finally, the client can advise the server of those new articles which
                    208:    the client has recently received.  The server will indicate those
                    209:    articles that it has already obtained copies of, and which articles
                    210:    should be sent to add to its collection.
                    211: 
                    212:    In this manner, only those articles which are not duplicates and
                    213:    which are desired are transferred.
                    214: 
                    215: 
                    216: 
                    217: 
                    218: 
                    219: 
                    220: 
                    221: 
                    222: 
                    223: 
                    224: 
                    225: 
                    226: 
                    227: Kantor & Lapsley                                                [Page 4]
                    228: 
                    229: 
                    230: 
                    231: RFC 977                                                    February 1986
                    232: Network News Transfer Protocol
                    233: 
                    234: 
                    235: 2.  The NNTP Specification
                    236: 
                    237: 2.1.  Overview
                    238: 
                    239:    The news server specified by this document uses a stream connection
                    240:    (such as TCP) and SMTP-like commands and responses.  It is designed
                    241:    to accept connections from hosts, and to provide a simple interface
                    242:    to the news database.
                    243: 
                    244:    This server is only an interface between programs and the news
                    245:    databases. It does not perform any user interaction or presentation-
                    246:    level functions. These "user-friendly" functions are better left to
                    247:    the client programs, which have a better understanding of the
                    248:    environment in which they are operating.
                    249: 
                    250:    When used via Internet TCP, the contact port assigned for this
                    251:    service is 119.
                    252: 
                    253: 2.2.  Character Codes
                    254: 
                    255:    Commands and replies are composed of characters from the ASCII
                    256:    character set.  When the transport service provides an 8-bit byte
                    257:    (octet) transmission channel, each 7-bit character is transmitted
                    258:    right justified in an octet with the high order bit cleared to zero.
                    259: 
                    260: 2.3.  Commands
                    261: 
                    262:    Commands consist of a command word, which in some cases may be
                    263:    followed by a parameter.  Commands with parameters must separate the
                    264:    parameters from each other and from the command by one or more space
                    265:    or tab characters.  Command lines must be complete with all required
                    266:    parameters, and may not contain more than one command.
                    267: 
                    268:    Commands and command parameters are not case sensitive. That is, a
                    269:    command or parameter word may be upper case, lower case, or any
                    270:    mixture of upper and lower case.
                    271: 
                    272:    Each command line must be terminated by a CR-LF (Carriage Return -
                    273:    Line Feed) pair.
                    274: 
                    275:    Command lines shall not exceed 512 characters in length, counting all
                    276:    characters including spaces, separators, punctuation, and the
                    277:    trailing CR-LF (thus there are 510 characters maximum allowed for the
                    278:    command and its parameters).  There is no provision for continuation
                    279:    command lines.
                    280: 
                    281: 
                    282: 
                    283: 
                    284: Kantor & Lapsley                                                [Page 5]
                    285: 
                    286: 
                    287: 
                    288: RFC 977                                                    February 1986
                    289: Network News Transfer Protocol
                    290: 
                    291: 
                    292: 2.4.  Responses
                    293: 
                    294:    Responses are of two kinds, textual and status.
                    295: 
                    296: 2.4.1.  Text Responses
                    297: 
                    298:    Text is sent only after a numeric status response line has been sent
                    299:    that indicates that text will follow.  Text is sent as a series of
                    300:    successive lines of textual matter, each terminated with CR-LF pair.
                    301:    A single line containing only a period (.) is sent to indicate the
                    302:    end of the text (i.e., the server will send a CR-LF pair at the end
                    303:    of the last line of text, a period, and another CR-LF pair).
                    304: 
                    305:    If the text contained a period as the first character of the text
                    306:    line in the original, that first period is doubled.  Therefore, the
                    307:    client must examine the first character of each line received, and
                    308:    for those beginning with a period, determine either that this is the
                    309:    end of the text or whether to collapse the doubled period to a single
                    310:    one.
                    311: 
                    312:    The intention is that text messages will usually be displayed on the
                    313:    user's terminal whereas command/status responses will be interpreted
                    314:    by the client program before any possible display is done.
                    315: 
                    316: 2.4.2.  Status Responses
                    317: 
                    318:    These are status reports from the server and indicate the response to
                    319:    the last command received from the client.
                    320: 
                    321:    Status response lines begin with a 3 digit numeric code which is
                    322:    sufficient to distinguish all responses.  Some of these may herald
                    323:    the subsequent transmission of text.
                    324: 
                    325:    The first digit of the response broadly indicates the success,
                    326:    failure, or progress of the previous command.
                    327: 
                    328:       1xx - Informative message
                    329:       2xx - Command ok
                    330:       3xx - Command ok so far, send the rest of it.
                    331:       4xx - Command was correct, but couldn't be performed for
                    332:             some reason.
                    333:       5xx - Command unimplemented, or incorrect, or a serious
                    334:             program error occurred.
                    335: 
                    336: 
                    337: 
                    338: 
                    339: 
                    340: 
                    341: Kantor & Lapsley                                                [Page 6]
                    342: 
                    343: 
                    344: 
                    345: RFC 977                                                    February 1986
                    346: Network News Transfer Protocol
                    347: 
                    348: 
                    349:    The next digit in the code indicates the function response category.
                    350: 
                    351:       x0x - Connection, setup, and miscellaneous messages
                    352:       x1x - Newsgroup selection
                    353:       x2x - Article selection
                    354:       x3x - Distribution functions
                    355:       x4x - Posting
                    356:       x8x - Nonstandard (private implementation) extensions
                    357:       x9x - Debugging output
                    358: 
                    359:    The exact response codes that should be expected from each command
                    360:    are detailed in the description of that command.  In addition, below
                    361:    is listed a general set of response codes that may be received at any
                    362:    time.
                    363: 
                    364:    Certain status responses contain parameters such as numbers and
                    365:    names. The number and type of such parameters is fixed for each
                    366:    response code to simplify interpretation of the response.
                    367: 
                    368:    Parameters are separated from the numeric response code and from each
                    369:    other by a single space. All numeric parameters are decimal, and may
                    370:    have leading zeros. All string parameters begin after the separating
                    371:    space, and end before the following separating space or the CR-LF
                    372:    pair at the end of the line. (String parameters may not, therefore,
                    373:    contain spaces.) All text, if any, in the response which is not a
                    374:    parameter of the response must follow and be separated from the last
                    375:    parameter by a space.  Also, note that the text following a response
                    376:    number may vary in different implementations of the server. The
                    377:    3-digit numeric code should be used to determine what response was
                    378:    sent.
                    379: 
                    380:    Response codes not specified in this standard may be used for any
                    381:    installation-specific additional commands also not specified. These
                    382:    should be chosen to fit the pattern of x8x specified above.  (Note
                    383:    that debugging is provided for explicitly in the x9x response codes.)
                    384:    The use of unspecified response codes for standard commands is
                    385:    prohibited.
                    386: 
                    387:    We have provided a response pattern x9x for debugging.  Since much
                    388:    debugging output may be classed as "informative messages", we would
                    389:    expect, therefore, that responses 190 through 199 would be used for
                    390:    various debugging outputs.  There is no requirement in this
                    391:    specification for debugging output, but if such is provided over the
                    392:    connected stream, it must use these response codes.  If appropriate
                    393:    to a specific implementation, other x9x codes may be used for
                    394:    debugging.  (An example might be to use e.g., 290 to acknowledge a
                    395:    remote debugging request.)
                    396: 
                    397: 
                    398: Kantor & Lapsley                                                [Page 7]
                    399: 
                    400: 
                    401: 
                    402: RFC 977                                                    February 1986
                    403: Network News Transfer Protocol
                    404: 
                    405: 
                    406: 2.4.3.  General Responses
                    407: 
                    408:    The following is a list of general response codes that may be sent by
                    409:    the NNTP server.  These are not specific to any one command, but may
                    410:    be returned as the result of a connection, a failure, or some unusual
                    411:    condition.
                    412: 
                    413:    In general, 1xx codes may be ignored or displayed as desired;  code
                    414:    200 or 201 is sent upon initial connection to the NNTP server
                    415:    depending upon posting permission; code 400 will be sent when the
                    416:    NNTP server discontinues service (by operator request, for example);
                    417:    and 5xx codes indicate that the command could not be performed for
                    418:    some unusual reason.
                    419: 
                    420:       100 help text
                    421:       190
                    422:         through
                    423:       199 debug output
                    424: 
                    425:       200 server ready - posting allowed
                    426:       201 server ready - no posting allowed
                    427: 
                    428:       400 service discontinued
                    429: 
                    430:       500 command not recognized
                    431:       501 command syntax error
                    432:       502 access restriction or permission denied
                    433:       503 program fault - command not performed
                    434: 
                    435: 3.  Command and Response Details
                    436: 
                    437:    On the following pages are descriptions of each command recognized by
                    438:    the NNTP server and the responses which will be returned by those
                    439:    commands.
                    440: 
                    441:    Each command is shown in upper case for clarity, although case is
                    442:    ignored in the interpretation of commands by the NNTP server.  Any
                    443:    parameters are shown in lower case.  A parameter shown in [square
                    444:    brackets] is optional.  For example, [GMT] indicates that the
                    445:    triglyph GMT may present or omitted.
                    446: 
                    447:    Every command described in this section must be implemented by all
                    448:    NNTP servers.
                    449: 
                    450: 
                    451: 
                    452: 
                    453: 
                    454: 
                    455: Kantor & Lapsley                                                [Page 8]
                    456: 
                    457: 
                    458: 
                    459: RFC 977                                                    February 1986
                    460: Network News Transfer Protocol
                    461: 
                    462: 
                    463:    There is no prohibition against additional commands being added;
                    464:    however, it is recommended that any such unspecified command begin
                    465:    with the letter "X" to avoid conflict with later revisions of this
                    466:    specification.
                    467: 
                    468:    Implementors are reminded that such additional commands may not
                    469:    redefine specified status response codes.  Using additional
                    470:    unspecified responses for standard commands is also prohibited.
                    471: 
                    472: 3.1.  The ARTICLE, BODY, HEAD, and STAT commands
                    473: 
                    474:    There are two forms to the ARTICLE command (and the related BODY,
                    475:    HEAD, and STAT commands), each using a different method of specifying
                    476:    which article is to be retrieved.  When the ARTICLE command is
                    477:    followed by a message-id in angle brackets ("<" and ">"), the first
                    478:    form of the command is used; when a numeric parameter or no parameter
                    479:    is supplied, the second form is invoked.
                    480: 
                    481:    The text of the article is returned as a textual response, as
                    482:    described earlier in this document.
                    483: 
                    484:    The HEAD and BODY commands are identical to the ARTICLE command
                    485:    except that they respectively return only the header lines or text
                    486:    body of the article.
                    487: 
                    488:    The STAT command is similar to the ARTICLE command except that no
                    489:    text is returned.  When selecting by message number within a group,
                    490:    the STAT command serves to set the current article pointer without
                    491:    sending text. The returned acknowledgement response will contain the
                    492:    message-id, which may be of some value.  Using the STAT command to
                    493:    select by message-id is valid but of questionable value, since a
                    494:    selection by message-id does NOT alter the "current article pointer".
                    495: 
                    496: 3.1.1.  ARTICLE (selection by message-id)
                    497: 
                    498:    ARTICLE <message-id>
                    499: 
                    500:    Display the header, a blank line, then the body (text) of the
                    501:    specified article.  Message-id is the message id of an article as
                    502:    shown in that article's header.  It is anticipated that the client
                    503:    will obtain the message-id from a list provided by the NEWNEWS
                    504:    command, from references contained within another article, or from
                    505:    the message-id provided in the response to some other commands.
                    506: 
                    507:    Please note that the internally-maintained "current article pointer"
                    508:    is NOT ALTERED by this command. This is both to facilitate the
                    509:    presentation of articles that may be referenced within an article
                    510: 
                    511: 
                    512: Kantor & Lapsley                                                [Page 9]
                    513: 
                    514: 
                    515: 
                    516: RFC 977                                                    February 1986
                    517: Network News Transfer Protocol
                    518: 
                    519: 
                    520:    being read, and because of the semantic difficulties of determining
                    521:    the proper sequence and membership of an article which may have been
                    522:    posted to more than one newsgroup.
                    523: 
                    524: 3.1.2.  ARTICLE (selection by number)
                    525: 
                    526:    ARTICLE [nnn]
                    527: 
                    528:    Displays the header, a blank line, then the body (text) of the
                    529:    current or specified article.  The optional parameter nnn is the
                    530: 
                    531:    numeric id of an article in the current newsgroup and must be chosen
                    532:    from the range of articles provided when the newsgroup was selected.
                    533:    If it is omitted, the current article is assumed.
                    534: 
                    535:    The internally-maintained "current article pointer" is set by this
                    536:    command if a valid article number is specified.
                    537: 
                    538:    [the following applies to both forms of the article command.] A
                    539:    response indicating the current article number, a message-id string,
                    540:    and that text is to follow will be returned.
                    541: 
                    542:    The message-id string returned is an identification string contained
                    543:    within angle brackets ("<" and ">"), which is derived from the header
                    544:    of the article itself.  The Message-ID header line (required by
                    545:    RFC850) from the article must be used to supply this information. If
                    546:    the message-id header line is missing from the article, a single
                    547:    digit "0" (zero) should be supplied within the angle brackets.
                    548: 
                    549:    Since the message-id field is unique with each article, it may be
                    550:    used by a news reading program to skip duplicate displays of articles
                    551:    that have been posted more than once, or to more than one newsgroup.
                    552: 
                    553: 3.1.3.  Responses
                    554: 
                    555:    220 n <a> article retrieved - head and body follow
                    556:            (n = article number, <a> = message-id)
                    557:    221 n <a> article retrieved - head follows
                    558:    222 n <a> article retrieved - body follows
                    559:    223 n <a> article retrieved - request text separately
                    560:    412 no newsgroup has been selected
                    561:    420 no current article has been selected
                    562:    423 no such article number in this group
                    563:    430 no such article found
                    564: 
                    565: 
                    566: 
                    567: 
                    568: 
                    569: Kantor & Lapsley                                               [Page 10]
                    570: 
                    571: 
                    572: 
                    573: RFC 977                                                    February 1986
                    574: Network News Transfer Protocol
                    575: 
                    576: 
                    577: 3.2.  The GROUP command
                    578: 
                    579: 3.2.1.  GROUP
                    580: 
                    581:    GROUP ggg
                    582: 
                    583:    The required parameter ggg is the name of the newsgroup to be
                    584:    selected (e.g. "net.news").  A list of valid newsgroups may be
                    585:    obtained from the LIST command.
                    586: 
                    587:    The successful selection response will return the article numbers of
                    588:    the first and last articles in the group, and an estimate of the
                    589:    number of articles on file in the group.  It is not necessary that
                    590:    the estimate be correct, although that is helpful; it must only be
                    591:    equal to or larger than the actual number of articles on file.  (Some
                    592:    implementations will actually count the number of articles on file.
                    593:    Others will just subtract first article number from last to get an
                    594:    estimate.)
                    595: 
                    596:    When a valid group is selected by means of this command, the
                    597:    internally maintained "current article pointer" is set to the first
                    598:    article in the group.  If an invalid group is specified, the
                    599:    previously selected group and article remain selected.  If an empty
                    600:    newsgroup is selected, the "current article pointer" is in an
                    601:    indeterminate state and should not be used.
                    602: 
                    603:    Note that the name of the newsgroup is not case-dependent.  It must
                    604:    otherwise match a newsgroup obtained from the LIST command or an
                    605:    error will result.
                    606: 
                    607: 3.2.2.  Responses
                    608: 
                    609:    211 n f l s group selected
                    610:            (n = estimated number of articles in group,
                    611:            f = first article number in the group,
                    612:            l = last article number in the group,
                    613:            s = name of the group.)
                    614:    411 no such news group
                    615: 
                    616: 
                    617: 
                    618: 
                    619: 
                    620: 
                    621: 
                    622: 
                    623: 
                    624: 
                    625: 
                    626: Kantor & Lapsley                                               [Page 11]
                    627: 
                    628: 
                    629: 
                    630: RFC 977                                                    February 1986
                    631: Network News Transfer Protocol
                    632: 
                    633: 
                    634: 3.3.  The HELP command
                    635: 
                    636: 3.3.1.  HELP
                    637: 
                    638:    HELP
                    639: 
                    640:    Provides a short summary of commands that are understood by this
                    641:    implementation of the server. The help text will be presented as a
                    642:    textual response, terminated by a single period on a line by itself.
                    643: 
                    644:    3.3.2.  Responses
                    645: 
                    646:    100 help text follows
                    647: 
                    648: 3.4.  The IHAVE command
                    649: 
                    650: 3.4.1.  IHAVE
                    651: 
                    652:    IHAVE <messageid>
                    653: 
                    654:    The IHAVE command informs the server that the client has an article
                    655:    whose id is <messageid>.  If the server desires a copy of that
                    656:    article, it will return a response instructing the client to send the
                    657:    entire article.  If the server does not want the article (if, for
                    658:    example, the server already has a copy of it), a response indicating
                    659:    that the article is not wanted will be returned.
                    660: 
                    661:    If transmission of the article is requested, the client should send
                    662:    the entire article, including header and body, in the manner
                    663:    specified for text transmission from the server. A response code
                    664:    indicating success or failure of the transferral of the article will
                    665:    be returned.
                    666: 
                    667:    This function differs from the POST command in that it is intended
                    668:    for use in transferring already-posted articles between hosts.
                    669:    Normally it will not be used when the client is a personal
                    670:    newsreading program.  In particular, this function will invoke the
                    671:    server's news posting program with the appropriate settings (flags,
                    672:    options, etc) to indicate that the forthcoming article is being
                    673:    forwarded from another host.
                    674: 
                    675:    The server may, however, elect not to post or forward the article if
                    676:    after further examination of the article it deems it inappropriate to
                    677:    do so.  The 436 or 437 error codes may be returned as appropriate to
                    678:    the situation.
                    679: 
                    680:    Reasons for such subsequent rejection of an article may include such
                    681: 
                    682: 
                    683: Kantor & Lapsley                                               [Page 12]
                    684: 
                    685: 
                    686: 
                    687: RFC 977                                                    February 1986
                    688: Network News Transfer Protocol
                    689: 
                    690: 
                    691:    problems as inappropriate newsgroups or distributions, disk space
                    692:    limitations, article lengths, garbled headers, and the like.  These
                    693:    are typically restrictions enforced by the server host's news
                    694:    software and not necessarily the NNTP server itself.
                    695: 
                    696: 3.4.2.  Responses
                    697: 
                    698:    235 article transferred ok
                    699:    335 send article to be transferred.  End with <CR-LF>.<CR-LF>
                    700:    435 article not wanted - do not send it
                    701:    436 transfer failed - try again later
                    702:    437 article rejected - do not try again
                    703: 
                    704:    An implementation note:
                    705: 
                    706:    Because some host news posting software may not be able to decide
                    707:    immediately that an article is inappropriate for posting or
                    708:    forwarding, it is acceptable to acknowledge the successful transfer
                    709:    of the article and to later silently discard it.  Thus it is
                    710:    permitted to return the 235 acknowledgement code and later discard
                    711:    the received article.  This is not a fully satisfactory solution to
                    712:    the problem.  Perhaps some implementations will wish to send mail to
                    713:    the author of the article in certain of these cases.
                    714: 
                    715: 3.5.  The LAST command
                    716: 
                    717: 3.5.1.  LAST
                    718: 
                    719:    LAST
                    720: 
                    721:    The internally maintained "current article pointer" is set to the
                    722:    previous article in the current newsgroup.  If already positioned at
                    723:    the first article of the newsgroup, an error message is returned and
                    724:    the current article remains selected.
                    725: 
                    726:    The internally-maintained "current article pointer" is set by this
                    727:    command.
                    728: 
                    729:    A response indicating the current article number, and a message-id
                    730:    string will be returned.  No text is sent in response to this
                    731:    command.
                    732: 
                    733: 3.5.2.  Responses
                    734: 
                    735:    223 n a article retrieved - request text separately
                    736:            (n = article number, a = unique article id)
                    737: 
                    738: 
                    739: 
                    740: Kantor & Lapsley                                               [Page 13]
                    741: 
                    742: 
                    743: 
                    744: RFC 977                                                    February 1986
                    745: Network News Transfer Protocol
                    746: 
                    747: 
                    748:    412 no newsgroup selected
                    749:    420 no current article has been selected
                    750:    422 no previous article in this group
                    751: 
                    752: 3.6.  The LIST command
                    753: 
                    754: 3.6.1.  LIST
                    755: 
                    756:    LIST
                    757: 
                    758:    Returns a list of valid newsgroups and associated information.  Each
                    759:    newsgroup is sent as a line of text in the following format:
                    760: 
                    761:       group last first p
                    762: 
                    763:    where <group> is the name of the newsgroup, <last> is the number of
                    764:    the last known article currently in that newsgroup, <first> is the
                    765:    number of the first article currently in the newsgroup, and <p> is
                    766:    either 'y' or 'n' indicating whether posting to this newsgroup is
                    767:    allowed ('y') or prohibited ('n').
                    768: 
                    769:    The <first> and <last> fields will always be numeric.  They may have
                    770:    leading zeros.  If the <last> field evaluates to less than the
                    771:    <first> field, there are no articles currently on file in the
                    772:    newsgroup.
                    773: 
                    774:    Note that posting may still be prohibited to a client even though the
                    775:    LIST command indicates that posting is permitted to a particular
                    776:    newsgroup. See the POST command for an explanation of client
                    777:    prohibitions.  The posting flag exists for each newsgroup because
                    778:    some newsgroups are moderated or are digests, and therefore cannot be
                    779:    posted to; that is, articles posted to them must be mailed to a
                    780:    moderator who will post them for the submitter.  This is independent
                    781:    of the posting permission granted to a client by the NNTP server.
                    782: 
                    783:    Please note that an empty list (i.e., the text body returned by this
                    784:    command consists only of the terminating period) is a possible valid
                    785:    response, and indicates that there are currently no valid newsgroups.
                    786: 
                    787: 3.6.2.  Responses
                    788: 
                    789:    215 list of newsgroups follows
                    790: 
                    791: 
                    792: 
                    793: 
                    794: 
                    795: 
                    796: 
                    797: Kantor & Lapsley                                               [Page 14]
                    798: 
                    799: 
                    800: 
                    801: RFC 977                                                    February 1986
                    802: Network News Transfer Protocol
                    803: 
                    804: 
                    805: 3.7.  The NEWGROUPS command
                    806: 
                    807: 3.7.1.  NEWGROUPS
                    808: 
                    809:    NEWGROUPS date time [GMT] [<distributions>]
                    810: 
                    811:    A list of newsgroups created since <date and time> will be listed in
                    812:    the same format as the LIST command.
                    813: 
                    814:    The date is sent as 6 digits in the format YYMMDD, where YY is the
                    815:    last two digits of the year, MM is the two digits of the month (with
                    816:    leading zero, if appropriate), and DD is the day of the month (with
                    817:    leading zero, if appropriate).  The closest century is assumed as
                    818:    part of the year (i.e., 86 specifies 1986, 30 specifies 2030, 99 is
                    819:    1999, 00 is 2000).
                    820: 
                    821:    Time must also be specified.  It must be as 6 digits HHMMSS with HH
                    822:    being hours on the 24-hour clock, MM minutes 00-59, and SS seconds
                    823:    00-59.  The time is assumed to be in the server's timezone unless the
                    824:    token "GMT" appears, in which case both time and date are evaluated
                    825:    at the 0 meridian.
                    826: 
                    827:    The optional parameter "distributions" is a list of distribution
                    828:    groups, enclosed in angle brackets.  If specified, the distribution
                    829:    portion of a new newsgroup (e.g, 'net' in 'net.wombat') will be
                    830:    examined for a match with the distribution categories listed, and
                    831:    only those new newsgroups which match will be listed.  If more than
                    832:    one distribution group is to be listed, they must be separated by
                    833:    commas within the angle brackets.
                    834: 
                    835:    Please note that an empty list (i.e., the text body returned by this
                    836:    command consists only of the terminating period) is a possible valid
                    837:    response, and indicates that there are currently no new newsgroups.
                    838: 
                    839: 3.7.2.  Responses
                    840: 
                    841:    231 list of new newsgroups follows
                    842: 
                    843: 
                    844: 
                    845: 
                    846: 
                    847: 
                    848: 
                    849: 
                    850: 
                    851: 
                    852: 
                    853: 
                    854: Kantor & Lapsley                                               [Page 15]
                    855: 
                    856: 
                    857: 
                    858: RFC 977                                                    February 1986
                    859: Network News Transfer Protocol
                    860: 
                    861: 
                    862: 3.8.  The NEWNEWS command
                    863: 
                    864: 3.8.1.  NEWNEWS
                    865: 
                    866:    NEWNEWS newsgroups date time [GMT] [<distribution>]
                    867: 
                    868:    A list of message-ids of articles posted or received to the specified
                    869:    newsgroup since "date" will be listed. The format of the listing will
                    870:    be one message-id per line, as though text were being sent.  A single
                    871:    line consisting solely of one period followed by CR-LF will terminate
                    872:    the list.
                    873: 
                    874:    Date and time are in the same format as the NEWGROUPS command.
                    875: 
                    876:    A newsgroup name containing a "*" (an asterisk) may be specified to
                    877:    broaden the article search to some or all newsgroups.  The asterisk
                    878:    will be extended to match any part of a newsgroup name (e.g.,
                    879:    net.micro* will match net.micro.wombat, net.micro.apple, etc). Thus
                    880:    if only an asterisk is given as the newsgroup name, all newsgroups
                    881:    will be searched for new news.
                    882: 
                    883:    (Please note that the asterisk "*" expansion is a general
                    884:    replacement; in particular, the specification of e.g., net.*.unix
                    885:    should be correctly expanded to embrace names such as net.wombat.unix
                    886:    and net.whocares.unix.)
                    887: 
                    888:    Conversely, if no asterisk appears in a given newsgroup name, only
                    889:    the specified newsgroup will be searched for new articles. Newsgroup
                    890:    names must be chosen from those returned in the listing of available
                    891:    groups.  Multiple newsgroup names (including a "*") may be specified
                    892:    in this command, separated by a comma.  No comma shall appear after
                    893:    the last newsgroup in the list.  [Implementors are cautioned to keep
                    894:    the 512 character command length limit in mind.]
                    895: 
                    896:    The exclamation point ("!") may be used to negate a match. This can
                    897:    be used to selectively omit certain newsgroups from an otherwise
                    898:    larger list.  For example, a newsgroups specification of
                    899:    "net.*,mod.*,!mod.map.*" would specify that all net.<anything> and
                    900:    all mod.<anything> EXCEPT mod.map.<anything> newsgroup names would be
                    901:    matched.  If used, the exclamation point must appear as the first
                    902:    character of the given newsgroup name or pattern.
                    903: 
                    904:    The optional parameter "distributions" is a list of distribution
                    905:    groups, enclosed in angle brackets.  If specified, the distribution
                    906:    portion of an article's newsgroup (e.g, 'net' in 'net.wombat') will
                    907:    be examined for a match with the distribution categories listed, and
                    908:    only those articles which have at least one newsgroup belonging to
                    909: 
                    910: 
                    911: Kantor & Lapsley                                               [Page 16]
                    912: 
                    913: 
                    914: 
                    915: RFC 977                                                    February 1986
                    916: Network News Transfer Protocol
                    917: 
                    918: 
                    919:    the list of distributions will be listed.  If more than one
                    920:    distribution group is to be supplied, they must be separated by
                    921:    commas within the angle brackets.
                    922: 
                    923:    The use of the IHAVE, NEWNEWS, and NEWGROUPS commands to distribute
                    924:    news is discussed in an earlier part of this document.
                    925: 
                    926:    Please note that an empty list (i.e., the text body returned by this
                    927:    command consists only of the terminating period) is a possible valid
                    928:    response, and indicates that there is currently no new news.
                    929: 
                    930: 3.8.2.  Responses
                    931: 
                    932:    230 list of new articles by message-id follows
                    933: 
                    934: 3.9.  The NEXT command
                    935: 
                    936: 3.9.1.  NEXT
                    937: 
                    938:    NEXT
                    939: 
                    940:    The internally maintained "current article pointer" is advanced to
                    941:    the next article in the current newsgroup.  If no more articles
                    942:    remain in the current group, an error message is returned and the
                    943:    current article remains selected.
                    944: 
                    945:    The internally-maintained "current article pointer" is set by this
                    946:    command.
                    947: 
                    948:    A response indicating the current article number, and the message-id
                    949:    string will be returned.  No text is sent in response to this
                    950:    command.
                    951: 
                    952: 3.9.2.  Responses
                    953: 
                    954:    223 n a article retrieved - request text separately
                    955:            (n = article number, a = unique article id)
                    956:    412 no newsgroup selected
                    957:    420 no current article has been selected
                    958:    421 no next article in this group
                    959: 
                    960: 
                    961: 
                    962: 
                    963: 
                    964: 
                    965: 
                    966: 
                    967: 
                    968: Kantor & Lapsley                                               [Page 17]
                    969: 
                    970: 
                    971: 
                    972: RFC 977                                                    February 1986
                    973: Network News Transfer Protocol
                    974: 
                    975: 
                    976: 3.10.  The POST command
                    977: 
                    978: 3.10.1.  POST
                    979: 
                    980:    POST
                    981: 
                    982:    If posting is allowed, response code 340 is returned to indicate that
                    983:    the article to be posted should be sent. Response code 440 indicates
                    984:    that posting is prohibited for some installation-dependent reason.
                    985: 
                    986:    If posting is permitted, the article should be presented in the
                    987:    format specified by RFC850, and should include all required header
                    988:    lines. After the article's header and body have been completely sent
                    989:    by the client to the server, a further response code will be returned
                    990:    to indicate success or failure of the posting attempt.
                    991: 
                    992:    The text forming the header and body of the message to be posted
                    993:    should be sent by the client using the conventions for text received
                    994:    from the news server:  A single period (".") on a line indicates the
                    995:    end of the text, with lines starting with a period in the original
                    996:    text having that period doubled during transmission.
                    997: 
                    998:    No attempt shall be made by the server to filter characters, fold or
                    999:    limit lines, or otherwise process incoming text.  It is our intent
                   1000:    that the server just pass the incoming message to be posted to the
                   1001:    server installation's news posting software, which is separate from
                   1002:    this specification.  See RFC850 for more details.
                   1003: 
                   1004:    Since most installations will want the client news program to allow
                   1005:    the user to prepare his message using some sort of text editor, and
                   1006:    transmit it to the server for posting only after it is composed, the
                   1007:    client program should take note of the herald message that greeted it
                   1008:    when the connection was first established. This message indicates
                   1009:    whether postings from that client are permitted or not, and can be
                   1010:    used to caution the user that his access is read-only if that is the
                   1011:    case. This will prevent the user from wasting a good deal of time
                   1012:    composing a message only to find posting of the message was denied.
                   1013:    The method and determination of which clients and hosts may post is
                   1014:    installation dependent and is not covered by this specification.
                   1015: 
                   1016: 3.10.2.  Responses
                   1017: 
                   1018:    240 article posted ok
                   1019:    340 send article to be posted. End with <CR-LF>.<CR-LF>
                   1020:    440 posting not allowed
                   1021:    441 posting failed
                   1022: 
                   1023: 
                   1024: 
                   1025: Kantor & Lapsley                                               [Page 18]
                   1026: 
                   1027: 
                   1028: 
                   1029: RFC 977                                                    February 1986
                   1030: Network News Transfer Protocol
                   1031: 
                   1032: 
                   1033:    (for reference, one of the following codes will be sent upon initial
                   1034:    connection; the client program should determine whether posting is
                   1035:    generally permitted from these:) 200 server ready - posting allowed
                   1036:    201 server ready - no posting allowed
                   1037: 
                   1038: 3.11.  The QUIT command
                   1039: 
                   1040: 3.11.1.  QUIT
                   1041: 
                   1042:    QUIT
                   1043: 
                   1044:    The server process acknowledges the QUIT command and then closes the
                   1045:    connection to the client.  This is the preferred method for a client
                   1046:    to indicate that it has finished all its transactions with the NNTP
                   1047:    server.
                   1048: 
                   1049:    If a client simply disconnects (or the connection times out, or some
                   1050:    other fault occurs), the server should gracefully cease its attempts
                   1051:    to service the client.
                   1052: 
                   1053: 3.11.2.  Responses
                   1054: 
                   1055:    205 closing connection - goodbye!
                   1056: 
                   1057: 3.12.  The SLAVE command
                   1058: 
                   1059: 3.12.1.  SLAVE
                   1060: 
                   1061:    SLAVE
                   1062: 
                   1063:    Indicates to the server that this client connection is to a slave
                   1064:    server, rather than a user.
                   1065: 
                   1066:    This command is intended for use in separating connections to single
                   1067:    users from those to subsidiary ("slave") servers.  It may be used to
                   1068:    indicate that priority should therefore be given to requests from
                   1069:    this client, as it is presumably serving more than one person.  It
                   1070:    might also be used to determine which connections to close when
                   1071:    system load levels are exceeded, perhaps giving preference to slave
                   1072:    servers.  The actual use this command is put to is entirely
                   1073:    implementation dependent, and may vary from one host to another.  In
                   1074:    NNTP servers which do not give priority to slave servers, this
                   1075:    command must nonetheless be recognized and acknowledged.
                   1076: 
                   1077: 3.12.2.  Responses
                   1078: 
                   1079:    202 slave status noted
                   1080: 
                   1081: 
                   1082: Kantor & Lapsley                                               [Page 19]
                   1083: 
                   1084: 
                   1085: 
                   1086: RFC 977                                                    February 1986
                   1087: Network News Transfer Protocol
                   1088: 
                   1089: 
                   1090: 4.  Sample Conversations
                   1091: 
                   1092:    These are samples of the conversations that might be expected with
                   1093:    the news server in hypothetical sessions.  The notation C: indicates
                   1094:    commands sent to the news server from the client program; S: indicate
                   1095:    responses received from the server by the client.
                   1096: 
                   1097: 4.1.  Example 1 - relative access with NEXT
                   1098: 
                   1099:    S:      (listens at TCP port 119)
                   1100: 
                   1101:    C:      (requests connection on TCP port 119)
                   1102:    S:      200 wombatvax news server ready - posting ok
                   1103: 
                   1104:    (client asks for a current newsgroup list)
                   1105:    C:      LIST
                   1106:    S:      215 list of newsgroups follows
                   1107:    S:      net.wombats 00543 00501 y
                   1108:    S:      net.unix-wizards 10125 10011 y
                   1109:            (more information here)
                   1110:    S:      net.idiots 00100 00001 n
                   1111:    S:      .
                   1112: 
                   1113:    (client selects a newsgroup)
                   1114:    C:      GROUP net.unix-wizards
                   1115:    S:      211 104 10011 10125 net.unix-wizards group selected
                   1116:            (there are 104 articles on file, from 10011 to 10125)
                   1117: 
                   1118:    (client selects an article to read)
                   1119:    C:      STAT 10110
                   1120:    S:      223 10110 <[email protected]> article retrieved - statistics
                   1121:            only (article 10110 selected, its message-id is
                   1122:            <[email protected]>)
                   1123: 
                   1124:    (client examines the header)
                   1125:    C:      HEAD
                   1126:    S:      221 10110 <[email protected]> article retrieved - head
                   1127:            follows (text of the header appears here)
                   1128:    S:      .
                   1129: 
                   1130:    (client wants to see the text body of the article)
                   1131:    C:      BODY
                   1132:    S:      222 10110 <[email protected]> article retrieved - body
                   1133:            follows (body text here)
                   1134:    S:      .
                   1135: 
                   1136:    (client selects next article in group)
                   1137: 
                   1138: 
                   1139: Kantor & Lapsley                                               [Page 20]
                   1140: 
                   1141: 
                   1142: 
                   1143: RFC 977                                                    February 1986
                   1144: Network News Transfer Protocol
                   1145: 
                   1146: 
                   1147:    C:      NEXT
                   1148:    S:      223 10113 <[email protected]> article retrieved - statistics
                   1149:            only (article 10113 was next in group)
                   1150: 
                   1151:    (client finishes session)
                   1152:    C:      QUIT
                   1153:    S:      205 goodbye.
                   1154: 
                   1155: 4.2.  Example 2 - absolute article access with ARTICLE
                   1156: 
                   1157:    S:      (listens at TCP port 119)
                   1158: 
                   1159:    C:      (requests connection on TCP port 119)
                   1160:    S:      201 UCB-VAX netnews server ready -- no posting allowed
                   1161: 
                   1162:    C:      GROUP msgs
                   1163:    S:      211 103 402 504 msgs Your new group is msgs
                   1164:            (there are 103 articles, from 402 to 504)
                   1165: 
                   1166:    C:      ARTICLE 401
                   1167:    S:      423 No such article in this newsgroup
                   1168: 
                   1169:    C:      ARTICLE 402
                   1170:    S:      220 402 <[email protected]> Article retrieved, text follows
                   1171:    S:      (article header and body follow)
                   1172:    S:      .
                   1173: 
                   1174:    C:      HEAD 403
                   1175:    S:      221 403 <[email protected]> Article retrieved, header follows
                   1176:    S:      (article header follows)
                   1177:    S:      .
                   1178: 
                   1179:    C:      QUIT
                   1180:    S:      205 UCB-VAX news server closing connection.  Goodbye.
                   1181: 
                   1182: 4.3.  Example 3 - NEWGROUPS command
                   1183: 
                   1184:    S:      (listens at TCP port 119)
                   1185: 
                   1186:    C:      (requests connection on TCP port 119)
                   1187:    S:      200 Imaginary Institute News Server ready (posting ok)
                   1188: 
                   1189:    (client asks for new newsgroups since April 3, 1985)
                   1190:    C:      NEWGROUPS 850403 020000
                   1191: 
                   1192:    S:      231 New newsgroups since 03/04/85 02:00:00 follow
                   1193: 
                   1194: 
                   1195: 
                   1196: Kantor & Lapsley                                               [Page 21]
                   1197: 
                   1198: 
                   1199: 
                   1200: RFC 977                                                    February 1986
                   1201: Network News Transfer Protocol
                   1202: 
                   1203: 
                   1204:    S:      net.music.gdead
                   1205:    S:      net.games.sources
                   1206:    S:      .
                   1207: 
                   1208:    C:      GROUP net.music.gdead
                   1209:    S:      211 0 1 1 net.music.gdead Newsgroup selected
                   1210:            (there are no articles in that newsgroup, and
                   1211:            the first and last article numbers should be ignored)
                   1212: 
                   1213:    C:      QUIT
                   1214:    S:      205 Imaginary Institute news server ceasing service.  Bye!
                   1215: 
                   1216: 4.4.  Example 4 - posting a news article
                   1217: 
                   1218:    S:      (listens at TCP port 119)
                   1219: 
                   1220:    C:      (requests connection on TCP port 119)
                   1221:    S:      200 BANZAIVAX news server ready, posting allowed.
                   1222: 
                   1223:    C:      POST
                   1224:    S:      340 Continue posting; Period on a line by itself to end
                   1225:    C:      (transmits news article in RFC850 format)
                   1226:    C:      .
                   1227:    S:      240 Article posted successfully.
                   1228: 
                   1229:    C:      QUIT
                   1230:    S:      205 BANZAIVAX closing connection.  Goodbye.
                   1231: 
                   1232: 4.5.  Example 5 - interruption due to operator request
                   1233: 
                   1234:    S:      (listens at TCP port 119)
                   1235: 
                   1236:    C:      (requests connection on TCP port 119)
                   1237:    S:      201 genericvax news server ready, no posting allowed.
                   1238: 
                   1239:            (assume normal conversation for some time, and
                   1240:            that a newsgroup has been selected)
                   1241: 
                   1242:    C:      NEXT
                   1243:    S:      223 1013 <[email protected]> Article retrieved; text separate.
                   1244: 
                   1245:    C:      HEAD
                   1246:    C:      221 1013 <[email protected]> Article retrieved; head follows.
                   1247: 
                   1248:    S:      (sends head of article, but halfway through is
                   1249:            interrupted by an operator request.  The following
                   1250:            then occurs, without client intervention.)
                   1251: 
                   1252: 
                   1253: Kantor & Lapsley                                               [Page 22]
                   1254: 
                   1255: 
                   1256: 
                   1257: RFC 977                                                    February 1986
                   1258: Network News Transfer Protocol
                   1259: 
                   1260: 
                   1261:    S:      (ends current line with a CR-LF pair)
                   1262:    S:      .
                   1263:    S:      400 Connection closed by operator.  Goodbye.
                   1264:    S:      (closes connection)
                   1265: 
                   1266: 4.6.  Example 6 - Using the news server to distribute news between
                   1267:       systems.
                   1268: 
                   1269:    S:      (listens at TCP port 119)
                   1270: 
                   1271:    C:      (requests connection on TCP port 119)
                   1272:    S:      201 Foobar NNTP server ready (no posting)
                   1273: 
                   1274:    (client asks for new newsgroups since 2 am, May 15, 1985)
                   1275:    C:      NEWGROUPS 850515 020000
                   1276:    S:      235 New newsgroups since 850515 follow
                   1277:    S:      net.fluff
                   1278:    S:      net.lint
                   1279:    S:      .
                   1280: 
                   1281:    (client asks for new news articles since 2 am, May 15, 1985)
                   1282:    C:      NEWNEWS * 850515 020000
                   1283:    S:      230 New news since 850515 020000 follows
                   1284:    S:      <[email protected]>
                   1285:    S:      <[email protected]>
                   1286:    S:      <[email protected]>
                   1287:    S:      .
                   1288: 
                   1289:    (client asks for article <[email protected]>)
                   1290:    C:      ARTICLE <[email protected]>
                   1291:    S:      220 <[email protected]> All of article follows
                   1292:    S:      (sends entire message)
                   1293:    S:      .
                   1294: 
                   1295:    (client asks for article <[email protected]>
                   1296:    C:      ARTICLE <[email protected]>
                   1297:    S:      220 <[email protected]> All of article follows
                   1298:    S:      (sends entire message)
                   1299:    S:      .
                   1300: 
                   1301:    (client asks for article <[email protected]>
                   1302:    C:      ARTICLE <[email protected]>
                   1303:    S:      220 <[email protected]> All of article follows
                   1304:    S:      (sends entire message)
                   1305:    S:      .
                   1306: 
                   1307: 
                   1308: 
                   1309: 
                   1310: Kantor & Lapsley                                               [Page 23]
                   1311: 
                   1312: 
                   1313: 
                   1314: RFC 977                                                    February 1986
                   1315: Network News Transfer Protocol
                   1316: 
                   1317: 
                   1318:    (client offers an article it has received recently)
                   1319:    C:      IHAVE <[email protected]>
                   1320:    S:      435 Already seen that one, where you been?
                   1321: 
                   1322:    (client offers another article)
                   1323:    C:      IHAVE <[email protected]>
                   1324:    S:      335 News to me!  <CRLF.CRLF> to end.
                   1325:    C:      (sends article)
                   1326:    C:      .
                   1327:    S:      235 Article transferred successfully.  Thanks.
                   1328: 
                   1329:    (or)
                   1330: 
                   1331:    S:      436 Transfer failed.
                   1332: 
                   1333:    (client is all through with the session)
                   1334:    C:      QUIT
                   1335:    S:      205 Foobar NNTP server bids you farewell.
                   1336: 
                   1337: 4.7.  Summary of commands and responses.
                   1338: 
                   1339:    The following are the commands recognized and responses returned by
                   1340:    the NNTP server.
                   1341: 
                   1342: 4.7.1.  Commands
                   1343: 
                   1344:    ARTICLE
                   1345:    BODY
                   1346:    GROUP
                   1347:    HEAD
                   1348:    HELP
                   1349:    IHAVE
                   1350:    LAST
                   1351:    LIST
                   1352:    NEWGROUPS
                   1353:    NEWNEWS
                   1354:    NEXT
                   1355:    POST
                   1356:    QUIT
                   1357:    SLAVE
                   1358:    STAT
                   1359: 
                   1360: 4.7.2.  Responses
                   1361: 
                   1362:    100 help text follows
                   1363:    199 debug output
                   1364: 
                   1365: 
                   1366: 
                   1367: Kantor & Lapsley                                               [Page 24]
                   1368: 
                   1369: 
                   1370: 
                   1371: RFC 977                                                    February 1986
                   1372: Network News Transfer Protocol
                   1373: 
                   1374: 
                   1375:    200 server ready - posting allowed
                   1376:    201 server ready - no posting allowed
                   1377:    202 slave status noted
                   1378:    205 closing connection - goodbye!
                   1379:    211 n f l s group selected
                   1380:    215 list of newsgroups follows
                   1381:    220 n <a> article retrieved - head and body follow 221 n <a> article
                   1382:    retrieved - head follows
                   1383:    222 n <a> article retrieved - body follows
                   1384:    223 n <a> article retrieved - request text separately 230 list of new
                   1385:    articles by message-id follows
                   1386:    231 list of new newsgroups follows
                   1387:    235 article transferred ok
                   1388:    240 article posted ok
                   1389: 
                   1390:    335 send article to be transferred.  End with <CR-LF>.<CR-LF>
                   1391:    340 send article to be posted. End with <CR-LF>.<CR-LF>
                   1392: 
                   1393:    400 service discontinued
                   1394:    411 no such news group
                   1395:    412 no newsgroup has been selected
                   1396:    420 no current article has been selected
                   1397:    421 no next article in this group
                   1398:    422 no previous article in this group
                   1399:    423 no such article number in this group
                   1400:    430 no such article found
                   1401:    435 article not wanted - do not send it
                   1402:    436 transfer failed - try again later
                   1403:    437 article rejected - do not try again.
                   1404:    440 posting not allowed
                   1405:    441 posting failed
                   1406: 
                   1407:    500 command not recognized
                   1408:    501 command syntax error
                   1409:    502 access restriction or permission denied
                   1410:    503 program fault - command not performed
                   1411: 
                   1412: 4.8.  A Brief Word about the USENET News System
                   1413: 
                   1414:    In the UNIX world, which traditionally has been linked by 1200 baud
                   1415:    dial-up telephone lines, the USENET News system has evolved to handle
                   1416:    central storage, indexing, retrieval, and distribution of news.  With
                   1417:    the exception of its underlying transport mechanism (UUCP), USENET
                   1418:    News is an efficient means of providing news and bulletin service to
                   1419:    subscribers on UNIX and other hosts worldwide.  The USENET News
                   1420: 
                   1421: 
                   1422: 
                   1423: 
                   1424: Kantor & Lapsley                                               [Page 25]
                   1425: 
                   1426: 
                   1427: 
                   1428: RFC 977                                                    February 1986
                   1429: Network News Transfer Protocol
                   1430: 
                   1431: 
                   1432:    system is discussed in detail in RFC 850.  It runs on most versions
                   1433:    of UNIX and on many other operating systems, and is customarily
                   1434:    distributed without charge.
                   1435: 
                   1436:    USENET uses a spooling area on the UNIX host to store news articles,
                   1437:    one per file. Each article consists of a series of heading text,
                   1438:    which contain the sender's identification and organizational
                   1439:    affiliation, timestamps, electronic mail reply paths, subject,
                   1440:    newsgroup (subject category), and the like.  A complete news article
                   1441:    is reproduced in its entirety below.  Please consult RFC 850 for more
                   1442:    details.
                   1443: 
                   1444:       Relay-Version: version B 2.10.3 4.3bsd-beta 6/6/85; site
                   1445:       sdcsvax.UUCP
                   1446:       Posting-Version: version B 2.10.1 6/24/83 SMI; site unitek.uucp
                   1447:       Path:sdcsvax!sdcrdcf!hplabs!qantel!ihnp4!alberta!ubc-vision!unitek
                   1448:       !honman
                   1449:       From: [email protected] (Man Wong)
                   1450:       Newsgroups: net.unix-wizards
                   1451:       Subject: foreground -> background ?
                   1452:       Message-ID: <[email protected]>
                   1453:       Date: 25 Sep 85 23:51:52 GMT
                   1454:       Date-Received: 29 Sep 85 09:54:48 GMT
                   1455:       Reply-To: [email protected] (Hon-Man Wong)
                   1456:       Distribution: net.all
                   1457:       Organization: Unitek Technologies Corporation
                   1458:       Lines: 12
                   1459: 
                   1460:       I have a process (C program) which generates a child and waits for
                   1461:       it to return.  What I would like to do is to be able to run the
                   1462:       child process interactively for a while before kicking itself into
                   1463:       the background so I can return to the parent process (while the
                   1464:       child process is RUNNING in the background).  Can it be done?  And
                   1465:       if it can, how?
                   1466: 
                   1467:       Please reply by E-mail.  Thanks in advance.
                   1468: 
                   1469:       Hon-Man Wong
                   1470: 
                   1471: 
                   1472: 
                   1473: 
                   1474: 
                   1475: 
                   1476: 
                   1477: 
                   1478: 
                   1479: 
                   1480: 
                   1481: Kantor & Lapsley                                               [Page 26]
                   1482: 
                   1483: 
                   1484: 
                   1485: RFC 977                                                    February 1986
                   1486: Network News Transfer Protocol
                   1487: 
                   1488: 
                   1489: 5.  References
                   1490: 
                   1491:    [1]  Crocker, D., "Standard for the Format of ARPA Internet Text
                   1492:         Messages", RFC-822, Department of Electrical Engineering,
                   1493:         University of Delaware, August, 1982.
                   1494: 
                   1495:    [2]  Horton, M., "Standard for Interchange of USENET Messages",
                   1496:         RFC-850, USENET Project, June, 1983.
                   1497: 
                   1498:    [3]  Postel, J., "Transmission Control Protocol- DARPA Internet
                   1499:         Program Protocol Specification", RFC-793, USC/Information
                   1500:         Sciences Institute, September, 1981.
                   1501: 
                   1502:    [4]  Postel, J., "Simple Mail Transfer Protocol", RFC-821,
                   1503:         USC/Information Sciences Institute, August, 1982.
                   1504: 
                   1505: 6.  Acknowledgements
                   1506: 
                   1507:    The authors wish to express their heartfelt thanks to those many
                   1508:    people who contributed to this specification, and especially to Erik
                   1509:    Fair and Chuq von Rospach, without whose inspiration this whole thing
                   1510:    would not have been necessary.
                   1511: 
                   1512: 7.  Notes
                   1513: 
                   1514:    <1> UNIX is a trademark of Bell Laboratories.
                   1515: 
                   1516: 
                   1517: 
                   1518: 
                   1519: 
                   1520: 
                   1521: 
                   1522: 
                   1523: 
                   1524: 
                   1525: 
                   1526: 
                   1527: 
                   1528: 
                   1529: 
                   1530: 
                   1531: 
                   1532: 
                   1533: 
                   1534: 
                   1535: 
                   1536: 
                   1537: 
                   1538: Kantor & Lapsley                                               [Page 27]
                   1539: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.