HTML layout by Tatu J. Lund Apr 1997
Revised and Annotated for CMU 15-441,Sep 2003
Network Working Group
Request for Comments: 1459
J. Oikarinen
D. Reed
May 1993

Internet Relay Chat Protocol

Editor's Note: This is a revised version of RFC 1459, intended for students in 15-441, Sep 2003. It is based on the HTML version of RFC 1459 from www.irchelp.org.

Status of This Memo

This memo defines an Experimental Protocol for the Internet community. Discussion and suggestions for improvement are requested. Please refer to the current edition of the "IAB Official Protocol Standards" for the standardization state and status of this protocol. Distribution of this memo is unlimited.

Abstract

The IRC protocol was developed over the last 4 years since it was first implemented as a means for users on a BBS to chat amongst themselves. Now it supports a world-wide network of servers and clients, and is stringing to cope with growth. Over the past 2 years, the average number of users connected to the main IRC network has grown by a factor of 10.

The IRC protocol is a text-based protocol, with the simplest client being any socket program capable of connecting to the server.

Table of Contents

1.INTRODUCTION 1.1 Servers
1.2 Clients 1.2.1 Operators 1.3 Channels 1.3.1 Channel Operators
2. THE IRC SPECIFICATION 2.1 Overview
2.2 Character codes
2.3 Messages 2.3.1 Message format in 'pseudo' BNF 2.4 Numeric replies
3. IRC CONCEPTS 3.1 One-to-one communication
3.2 One-to-many 3.2.1 To a list
3.2.2 To a group (channel)
3.2.3 To a host/server mask
3.3 One to all 3.3.1 Client to Client
3.3.2 Clients to Server
3.3.3 Server to Server
4. MESSAGE DETAILS 4.1 Connection Registration 4.1.1 Password message
4.1.2 Nickname message
4.1.3 User message
4.1.4 Server message
4.1.5 Operator message
4.1.6 Quit message
4.1.7 Server Quit message
4.2 Channel operations 4.2.1 Join message
4.2.2 Part message
4.2.3 Mode message 4.2.3.1 Channel modes
4.2.3.2 User modes
4.2.4 Topic message
4.2.5 Names message
4.2.6 List message
4.2.7 Invite message
4.2.8 Kick message
4.3 Server queries and commands 4.3.1 Version message
4.3.2 Stats message
4.3.3 Links message
4.3.4 Time message
4.3.5 Connect message
4.3.6 Trace message
4.3.7 Admin message
4.3.8 Info message
4.4 Sending messages 4.4.1 Private messages
4.4.2 Notice messages
4.5 User-based queries 4.5.1 Who query
4.5.2 Whois query
4.5.3 Whowas message
4.6 Miscellaneous messages 4.6.1 Kill message
4.6.2 Ping message
4.6.3 Pong message
4.6.4 Error message
5. OPTIONAL MESSAGES 5.1 Away message
5.2 Rehash command
5.3 Restart command
5.4 Summon message
5.5 Users message
5.6 Operwall command
5.7 Userhost message
5.8 Ison message
6. REPLIES 6.1 Error Replies
6.2 Command responses
6.3 Reserved numerics
7. CLIENT AND SERVER AUTHENTICATION
8. CURRENT IMPLEMENTATIONS DETAILS 8.1 Network protocol: TCP 8.1.1 Support of Unix sockets 8.2 Command Parsing
8.3 Message delivery
8.4 Connection 'Liveness'
8.5 Establishing a server-client connection
8.6 Establishing a server-server connection 8.6.1 State information exchange when connecting 8.7 Terminating server-client connections
8.8 Terminating server-server connections
8.9 Tracking nickname changes
8.10 Flood control of clients
8.11 Non-blocking lookups 8.11.1 Hostname (DNS) lookups
8.11.2 Username (Ident) lookups
8.12 Configuration file 8.12.1 Allowing clients to connect
8.12.2 Operators
8.12.3 Allowing servers to connect
8.12.4 Administrivia
8.13 Channel membership
9. CURRENT PROBLEMS 9.1 Scalability
9.2 Labels 9.2.1 Nicknames
9.2.2 Channels
9.2.3 Servers
9.3 Algorithms
10. SUPPORT AND AVAILABILITY
11. SECURITY CONSIDERATIONS
12. AUTHORS' ADDRESSES


< ^ >