rfc2812.txt

来自「著名的RFC文档,其中有一些文档是已经翻译成中文的的.」· 文本 代码 · 共 1,794 行 · 第 1/5 页

TXT
1,794
字号
Network Working Group                                            C. KaltRequest for Comments: 2812                                    April 2000Updates: 1459Category: Informational                  Internet Relay Chat: Client ProtocolStatus of this Memo   This memo provides information for the Internet community.  It does   not specify an Internet standard of any kind.  Distribution of this   memo is unlimited.Copyright Notice   Copyright (C) The Internet Society (2000).  All Rights Reserved.IESG NOTE:   The IRC protocol itself enables several possibilities of transferring   data between clients, and just like with other transfer mechanisms   like email, the receiver of the data has to be careful about how the   data is handled. For more information on security issues with the IRC   protocol, see for example http://www.irchelp.org/irchelp/security/.Abstract   The IRC (Internet Relay Chat) protocol is for use with text based   conferencing; the simplest client being any socket program capable of   connecting to the server.   This document defines the Client Protocol, and assumes that the   reader is familiar with the IRC Architecture [IRC-ARCH].Table of Contents   1.  Labels .....................................................   3      1.1  Servers ................................................   3      1.2  Clients ................................................   3         1.2.1  Users .............................................   4            1.2.1.1  Operators ....................................   4         1.2.2  Services ..........................................   4      1.3  Channels ...............................................   4   2.  The IRC Client Specification ...............................   5      2.1  Overview ...............................................   5      2.2  Character codes ........................................   5      2.3  Messages ...............................................   5Kalt                         Informational                      [Page 1]RFC 2812          Internet Relay Chat: Client Protocol        April 2000         2.3.1  Message format in Augmented BNF ...................   6      2.4  Numeric replies ........................................   8      2.5  Wildcard expressions ...................................   9   3.  Message Details ............................................   9      3.1  Connection Registration ................................  10         3.1.1  Password message ..................................  10         3.1.2  Nick message ......................................  10         3.1.3  User message ......................................  11         3.1.4  Oper message ......................................  12         3.1.5  User mode message .................................  12         3.1.6  Service message ...................................  13         3.1.7  Quit ..............................................  14         3.1.8  Squit .............................................  15      3.2  Channel operations .....................................  15         3.2.1  Join message ......................................  16         3.2.2  Part message ......................................  17         3.2.3  Channel mode message ..............................  18         3.2.4  Topic message .....................................  19         3.2.5  Names message .....................................  20         3.2.6  List message ......................................  21         3.2.7  Invite message ....................................  21         3.2.8  Kick command ......................................  22      3.3  Sending messages .......................................  23         3.3.1  Private messages ..................................  23         3.3.2  Notice ............................................  24      3.4  Server queries and commands ............................  25         3.4.1  Motd message ......................................  25         3.4.2  Lusers message ....................................  25         3.4.3  Version message ...................................  26         3.4.4  Stats message .....................................  26         3.4.5  Links message .....................................  27         3.4.6  Time message ......................................  28         3.4.7  Connect message ...................................  28         3.4.8  Trace message .....................................  29         3.4.9  Admin command .....................................  30         3.4.10 Info command ......................................  31      3.5  Service Query and Commands .............................  31         3.5.1  Servlist message ..................................  31         3.5.2  Squery ............................................  32      3.6  User based queries .....................................  32         3.6.1  Who query .........................................  32         3.6.2  Whois query .......................................  33         3.6.3  Whowas ............................................  34      3.7  Miscellaneous messages .................................  34         3.7.1  Kill message ......................................  35         3.7.2  Ping message ......................................  36         3.7.3  Pong message ......................................  37         3.7.4  Error .............................................  37Kalt                         Informational                      [Page 2]RFC 2812          Internet Relay Chat: Client Protocol        April 2000   4.  Optional features ..........................................  38      4.1  Away ...................................................  38      4.2  Rehash message .........................................  39      4.3  Die message ............................................  39      4.4  Restart message ........................................  40      4.5  Summon message .........................................  40      4.6  Users ..................................................  41      4.7  Operwall message .......................................  41      4.8  Userhost message .......................................  42      4.9  Ison message ...........................................  42   5.  Replies ....................................................  43      5.1  Command responses ......................................  43      5.2  Error Replies ..........................................  53      5.3  Reserved numerics ......................................  59   6.  Current implementations ....................................  60   7.  Current problems ...........................................  60      7.1  Nicknames ..............................................  60      7.2  Limitation of wildcards ................................  61      7.3  Security considerations ................................  61   8.  Current support and availability ...........................  61   9.  Acknowledgements ...........................................  61   10.  References ................................................  62   11.  Author's Address ..........................................  62   12.  Full Copyright Statement ..................................  631. Labels   This section defines the identifiers used for the various components   of the IRC protocol.1.1 Servers   Servers are uniquely identified by their name, which has a maximum   length of sixty three (63) characters.  See the protocol grammar   rules (section 2.3.1) for what may and may not be used in a server   name.1.2 Clients   For each client all servers MUST have the following information: a   netwide unique identifier (whose format depends on the type of   client) and the server which introduced the client.Kalt                         Informational                      [Page 3]RFC 2812          Internet Relay Chat: Client Protocol        April 20001.2.1 Users   Each user is distinguished from other users by a unique nickname   having a maximum length of nine (9) characters.  See the protocol   grammar rules (section 2.3.1) for what may and may not be used in a   nickname.   While the maximum length is limited to nine characters, clients   SHOULD accept longer strings as they may become used in future   evolutions of the protocol.1.2.1.1 Operators   To allow a reasonable amount of order to be kept within the IRC   network, a special class of users (operators) is allowed to perform   general maintenance functions on the network.  Although the powers   granted to an operator can be considered as 'dangerous', they are   nonetheless often necessary.  Operators SHOULD be able to perform   basic network tasks such as disconnecting and reconnecting servers as   needed.  In recognition of this need, the protocol discussed herein   provides for operators only to be able to perform such functions.   See sections 3.1.8 (SQUIT) and 3.4.7 (CONNECT).   A more controversial power of operators is the ability to remove a   user from the connected network by 'force', i.e., operators are able   to close the connection between any client and server.  The   justification for this is very delicate since its abuse is both   destructive and annoying, and its benefits close to inexistent.  For   further details on this type of action, see section 3.7.1 (KILL).1.2.2 Services   Each service is distinguished from other services by a service name   composed of a nickname and a server name.  As for users, the nickname   has a maximum length of nine (9) characters.  See the protocol   grammar rules (section 2.3.1) for what may and may not be used in a   nickname.1.3 Channels   Channels names are strings (beginning with a '&', '#', '+' or '!'   character) of length up to fifty (50) characters.  Apart from the   requirement that the first character is either '&', '#', '+' or '!',   the only restriction on a channel name is that it SHALL NOT contain   any spaces (' '), a control G (^G or ASCII 7), a comma (',').  Space   is used as parameter separator and command is used as a list item   separator by the protocol).  A colon (':') can also be used as a   delimiter for the channel mask.  Channel names are case insensitive.Kalt                         Informational                      [Page 4]RFC 2812          Internet Relay Chat: Client Protocol        April 2000   See the protocol grammar rules (section 2.3.1) for the exact syntax   of a channel name.   Each prefix characterizes a different channel type.  The definition   of the channel types is not relevant to the client-server protocol   and thus it is beyond the scope of this document.  More details can   be found in "Internet Relay Chat: Channel Management" [IRC-CHAN].2. The IRC Client Specification2.1 Overview   The protocol as described herein is for use only with client to   server connections when the client registers as a user.2.2 Character codes   No specific character set is specified. The protocol is based on a   set of codes which are composed of eight (8) bits, making up an   octet.  Each message may be composed of any number of these octets;   however, some octet values are used for control codes, which act as   message delimiters.   Regardless of being an 8-bit protocol, the delimiters and keywords   are such that protocol is mostly usable from US-ASCII terminal and a   telnet connection.   Because of IRC's Scandinavian origin, the characters {}|^ are   considered to be the lower case equivalents of the characters []\~,   respectively. This is a critical issue when determining the   equivalence of two nicknames or channel names.2.3 Messages   Servers and clients send each other messages, which may or may not   generate a reply.  If the message contains a valid command, as   described in later sections, the client should expect a reply as   specified but it is not advised to wait forever for the reply; client   to server and server to server communication is essentially   asynchronous by nature.   Each IRC message may consist of up to three main parts: the prefix   (OPTIONAL), the command, and the command parameters (maximum of   fifteen (15)).  The prefix, command, and all parameters are separated   by one ASCII space character (0x20) each.Kalt                         Informational                      [Page 5]RFC 2812          Internet Relay Chat: Client Protocol        April 2000   The presence of a prefix is indicated with a single leading ASCII   colon character (':', 0x3b), which MUST be the first character of the   message itself.  There MUST be NO gap (whitespace) between the colon   and the prefix.  The prefix is used by servers to indicate the true   origin of the message.  If the prefix is missing from the message, it   is assumed to have originated from the connection from which it was   received from.  Clients SHOULD NOT use a prefix when sending a   message; if they use one, the only valid prefix is the registered   nickname associated with the client.   The command MUST either be a valid IRC command or a three (3) digit   number represented in ASCII text.   IRC messages are always lines of characters terminated with a CR-LF   (Carriage Return - Line Feed) pair, and these messages SHALL NOT   exceed 512 characters in length, counting all characters including   the trailing CR-LF. Thus, there are 510 characters maximum allowed   for the command and its parameters.  There is no provision for   continuation of message lines.  See section 6 for more details about   current implementations.2.3.1 Message format in Augmented BNF   The protocol messages must be extracted from the contiguous stream of   octets.  The current solution is to designate two characters, CR and   LF, as message separators.  Empty messages are silently ignored,   which permits use of the sequence CR-LF between messages without   extra problems.   The extracted message is parsed into the components <prefix>,   <command> and list of parameters (<params>).    The Augmented BNF representation for this is:    message    =  [ ":" prefix SPACE ] command [ params ] crlf    prefix     =  servername / ( nickname [ [ "!" user ] "@" host ] )    command    =  1*letter / 3digit    params     =  *14( SPACE middle ) [ SPACE ":" trailing ]               =/ 14( SPACE middle ) [ SPACE [ ":" ] trailing ]    nospcrlfcl =  %x01-09 / %x0B-0C / %x0E-1F / %x21-39 / %x3B-FF                    ; any octet except NUL, CR, LF, " " and ":"    middle     =  nospcrlfcl *( ":" / nospcrlfcl )    trailing   =  *( ":" / " " / nospcrlfcl )    SPACE      =  %x20        ; space character    crlf       =  %x0D %x0A   ; "carriage return" "linefeed"Kalt                         Informational                      [Page 6]RFC 2812          Internet Relay Chat: Client Protocol        April 2000   NOTES:      1) After extracting the parameter list, all parameters are equal         whether matched by <middle> or <trailing>. <trailing> is just a         syntactic trick to allow SPACE within the parameter.      2) The NUL (%x00) character is not special in message framing, and         basically could end up inside a parameter, but it would cause         extra complexities in normal C string handling. Therefore, NUL         is not allowed within messages.   Most protocol messages specify additional semantics and syntax for   the extracted parameter strings dictated by their position in the   list.  For example, many server commands will assume that the first   parameter after the command is the list of targets, which can be   described with:  target     =  nickname / server

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?