Smallwikipedialogo.png Wikipedia has an article related to:

Internet Relay Chat (IRC) is an application layer protocol used for real-time online chat.

Technical informationEdit

IRC is an open protocol that uses TCP and optionally TLS. An IRC server can connect to other IRC servers to expand the IRC network. Users access IRC networks by connecting a client to a server. Most IRC servers do not require users to log in, but a user will have to set a nickname before being connected.

The standard structure of a network of IRC servers is a tree. Messages are routed along only necessary branches of the tree but network state is sent to every server and there is generally a high degree of implicit trust between servers. This architecture has a number of problems. A misbehaving or malicious server can cause major damage to the network, and any changes in structure, whether intentional or a result of conditions on the underlying network, require a net-split and net-join. This results in a lot of network traffic and spurious quit/join messages to users, and temporary loss of communication. Adding a server to a large network means a large background bandwidth load on the network and a large memory load on the server. Once established however, each message to multiple recipients is delivered by multicast. That means each message travels a network link exactly once. This is a strength in comparison to non-multicasting protocols such as SMTP or XMPP.

Commands and repliesEdit

IRC is based on a line-based structure with the client sending single-line messages to the server, receiving replies to those messages and receiving copies of some messages sent by other clients. In most clients users can enter commands by prefixing them with a slash (/). Depending on the command, these may either be handled entirely by the client, or - generally for commands the client does not recognize - passed directly to the server, possibly with some modification.

Due to the nature of the protocol, it is impossible for automated systems to pair a sent command with its reply.

The basic means of communication in an established IRC session is a channel. Multiple channels may be hosted by a single server.

IRC operatorsEdit

There are also users who maintain elevated rights on their local server, or the entire network; these are called IRC operators, sometimes shortened to IRCops. On some IRC implementations, IRC operators are also given channel operator status in every channel, although many people believe that administration of channels and administration of the network should be kept separate, and that IRC operator status does not confer the right to interfere with a particular channel's operation. However in most networks, IRC operators usually do not interfere with channel administrations unless they violate the network's terms of service.

Standard commandsEdit

Arguments are in angle brackets. In an argument, the default value or command is the value after the colon. Arguments in square brackets are optional. These commands are defined in RFC 1459 and RFC 2812. The intended user is in a clause preceding the description.

Command Description Defined by
/admin [server:current server] Returns information about the administrator of the server. RFC 1459
/away [message:remove previously set message] Provides a message to automatically send in a reply to a privmsg directed at the user, but not to a channel they are on. RFC 1459
/connect <target server> [port [remote server:current server]] See connect (RFC 2812). RFC 1459
/connect <target server> [port [remote server:current server]] For IRC operators; instructs the remote server to connect to the target server on port port. The port argument became mandatory in RFC 2812. See also connect (RFC 1459). RFC 2812
/die Shuts down the server. RFC 2812
/error <error message> For servers; reports errors to other services RFC 2812
/info <server:current server> Returns information about the server. RFC 1459
/invite <nickname> <channel> Invites client nickname to the channel channel. RFC 1459
/ison <nickname1> [nickname2] ... Returns which of the clients nicknames are on the network, in a space-separated list.
/join <channel1>[,channel2]... [password1] [password2] ... Instructs the client to join the channels, specifying the passwords, if needed. If the channels do not exist then they will be created. RFC 1459
/kick <channel> <nickname> [message] For channel operators; forcibly removes nickname from the channel channel. RFC 1459
/kill <nickname> <message> For IRC operators; forcibly removes nickname from the network. RFC 1459
/links [remote server:current server [server mask]] Lists all server links matching server mask on the remote server. RFC 1459
/list [[channel1][,channel2]... [server]] Lists all channels on the server. If channels are given, the command returns those channels' topics. RFC 1459
/lusers [mask [server]] Returns statistics about the size of the network. If mask is given, it only returns statistics reflecting the masked subset of the network. RFC 2812
/mode <nickname> <flags> Used to set a client's mode. RFC 1459
/mode <channel> <flags> [args] Used to set a channel's mode. RFC 1459
/motd [server:current server] Returns the "message of the day" on server. RFC 2812
/names [channel1][,channel2]... See names (RFC 2812). RFC 1459
/names [[channel1][,channel2]... [server]: all users, grouped by channel name] Returns a list of who are on the channels. If a channel is not specified, all users are shown, grouped by channel name. Users not in a channel are shown as part of channel "*". RFC 1459
/nick <new nickname> [hopcount] See nick (RFC 2812). Hopcount is for use between servers to specify how far away a nickname is from its home server. RFC 1459
/nick <new nickname> Change the client's IRC nickname. RFC 2812
/notice <target> <message> Sends a private message to target (user or channel), disabling any automatic replies. RFC 1459
/oper <username> <password> Authenticates a user as an IRC operator on the network or server. RFC 1459
/part <channel1>[,channel2]... Instructs the client to leave the channels. RFC 1459
/pass <password> Sets a connection password. RFC 1459
/ping <server1> [server2] Tests the presence of a connection. RFC 1459
/pong <daemon1> [daemon2] This command is a reply to a ping command. RFC 1459
/privmsg <target> <message> Sends a private message to target (user or channel). RFC 1459
/quit <message> Disconnects the user from the server. RFC 1459
/rehash For IRC operators; instructs the server to re-read and re-process its configuration files. RFC 1459
/restart For IRC operators; restarts a server. RFC 1459
/service <nickname> <reserved> <distribution> <type> <reserved>

| Registers a new service on the network. | RFC 2812 |- | /servlist [mask [type]] | Lists the services on the network. | RFC 2812 |-

| /server <server name> <hopcount>

| Tells the server that the other end of a new connection is a server. This message is also used to pass server data over whole net. | RFC 1459 |- | /squery <service name> <text> | Sends a message to a service. | RFC 2812 |- | /squit <server> <comment> | Instructs the server to quit the network. | RFC 1459 |- | /stats <query> <server:current server> | Returns statistics about the server. | RFC 1459 |- | /summon <user> [server] | See anchor (RFC 2812). | RFC 1459 |- | /summon <user> [server [channel]] | Gives users who are on the same host as server a message asking them to join IRC. | RFC 1459 |- | /time <server:current server> | Returns the current time on server. | RFC 1459 |- | /topic <channel> [topic] | If topic is not specified, returns the topic on the channel, otherwise the topic on channel is set to topic. | RFC 1459 |- | /trace <target> | Traces a path to the specified target, similar to a traceroute. | RFC 1459 |- | /user <username> <hostname> <servername> <realname> | See ]]. | RFC 1459 |- | /user <user> <mode> <unused> <realname> | Used at the beginning of a connection to specify the username, hostname, real name and initial user modes of the connecting client. | RFC 2812 |- | /userhost <nickname1> [nickname2] ... | Returns a list of information about each nickname. | RFC 1459 |- | /users [server] | Returns a list of users and information about each user. | RFC 1459 |- | /version [server:current server] | Returns the version of the server. | RFC 1459 |- | /wallops <message> | Sends a message to operators in the server (RFC 1459) or users with user mode "w" (RFC 2812). | RFC 1459 |- | /who [name ["o" | Returns a list of users who match name. Only IRC operators are returned if "o" is given. | RFC 1459 |- | /whois [server] <nickname1>[,nickname2]... | Returns information about the clients with nicknames. | RFC 1459 |- | /whowas <nickname> [count [server]] | Returns information about a nickname no longer in use. | RFC 1459 |}

External linksEdit

  • RFC 1459 - Technical information about IRC.
This page uses CC-BY-SA content from Wikipedia (authors). Smallwikipedialogo.png