Original protocol (IRCv2): RFC 1459
Later updated by RFC 2810, RFC 2811, RFC 2812, RFC 2813, but few servers follow these completely. IRCnet is probably the most complete implementation.
Client-server protocol:
Server-server protocol:
- TSora (Hybrid, Charybdis)
- Undernet TSpre (ircu)
- Current version: P10
- Old versions: TSpre7, TSpre8
- UnrealIRCd (? DreamForge variant?)
- SASL encapsulation in various link protocols
Client-To-Client Protocol (CTCP) messages are carried over standard PRIVMSGs and NOTICEs. The original specification allows for quoting special characters, sending "extended data" and commands.
However, most clients do not implement the quoting, and only recognize messages consisting entirely of a single "extended data" command.
- Later CTCP draft (no known implementations)
- Later CTCP/2 draft (no known implementations)
IRCII introduced the Direct Client Connection (DCC) subprotocol. Often, "DCC" refers specifically to the file transfer part.
- DCC protocol as implemented by IRCII
- Turbo DCC (entire file as bytestream)
- Reverse DCC (receiver listens for connection)
- FSERV (opens a chat session with FTP-like commands)
- XDCC
IRCX had commands DATA and REQUEST/REPLY to replace CTCP.
IRCv3 has "message tags" which could act as a replacement.
- SASL (current, IRCv3 style) – client proto, server proto
- SASL (obsolete, IRCX style) – client proto
- /msg to privileged bots – NickServ, Q
- RFC 1459 server password (
PASS
command) - Nefarious "Login On Connect" (extended
PASS
) - Ident (OS-level authentication)
- The 005 numeric, aka
RPL_ISUPPORT
- IRCv3
CAP
- Dancer/Hyperion
CAPAB
PROTOCTL
- Microsoft IRCX
Implemented by almost all servers. Only advertises extensions; they are assumed to be always enabled, unless declared otherwise. (For example, UHNAMES
has to enabled by client.) Many extensions in ISUPPORT deal with core IRC features; for example, supported channel types (e.g. CHANTYPES=#&
) or the longest permitted nickname (NICKLEN
).
Draft specifications:
Known extensions:
The IRCv3 Working Group defines a standard set of extensions to IRCv2. The central part of IRCv3 is capability negotiation using CAP
, which is implemented by all current servers.
Features:
- Server acknowledges successful and failed requests.
- Can disable extensions (using
CAP REQ -foo
). - Can list extensions during registration (using
CAP LS
).
Some IRCv3-specified extensions:
- account notification (Charybdis, InspIRCd, Unreal)
- away notification (Charybdis, InspIRCd, Unreal)
- extended JOIN (Charybdis, InspIRCd, Unreal)
- multi-prefix NAMES – equivalent to NAMESX (many!)
- message tags (ZNC, Weechat)
- metadata
- server time (ZNC, Weechat)
- SASL authentication (Atheme, Anope, X3)
- STARTTLS (InspIRCd, Unreal)
- userhost-in-names – equivalent to UHNAMES (InspIRCd, Unreal)
Note that this list is not up-to-date; visit the main IRCv3 repository for a full list.
Nonstandard capabilities:
- identify-msg (Charybdis)
Known extensions:
IDENTIFY-MSG
(Dancer, Hyperion) – identical to the later CAPidentify-msg
IDENTIFY-CTCP
(Dancer) – merged intoIDENTIFY-MSG
by Hyperion
Features:
- Server acknowledges successful requests.
Downsides:
- Server does not acknowledge failed requests.
- Cannot disable extensions once enabled.
- Extensions are only advertised after registration (in ISUPPORT).
Known extensions:
UHNAMES
– identical to CAPuserhost-in-names
NAMESX
– identical to CAPmulti-prefix
Downsides:
- Server does not acknowledge requests.
- Cannot disable extensions once enabled.
- Extensions are only advertised after registration (in ISUPPORT).
Known extensions (listed in draft):
Features:
- Extensions can be enabled during registration.
- Server acknowledges successful requests.
Downsides:
- Cannot request extensions after registration.
- Cannot disable extensions once enabled.
- Supported extensions are not advertised by the server (the client must request all extensions it wants).
An extension of the IRC protocol as a whole, used by Microsoft Chat client as well as Microsoft Exchange Chat server.
Edited draft specification exists; it describes several new commands implemented by IRCX-compatible servers, as well as modes and privilege levels. Adds SASL support using AUTH
, predating CAP.
There are plans to add several IRCX features to IRCv3.
Features:
- Extension must be enabled during registration (using
IRCX
). - All supported extensions are part of the specification.
- Supported SASL mechanisms are advertised by server during registration.
Color codes:
- mIRC (the most common format)
- improved, by EPIC
- ANSI colors in EPIC