New IRC protocol
This is a front page for the IRC protocol I have developed on and off
over the past few years, intended as a replacement for the current IRC
protocol. Comments are welcome, to
achurch@achurch.org.
I would particularly appreciate suggestions on the following
unresolved points (marked with "FIXME" in the document):
- Is there a better algorithm for avoiding out-of-order message
arrivals when dealing with redundant links?
- The nickname collision resolution algorithm (section 5.2.1) may not
be sufficient in all cases.
Note: This is not an official RFC--it just plays one
evenings.
Revision: 16 November 2003
irc3-20031116.txt (191219 bytes)
diff-20031116.txt (25907 bytes)
Revision: 8 February 2002
irc3-20020208.txt (188971 bytes)
diff-20020208.txt (16000 bytes)
Revision: 15 October 2001
irc3-20011015.txt (185177 bytes)
diff-20011015.txt (32901 bytes)
Revision: 11 July 2001
irc3-20010711.txt (181231 bytes)
diff-20010711.txt (33212 bytes)
Revision: 15 April 2000
irc3-20000415.txt (178116 bytes)
diff-20000415.txt (13521 bytes)
Revision: 30 March 2000
irc3-20000330.txt (173340 bytes)
diff-20000330.txt (51827 bytes)
Revision: 4 January 2000
irc3-20000104.txt (200511 bytes)
diff-20000104.txt (18985 bytes)
Revision: 2 October 1999
irc3-19991002.txt (199301 bytes)
diff-19991002.txt (13728 bytes)
Revision: 29 September 1999
irc3-19990929.txt (196890 bytes)
diff-19990929.txt (32518 bytes)
Changes:
(16 November 2003)
- String lengths are now always 32 bits long, and now have a maximum
length of 4,294,967,295 bytes rather than 2,147,483,647 bytes
(section 2.1).
- Destinations on remote networks no longer include a "senderaddr"
parameter, as that would make no sense (section 2.2.2).
- Added section 2.2.5, defining the format used for sending messages
between networks.
- Added a features parameter to supplement the version-id parameter in
the user (section 3.1.2) and server (section 3.1.3) messages; also
added version-id and features parameters to the remote server
message (section 3.1.4). Added RPL_FEATURES to each of the
messages to allow the server to return its own features value.
- Removed server-id parameter from remote server message (section 3.1.4).
- Fixed examples for channel ban message (section 3.3.8) to match the
message format.
- Removed SHOULD in section 3.5.1 (connect message) since there is no
fundamental reason why using actual server names for the
server-to-connect identifier is preferable to any other method.
- Added a "minimum number of clients" parameter to the list message
(section 3.6.3).
- Minor changes and clarifications.
(8 February 2002)
- Added a network address parameter to the server-server user message
(section 3.1.2), and made the "@" character illegal in usernames
and hostnames
- Changed silence (section 3.4.3) and kill (section 3.4.6) messages to
use server/client ID pairs instead of nicknames, both for reduced
message size and to avoid nickname change race conditions.
- Added silence list message (0x0362/0x03E2, section 3.4.3).
- Modified channel ban (section 3.3.8) and silence (section 3.4.3)
messages to use separate parameters for nickname, username, and
hostname mask strings (since delimiter characters might appear in
the masks themselves).
- The who message (section 3.6.1) now matches real-names as well; also
added channel parameter to who message reply.
- Removed expiration time parameter from network/server ban statistics
reply parameter lists (section 3.6.12), since they're not defined
in the first place.
- Fixed numbering collision between ERR_WAS_NO_SUCH_USER and
ERR_ALREADY_IN_CHANNEL, and added ERR_NOT_ON_SILENCE_LIST.
- Minor changes and clarifications.
(15 October 2001)
- Added requirements for text transmission (section 2.5).
- Changed usage of messages in section 3.6 to use the regular message
format (not replies with text strings) to return information.
- Added RPL_*_END replies to signal the end of information responses for
section 3.6 messages.
- Added servername and extra parameters to who message (section 3.6.1).
- Minor changes and clarifications.
(11 July 2001)
- Added sections 1.6.2 and 2.2.4 to resolve the FIXME regarding cyclic
networks.
- Removed definitions of MUST, SHOULD, etc.; the document now only
references RFC 2119 for the meanings.
- Removed ESC from list of allowable control characters, and added space
and 0xA0, in section 6.5 (special characters in names).
- Minor changes and clarifications.
(15 April 2000)
- Added client ID and hostname parameters to server-server user message
and removed version ID parameter.
- Non-local clients get an idle time of -1 in a whois response.
- Flag bit 9 (32-bit string lengths) removed due to redundancy.
- Inter-network message passing protocol clarified.
- Added note about network name collisions (section 5.2.4).
- Finished section 6.5 (special characters in names).
- Minor changes and clarifications.
(30 March 2000)
- Removed Unicode support due to problems with the standard.
- Added option for servers to limit allowable characters in names.
- Added CR and LF to the list of recommended invalid characters for
nick/server/channel names.
- Added section 6.5 discussing problems with special characters in names.
- Revised names message response format (section 3.6.2) to consistently
include an 8-bit status value at the beginning of every nickname.
- Removed appendix C (requirements list) as it was getting long and had
the potential to become inconsistent with the main text.
- Minor changes and clarifications.
(4 January 2000)
- Changed channel names to be the same as RFC1459 (beginning with
# or &) to avoid race conditions with
setting CMODE_LOCAL. Removed CMODE_LOCAL and
ERR_CANNOT_CHANGE_DIST_LOCAL.
- Minor changes and clarifications.
(2 October 1999)
- Made timestamp definitions consistent and extended them to 64 bits.
Added sections 2.4 and 6.4.
- Clarified statistics type 0x6D (section 3.6.12).
- Minor changes and clarifications.
(29 September 1999)
- Added time message (0x050E, section 3.6.15).
- Added recommended stats requests (section 3.6.12).
- Added format for links response (section 3.6.13).
- Minor changes and clarifications.