Internet Relay Chat
Encyclopedia
Internet Relay Chat is a protocol for real-time Internet
text messaging (chat
) or synchronous conferencing
. It is mainly designed for group communication
in discussion forums, called channels, but also allows one-to-one communication
via private message
as well as chat and data transfer
, including file sharing
.
IRC was created in 1988. Client software
is now available for every major operating system that supports Internet access. As of April 2011, the top 100 IRC networks served more than half a million users at a time, with hundreds of thousands of channels operating on a total of roughly 1,500 servers out of roughly 3,200 servers worldwide.
IRC was created by Jarkko Oikarinen
in August 1988 to replace a program called MUT (MultiUser Talk) on a BBS
called OuluBox in Finland
. Oikarinen found inspiration in a chat system known as Bitnet Relay, which operated on the BITNET
.
IRC was used to report on the 1991 Soviet coup d'état attempt throughout a media blackout
. It was previously used in a similar fashion during the Gulf War
. Logs of these and other events are kept in the ibiblio
archive.
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. There are many client implementations such as mIRC
or XChat and server implementations, e.g. the original IRCd
. Most IRC servers do not require users to register an account but a user will have to set a nickname before being connected.
IRC was originally a plain text
protocol (although later extended), which on request was assigned port 194/TCP by IANA
. However, the de facto has always been to run IRC on 6667/TCP and nearby port numbers (for example TCP ports 6660-6669, 7000) to avoid having to run the IRCd
software with root privileges
.
The protocol specified that characters were 8-bit but did not specify the character encoding the text was supposed to use. This can cause problems when users using different clients and/or different platforms want to converse.
All client-to-server IRC protocols in use today are descended from the protocol implemented in the irc2.4.0 version of the IRC2 server, and documented in RFC 1459. Since RFC 1459 was published, the new features in the irc2.10 implementation led to the publication of several revised protocol documents (RFC 2810, RFC 2811, RFC 2812 and RFC 2813); however, these protocol changes have not been widely adopted among other implementations.
Although many specifications on the IRC protocol have been published, there is no official specification, as the protocol remains dynamic. Virtually no clients and very few servers rely strictly on the above RFCs as a reference.
Microsoft made an extension for IRC in 1998 via the proprietary IRCX
. They later stopped distributing software supporting IRCX, instead developing the proprietary MSN .NET Messenger Service
.
New protocol IRCwx (IRC web extension) inspired by IRCX is made by net-bits.net in an attempt to modernize IRCX for web use.
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 to users on the splitting servers. 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 in a fashion similar to multicast
, meaning each message travels a network link exactly once. This is a strength in comparison to non-multicasting protocols such as Simple Mail Transfer Protocol
(SMTP) or Extensible Messaging and Presence Protocol
(XMPP).
Due to the nature of the protocol automated systems cannot always correctly pair a sent command with its reply with full reliability and are subject to guessing.
. Channels on a network can be displayed using the IRC command LIST that lists all currently available channels, that do not have the modes +s or +p set, on that particular network.
Users can join to a channel using the JOIN command, in most clients available as /join #channelname. Messages sent to the joined channels are then relayed to all other users.
Channels that are available across an entire IRC network are prepended with a '#', while those local to a server use '&'. Other non-standard and less common channel types include '+' channels—'modeless' channels without operators — and '!' channels, a form of timestamped channel on normally non-timestamped networks.
Some but not all channel modes take parameters and some channel modes apply to a user on a channel or add or remove a mask (e.g. a ban mask) from a list associated with the channel rather than applying to the channel as a whole. Modes that apply to users on a channel have an associated symbol that is used to represent the mode in names replies (sent to clients on first joining a channel and use of the names command) and in many clients also used to represent it in the client's displayed list of users in a channel or to display an own indicator for a user's modes.
In order to correctly parse incoming mode messages and track channel state the client must know which mode is of which type and for the modes that apply to a user on a channel which symbol goes with which letter. In early implementations of IRC this had to be hard-coded in the client but there is now a de-facto standard extension to the protocol called ISUPPORT that sends this information to the client at connect time using numeric 005.
There is a small design fault in IRC regarding modes that apply to users on channels, the names message used to establish initial channel state can only send one such mode per user on the channel, but multiple such modes can be set on a single user. For example, if a user holds both operator status (+o) and voice status (+v) on a channel, a new client will be unable to know the less precedented mode (voice). Workarounds for this are possible on both the client and server side but none is widely implemented.
Many IRCd programmers have added extra modes or modified the behavior of modes in the above list so it is strongly advisable to check the documentation of the IRC network or IRCd (though note that the network may have patched the IRCd) for more detailed information on what the modes do on a particular server or network.
s, sometimes shortened to IRCops. As the implementation of the IRCd varies, so do the privileges of the IRC operator on the given IRCd. RFC1459 claims that IRC operators are "a necessary evil" to keep clean state of the network, as such they need to be able to disconnect and reconnect servers. Additionally, to prevent malicious users or even harmful automated programs from entering IRC, IRC operators usually are allowed to disconnect Clients and completely ban IPs and complete subnets. Networks that carry services (Nickserv et al.) usually allow their IRC operators also to handle basic "Ownership" matters. Further privileged rights may include overriding channel bans (being able to join channels they would not be allowed to join, if they were not opered), being able to op themselves on channels where they would not be able without being opered, being auto-opped on channels always and so forth.
An IRC Channel Operator is a client
on an IRC channel that manages the channel.
IRC Channel Operators Can be easily seen by a symbol "@" or a Latin letter "+o"/"o".
On most networks, an operator can:
connected to an IRC server
. IRC services
and bots
can use it to identify the client. The hostmask looks similar to, but should not be confused with an e-mail address
. It is a combination of the nickname, ident
, and hostname. If ident is not available, then the username is used after being prefixed with a tilde
. If the IP address
cannot be resolved to a valid hostname
, then the IP address is used instead.
Some IRC daemons
also provide security features, such as Anope's "+x" mode. This hashes a users IP address, making it unreadable to users other than IRCops. On top of this, users have the option of requesting a "vhost" or "virtual host" to allow further anonymity.
IRC Networks such as Freenode use "cloaks" to identify users to a project with a channel on the network. For instance, Wikipedia
users on freenode can request an "@wikipedia" project cloak - "~foobar@wikipedia/foobar".
. Because of this, careful security policy is necessary to ensure that an IRC network is not susceptible to an attack such as an IRC takeover
war. IRC networks may also K-line
or G-line users or networks that have a harming effect.
A small number of IRC servers support SSL connections for security purposes. This helps stop the use of packet sniffer
programs to obtain the passwords of IRC users, but has little use beyond this scope due to the public nature of IRC channels. SSL connections require both client and server support (that may require the user to install SSL binaries and IRC client specific patches or modules on their computers). Some networks also use SSL for server to server connections, and provide a special channel flag (such as
IRC served as an early laboratory for many kinds of Internet attacks, such as using fake ICMP
unreachable messages to break TCP
-based IRC connections (nuking) to annoy users or facilitate takeovers
.
s, but take very different approaches.
The problem with the original IRC protocol as implemented was that when two servers split and rejoined, the two sides of the network would simply merge their channels. If a user could join on a "split" server, where a channel that existed on the other side of the network was empty, and gain operator status, they would become a channel operator of the "combined" channel after the netsplit
ended; if a user took a nickname that existed on the other side of the network, the server would kill both users when rejoining (i.e., 'nick-collision').
This was often abused to "mass-kill" all users on a channel, thus creating "opless" channels where no operators were present to deal with abuse. Apart from causing problems within IRC, this encouraged people to conduct denial of service attacks against IRC servers in order to cause netsplit
s, which they would then abuse.
became available, or a channel ceased to exist because all its users left (as often happens during a netsplit
), the server would not allow any user to use that nickname or join that channel, until a certain period of time (the delay) had passed. The idea behind this was that even if a netsplit
occurred, it was useless to an abuser because they could not take the nickname or gain operator status on a channel, and thus no collision of a nickname or 'merging' of a channel could occur. To some extent, this inconvenienced legitimate users, who might be forced to briefly use a different name (appending an underscore
was popular) after rejoining.
TS is a much more complicated protocol than ND/CD, both in design and implementation, and despite having gone through several revisions, some implementations still have problems with "desyncs" (where two servers on the same network disagree about the current state of the network), and allowing too much leniency in what was allowed by the 'losing' side. Under the original TS protocols, for example, there was no protection against users setting bans or other modes in the losing channel that would then be merged when the split rejoined, even though the users who had set those modes lost their channel operator status. Some modern TS-based IRC servers have also incorporated some form of ND and/or CD in addition to timestamping in an attempt to further curb abuse.
Most networks today use the timestamping approach. The timestamp versus ND/CD disagreements caused several servers to split away from EFnet
and form the newer IRCnet
. After the split, EFnet moved to a TS protocol, while IRCnet used ND/CD.
s, but the protocol exposed to IRC users is very similar, and all IRC networks can be accessed by the same client software, although there might be slight incompatibilities and limited functionality due to the differing server implementations.
The largest IRC networks have traditionally been grouped as the "Big Four" a designation for networks that top the statistics. The Big Four networks change periodically, but due to the community nature of IRC there are a large number of other networks for users to choose from.
Historically the "Big Four" were:
Today the "Big Four" are:
that (when supported) allows hyperlink
s of various forms, including
irc://[:]/[[?]]
(where items enclosed within brackets ([,]) are optional) to be used to (if necessary) connect to the specified host (or network, if known to the IRC client) and join the specified channel. (This can be used within the client itself, or from another application such as a Web browser).
Per the specification, the usual hash symbol (#) will be prepended to channel names that do not begin with an alphanumeric
character—allowing it to be omitted. Some implementations (for example, mIRC) will do so unconditionally resulting in a (usually unintended) extra (for example, ##channel), if included in the URL.
Some implementations allow multiple channels to be specified, separated by commas.
s, some of the most popular clients are:
The higher-level programs also serve as platforms for the IRC clients. For instance,
. As bots evolved, they began to serve as permanent points of contact for information exchange and protection agents for the channels they served, because of their superior speed when compared to humans. Presently, although many of these functions are often delegated to network-provided services
that allow for registration and management of both nicknames and channels, bots remain popular and continue to be adapted to new and unexpected tasks.
Bots have been written in a variety of languages, and a wide array of implementations exist. Most modern IRC services
typically implement bot-like interfaces, through which users can communicate with and control the functionality. Bots have also been created for malevolent uses, such as flooding or taking over channels, ousting their rightful owners.
on a server
and functions as a persistent proxy
is known as a BNC or bouncer. The purpose is to maintain a connection to an IRC server, acting as a relay between the server and client, or simply to act as a proxy. Should the client lose network connectivity, the BNC may stay connected and archive all traffic for later delivery, allowing the user to resume his IRC session without disrupting their connection to the server.
Furthermore, as a way of obtaining a bouncer-like effect, an IRC client (typically text-based
, for example Irssi
) may be run on an always-on server to which the user connects via ssh
. This also allows devices that only have ssh functionality, but no actual IRC client installed themselves, to connect to the IRC, and it allows sharing of IRC sessions.
To keep the IRC client from quitting when the ssh connection closes, the client can be run inside a piece of screen-detaching software (e.g. GNU Screen
or tmux), thus staying connected to the IRC network(s) constantly and able to log conversation in channels that the user is interested in, etc. Modelled after this setup, in 2004 an IRC client following the client-server
model, called Smuxi
, has been launched.
The back-end (spider/crawler) is the work horse of the search engine. It is responsible for crawling IRC servers to index the information being sent across them. The information that is indexed usually consists solely of channel text (text that is publicly displayed in public channels). The storage method is usually some sort of relational database, like MySQL
or Oracle
.
The front-end "search engine" is the user interface to the database. It supplies users with a way to search the database of indexed information to retrieve the data they are looking for. These front-end search engines can also be coded in numerous programming languages. The more popular languages for such search engines and indexing spiders are Perl
, PHP
and C
.
Most search engines have their own spider that is a single application responsible for crawling IRC and indexing data itself; however, others are "user based" indexers. The latter rely on users to install their "add-on" to their IRC client; the add-on is what sends the database the channel information of whatever channels the user happens to be on. IRC search engines have completely automated the process of finding information on IRC and have thus contributed greatly to the popularity of IRC in recent years.
repertoire.
IRC servers normally transfer messages from a client to another client just as byte sequences, without any interpretation or recoding of characters
. The IRC protocol (unlike e.g. MIME
or HTTP) lacks mechanisms for announcing and negotiation character encoding options. This has put the responsibility for choosing the appropriate character codec on the client. In practice, IRC channels have largely used the same character encodings that were also used by operating systems (in particular Unix
derivatives) in the respective language communities:
Today, the UTF-8
encoding of Unicode
/ISO 10646 would be the most likely contender for a single future standard character encoding for all IRC communication, if such standard ever relaxed the 510 bytes message size restriction. UTF-8 is ASCII compatible and covers the superset of all other commonly used coded character set standards.
file sharing, users can create file servers that allow them to share files with each other by using customised IRC bot
s or scripts for their IRC client. Often users will group together to distribute warez
via a network of IRC bots.
Technically, IRC provides no file transfer
mechanisms itself; file sharing is implemented by IRC clients, typically using the Direct Client-to-Client
(DCC) protocol, in which file transfers are negotiated through the exchange of private messages between clients. The vast majority of IRC clients feature support for DCC file transfers, hence the view that file sharing is an integral feature of IRC. The commonplace usage of this protocol, however, sometimes also causes DCC spam. DCC commands have also been used to exploit vulnerable clients into performing an action such as disconnecting from the server or exiting the client.
Internet
The Internet is a global system of interconnected computer networks that use the standard Internet protocol suite to serve billions of users worldwide...
text messaging (chat
Online chat
Online chat may refer to any kind of communication over the Internet, that offers an instantaneous transmission of text-based messages from sender to receiver, hence the delay for visual access to the sent message shall not hamper the flow of communications in any of the directions...
) or synchronous conferencing
Synchronous conferencing
Synchronous conferencing is the formal term used in science, in particular in computer-mediated communication, collaboration and learning, to describe online chat technologies. It has arisen at a time when the term chat had a negative connotation...
. It is mainly designed for group communication
Many-to-many
Many-to-many is a term that describes a communication paradigm and an associated media form. It is the third of three major Internet computing paradigms...
in discussion forums, called channels, but also allows one-to-one communication
One-to-one (communication)
One-to-one in communication is the act of an individual communicating with another. In Internet terms, this can be done by e-mail but the most typical one-to-one communication in the Internet is instant messaging as it does not consider many-to-many communication such as a chat room as an...
via private message
Instant messaging
Instant Messaging is a form of real-time direct text-based chatting communication in push mode between two or more people using personal computers or other devices, along with shared clients. The user's text is conveyed over a network, such as the Internet...
as well as chat and data transfer
Direct Client-to-Client
Direct Client-to-Client is an IRC-related sub-protocol enabling peers to interconnect using an IRC server for handshaking in order to exchange files or perform non-relayed chats. Once established, a typical DCC session runs independently from the IRC server. Originally designed to be used with...
, including file sharing
File sharing
File sharing is the practice of distributing or providing access to digitally stored information, such as computer programs, multimedia , documents, or electronic books. It may be implemented through a variety of ways...
.
IRC was created in 1988. Client software
Comparison of Internet Relay Chat clients
The following tables compare general and technical information between a number of IRC client programs. Please see the individual products articles for further information.- General :...
is now available for every major operating system that supports Internet access. As of April 2011, the top 100 IRC networks served more than half a million users at a time, with hundreds of thousands of channels operating on a total of roughly 1,500 servers out of roughly 3,200 servers worldwide.
History
IRC was created by Jarkko Oikarinen
Jarkko Oikarinen
Jarkko Oikarinen is the inventor of the first Internet chat network, called Internet Relay Chat , where he is known as WiZ. While working at the University of Oulu in August 1988, he wrote the first IRC server and client programs, which he produced to replace the MUT program on the Finnish BBS...
in August 1988 to replace a program called MUT (MultiUser Talk) on a BBS
Bulletin board system
A Bulletin Board System, or BBS, is a computer system running software that allows users to connect and log in to the system using a terminal program. Once logged in, a user can perform functions such as uploading and downloading software and data, reading news and bulletins, and exchanging...
called OuluBox in Finland
Finland
Finland , officially the Republic of Finland, is a Nordic country situated in the Fennoscandian region of Northern Europe. It is bordered by Sweden in the west, Norway in the north and Russia in the east, while Estonia lies to its south across the Gulf of Finland.Around 5.4 million people reside...
. Oikarinen found inspiration in a chat system known as Bitnet Relay, which operated on the BITNET
BITNET
BITNET was a cooperative USA university network founded in 1981 by Ira Fuchs at the City University of New York and Greydon Freeman at Yale University...
.
IRC was used to report on the 1991 Soviet coup d'état attempt throughout a media blackout
Media blackout
Media blackout refers to the censorship of news related to a certain topic, particularly in mass media, for any reason. A media blackout may be voluntary, or may in some countries be enforced by the government or state. The latter case is controversial in peacetime, as some regard it as a human...
. It was previously used in a similar fashion during the Gulf War
Gulf War
The Persian Gulf War , commonly referred to as simply the Gulf War, was a war waged by a U.N.-authorized coalition force from 34 nations led by the United States, against Iraq in response to Iraq's invasion and annexation of Kuwait.The war is also known under other names, such as the First Gulf...
. Logs of these and other events are kept in the ibiblio
Ibiblio
ibiblio is a "collection of collections," and hosts a diverse range of publicly available information and open source software, including software, music, literature, art, history, science, politics, and cultural studies. As an "Internet librarianship," ibiblio is a digital library and archive...
archive.
Technical information
IRC is an open protocol that uses TCPTransmission Control Protocol
The Transmission Control Protocol is one of the core protocols of the Internet Protocol Suite. TCP is one of the two original components of the suite, complementing the Internet Protocol , and therefore the entire suite is commonly referred to as TCP/IP...
and optionally TLS
Transport Layer Security
Transport Layer Security and its predecessor, Secure Sockets Layer , are cryptographic protocols that provide communication security over the Internet...
. 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. There are many client implementations such as mIRC
MIRC
mIRC is an Internet Relay Chat client for Microsoft Windows, created in 1995 and developed by Khaled Mardam-Bey. Although it is a fully functional chat utility, its integrated scripting language makes it extensible and versatile....
or XChat and server implementations, e.g. the original IRCd
IRCd
An IRCd, short for Internet Relay Chat daemon, is server software that implements the IRC protocol, enabling people to talk to each other via the Internet . It is distinct from an IRC bot that connects outbound to an IRC channel.The server listens to connections from IRC clients on a set of TCP ports...
. Most IRC servers do not require users to register an account but a user will have to set a nickname before being connected.
IRC was originally a plain text
Plain text
In computing, plain text is the contents of an ordinary sequential file readable as textual material without much processing, usually opposed to formatted text....
protocol (although later extended), which on request was assigned port 194/TCP by IANA
Internet Assigned Numbers Authority
The Internet Assigned Numbers Authority is the entity that oversees global IP address allocation, autonomous system number allocation, root zone management in the Domain Name System , media types, and other Internet Protocol-related symbols and numbers...
. However, the de facto has always been to run IRC on 6667/TCP and nearby port numbers (for example TCP ports 6660-6669, 7000) to avoid having to run the IRCd
IRCd
An IRCd, short for Internet Relay Chat daemon, is server software that implements the IRC protocol, enabling people to talk to each other via the Internet . It is distinct from an IRC bot that connects outbound to an IRC channel.The server listens to connections from IRC clients on a set of TCP ports...
software with root privileges
Superuser
On many computer operating systems, the superuser is a special user account used for system administration. Depending on the operating system, the actual name of this account might be: root, administrator or supervisor....
.
The protocol specified that characters were 8-bit but did not specify the character encoding the text was supposed to use. This can cause problems when users using different clients and/or different platforms want to converse.
All client-to-server IRC protocols in use today are descended from the protocol implemented in the irc2.4.0 version of the IRC2 server, and documented in RFC 1459. Since RFC 1459 was published, the new features in the irc2.10 implementation led to the publication of several revised protocol documents (RFC 2810, RFC 2811, RFC 2812 and RFC 2813); however, these protocol changes have not been widely adopted among other implementations.
Although many specifications on the IRC protocol have been published, there is no official specification, as the protocol remains dynamic. Virtually no clients and very few servers rely strictly on the above RFCs as a reference.
Microsoft made an extension for IRC in 1998 via the proprietary IRCX
IRCX
IRCX is an extension to the IRC protocol, developed by Microsoft.IRCX defines ways to use SASL authentication to authenticate securely to the server, channel properties/metadata, multilingual support that can be queried using the enhanced "LISTX" command , an additional user level IRCX (Internet...
. They later stopped distributing software supporting IRCX, instead developing the proprietary MSN .NET Messenger Service
.NET Messenger Service
The .NET Messenger Service is an instant messaging and presence system developed by Microsoft in 1999 for use with its MSN Messenger software and used today by its current instant messaging clients, Windows Live Messenger and Microsoft Messenger for Mac...
.
New protocol IRCwx (IRC web extension) inspired by IRCX is made by net-bits.net in an attempt to modernize IRCX for web use.
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 to users on the splitting servers. 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 in a fashion similar to multicast
Multicast
In computer networking, multicast is the delivery of a message or information to a group of destination computers simultaneously in a single transmission from the source creating copies automatically in other network elements, such as routers, only when the topology of the network requires...
, meaning each message travels a network link exactly once. This is a strength in comparison to non-multicasting protocols such as Simple Mail Transfer Protocol
Simple Mail Transfer Protocol
Simple Mail Transfer Protocol is an Internet standard for electronic mail transmission across Internet Protocol networks. SMTP was first defined by RFC 821 , and last updated by RFC 5321 which includes the extended SMTP additions, and is the protocol in widespread use today...
(SMTP) or Extensible Messaging and Presence Protocol
Extensible Messaging and Presence Protocol
Extensible Messaging and Presence Protocol is an open-standard communications protocol for message-oriented middleware based on XML . The protocol was originally named Jabber, and was developed by the Jabber open-source community in 1999 for near-real-time, extensible instant messaging , presence...
(XMPP).
Commands and replies
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 '/'. 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 automated systems cannot always correctly pair a sent command with its reply with full reliability and are subject to guessing.
Channels
The basic means of communicating to a group of users in an established IRC session is through a channelChat room
The term chat room, or chatroom, is primarily used by mass media to describe any form of synchronous conferencing, occasionally even asynchronous conferencing...
. Channels on a network can be displayed using the IRC command LIST that lists all currently available channels, that do not have the modes +s or +p set, on that particular network.
Users can join to a channel using the JOIN command, in most clients available as /join #channelname. Messages sent to the joined channels are then relayed to all other users.
Channels that are available across an entire IRC network are prepended with a '#', while those local to a server use '&'. Other non-standard and less common channel types include '+' channels—'modeless' channels without operators — and '!' channels, a form of timestamped channel on normally non-timestamped networks.
Modes
Users and channels may have modes that are represented by single case-sensitive letters and are set using the MODE command. User modes and channel modes are separate and can use the same letter to mean different things (e.g. usermode "i" is invisible mode whilst channelmode "i" is invite only.) Modes are usually set and unset using the mode command that takes a target (user or channel), a set of modes to set (+) or unset (-) and any parameters the modes need.Some but not all channel modes take parameters and some channel modes apply to a user on a channel or add or remove a mask (e.g. a ban mask) from a list associated with the channel rather than applying to the channel as a whole. Modes that apply to users on a channel have an associated symbol that is used to represent the mode in names replies (sent to clients on first joining a channel and use of the names command) and in many clients also used to represent it in the client's displayed list of users in a channel or to display an own indicator for a user's modes.
In order to correctly parse incoming mode messages and track channel state the client must know which mode is of which type and for the modes that apply to a user on a channel which symbol goes with which letter. In early implementations of IRC this had to be hard-coded in the client but there is now a de-facto standard extension to the protocol called ISUPPORT that sends this information to the client at connect time using numeric 005.
There is a small design fault in IRC regarding modes that apply to users on channels, the names message used to establish initial channel state can only send one such mode per user on the channel, but multiple such modes can be set on a single user. For example, if a user holds both operator status (+o) and voice status (+v) on a channel, a new client will be unable to know the less precedented mode (voice). Workarounds for this are possible on both the client and server side but none is widely implemented.
Standard (RFC1459) modes
Letter | Symbol | Description |
---|---|---|
i | Invisible—cannot be seen without a common channel or knowing the exact name | |
s | Receives server notices | |
w | Receives wallops | |
o | User is an IRC operator (ircop) | |
Letter | Symbol | Parameter(s) | Description |
---|---|---|---|
o | @ | Name of affected user | Channel operator—can change channel modes and kick users out of the channel among other things |
s | Secret channel—not shown in channel list or user whois except to users already on the channel | ||
p | Private channel—listed in channel list as "prv" according to |
||
n | Users cannot send messages to the channel externally | ||
m | Channel is moderated (only those who hold operator or voice status on the channel can send messages to it) | ||
i | Only users with invites may enter the channel. | ||
t | Only operators can change the channel topic. | ||
l | Limit number | Limits number of users able to be on channel (when full, no new users can join) | |
b | Ban mask (nick!user@host with wildcards allowed) | Bans hostmasks from channel | |
v | + | Name of affected user | Gives a user voice status on channel (see +m above) |
k | None | New channel key | Sets a channel key such that only users knowing the key can enter |
Many IRCd programmers have added extra modes or modified the behavior of modes in the above list so it is strongly advisable to check the documentation of the IRC network or IRCd (though note that the network may have patched the IRCd) for more detailed information on what the modes do on a particular server or network.
IRC operators
There are also users who maintain elevated rights on their local server, or the entire network; these are called IRC operatorIRC operator
An IRC operator is a user on an Internet Relay Chat network who has privileged access. IRC operators are charged with the task of enforcing the network's rules, and in many cases, improving the network in various areas...
s, sometimes shortened to IRCops. As the implementation of the IRCd varies, so do the privileges of the IRC operator on the given IRCd. RFC1459 claims that IRC operators are "a necessary evil" to keep clean state of the network, as such they need to be able to disconnect and reconnect servers. Additionally, to prevent malicious users or even harmful automated programs from entering IRC, IRC operators usually are allowed to disconnect Clients and completely ban IPs and complete subnets. Networks that carry services (Nickserv et al.) usually allow their IRC operators also to handle basic "Ownership" matters. Further privileged rights may include overriding channel bans (being able to join channels they would not be allowed to join, if they were not opered), being able to op themselves on channels where they would not be able without being opered, being auto-opped on channels always and so forth.
An IRC Channel Operator is a client
Client (computing)
A client is an application or system that accesses a service made available by a server. The server is often on another computer system, in which case the client accesses the service by way of a network....
on an IRC channel that manages the channel.
IRC Channel Operators Can be easily seen by a symbol "@" or a Latin letter "+o"/"o".
On most networks, an operator can:
- Kick a user
- Ban a user
- Give other user IRC Channel Operator Status or IRC Channel Voice Status.
- Change the IRC Channel topic.
- Change the IRC Channel Mode locks.
Hostmasks
A hostmask is a unique identifier of an IRC clientClient (computing)
A client is an application or system that accesses a service made available by a server. The server is often on another computer system, in which case the client accesses the service by way of a network....
connected to an IRC server
Server (computing)
In the context of client-server architecture, a server is a computer program running to serve the requests of other programs, the "clients". Thus, the "server" performs some computational task on behalf of "clients"...
. IRC services
IRC services
Internet Relay Chat services is a name for a set of features implemented on many modern Internet Relay Chat networks. Services are automated bots with special status which are generally used to provide users with access with certain privileges and protection...
and bots
IRC bot
thumb|409px|right|An IRC bot performing a simple task.An IRC bot is a set of scripts or an independent program that connects to Internet Relay Chat as a client, and so appears to other IRC users as another user...
can use it to identify the client. The hostmask looks similar to, but should not be confused with an e-mail address
E-mail address
An email address identifies an email box to which email messages are delivered. An example format of an email address is lewis@example.net which is read as lewis at example dot net...
. It is a combination of the nickname, ident
Ident
The Ident Protocol, specified in RFC 1413, is an Internet protocol that helps identify the user of a particular TCP connection. One popular daemon program for providing the ident service is identd.-How ident works:...
, and hostname. If ident is not available, then the username is used after being prefixed with a tilde
Tilde
The tilde is a grapheme with several uses. The name of the character comes from Portuguese and Spanish, from the Latin titulus meaning "title" or "superscription", though the term "tilde" has evolved and now has a different meaning in linguistics....
. If the IP address
IP address
An Internet Protocol address is a numerical label assigned to each device participating in a computer network that uses the Internet Protocol for communication. An IP address serves two principal functions: host or network interface identification and location addressing...
cannot be resolved to a valid hostname
Hostname
A hostname is a label that is assigned to a device connected to a computer network and that is used to identify the device in various forms of electronic communication such as the World Wide Web, e-mail or Usenet...
, then the IP address is used instead.
Some IRC daemons
IRCd
An IRCd, short for Internet Relay Chat daemon, is server software that implements the IRC protocol, enabling people to talk to each other via the Internet . It is distinct from an IRC bot that connects outbound to an IRC channel.The server listens to connections from IRC clients on a set of TCP ports...
also provide security features, such as Anope's "+x" mode. This hashes a users IP address, making it unreadable to users other than IRCops. On top of this, users have the option of requesting a "vhost" or "virtual host" to allow further anonymity.
IRC Networks such as Freenode use "cloaks" to identify users to a project with a channel on the network. For instance, Wikipedia
Wikipedia
Wikipedia is a free, web-based, collaborative, multilingual encyclopedia project supported by the non-profit Wikimedia Foundation. Its 20 million articles have been written collaboratively by volunteers around the world. Almost all of its articles can be edited by anyone with access to the site,...
users on freenode can request an "@wikipedia" project cloak - "~foobar@wikipedia/foobar".
Challenges
Issues in the original design of IRC were the amount of shared state data being a limitation on its scalability, the absence of unique user identifications leading to the nickname collision problem, lack of protection from netsplits by means of cyclic routing, the trade-off in scalability for the sake of real-time user presence information, protocol weaknesses providing a platform for abuse, no transparent and optimizable message passing, no encryption. Some of these issues have been addressed in Modern IRC.Attacks
Because IRC connections are usually unencrypted and typically span long time periods, they are an attractive target for hackersHacker (computer security)
In computer security and everyday language, a hacker is someone who breaks into computers and computer networks. Hackers may be motivated by a multitude of reasons, including profit, protest, or because of the challenge...
. Because of this, careful security policy is necessary to ensure that an IRC network is not susceptible to an attack such as an IRC takeover
IRC takeover
An IRC channel takeover is an acquisition of IRC channel operator status by someone other than the channel's owner. It has largely been eliminated due to the increased use of services on IRC networks.-Riding the split:...
war. IRC networks may also K-line
K-Line
K-Line Electric Trains is a brand name of O gauge and S gauge model railway locomotives, rolling stock, and buildings. Formerly the brand name under which Chapel Hill, North Carolina-based MDK Inc. sold its products, K-Line was then acquired by Sanda Kan, a Chinese toy manufacturer that formerly...
or G-line users or networks that have a harming effect.
A small number of IRC servers support SSL connections for security purposes. This helps stop the use of packet sniffer
Packet sniffer
A packet analyzer is a computer program or a piece of computer hardware that can intercept and log traffic passing over a digital network or part of a network...
programs to obtain the passwords of IRC users, but has little use beyond this scope due to the public nature of IRC channels. SSL connections require both client and server support (that may require the user to install SSL binaries and IRC client specific patches or modules on their computers). Some networks also use SSL for server to server connections, and provide a special channel flag (such as
+S
) to only allow SSL-connected users on the channel, while disallowing operator identification in clear text, to better utilize the advantages that SSL provide.IRC served as an early laboratory for many kinds of Internet attacks, such as using fake ICMP
Internet Control Message Protocol
The Internet Control Message Protocol is one of the core protocols of the Internet Protocol Suite. It is chiefly used by the operating systems of networked computers to send error messages indicating, for example, that a requested service is not available or that a host or router could not be...
unreachable messages to break TCP
Transmission Control Protocol
The Transmission Control Protocol is one of the core protocols of the Internet Protocol Suite. TCP is one of the two original components of the suite, complementing the Internet Protocol , and therefore the entire suite is commonly referred to as TCP/IP...
-based IRC connections (nuking) to annoy users or facilitate takeovers
IRC takeover
An IRC channel takeover is an acquisition of IRC channel operator status by someone other than the channel's owner. It has largely been eliminated due to the increased use of services on IRC networks.-Riding the split:...
.
Abuse prevention
One of the most contentious technical issues surrounding IRC implementations, which survives to this day, is the merit of "Nick/Channel Delay" vs. "Timestamp" protocols. Both methods exist to solve the problem of denial-of-service attackDenial-of-service attack
A denial-of-service attack or distributed denial-of-service attack is an attempt to make a computer resource unavailable to its intended users...
s, but take very different approaches.
The problem with the original IRC protocol as implemented was that when two servers split and rejoined, the two sides of the network would simply merge their channels. If a user could join on a "split" server, where a channel that existed on the other side of the network was empty, and gain operator status, they would become a channel operator of the "combined" channel after the netsplit
Netsplit
In computer networking, specifically Internet Relay Chat , netsplit is the disconnection of a given node from the previously established network or between two nodes. As an IRC network is an undirected acyclic graph, a split between any two nodes splits the entire network into two pieces.Consider...
ended; if a user took a nickname that existed on the other side of the network, the server would kill both users when rejoining (i.e., 'nick-collision').
This was often abused to "mass-kill" all users on a channel, thus creating "opless" channels where no operators were present to deal with abuse. Apart from causing problems within IRC, this encouraged people to conduct denial of service attacks against IRC servers in order to cause netsplit
Netsplit
In computer networking, specifically Internet Relay Chat , netsplit is the disconnection of a given node from the previously established network or between two nodes. As an IRC network is an undirected acyclic graph, a split between any two nodes splits the entire network into two pieces.Consider...
s, which they would then abuse.
Nick/channel delay
The nick/channel delay (abbreviated ND/CD) solution to this problem was very simple. After a user signed off and the nicknameNickname
A nickname is "a usually familiar or humorous but sometimes pointed or cruel name given to a person or place, as a supposedly appropriate replacement for or addition to the proper name.", or a name similar in origin and pronunciation from the original name....
became available, or a channel ceased to exist because all its users left (as often happens during a netsplit
Netsplit
In computer networking, specifically Internet Relay Chat , netsplit is the disconnection of a given node from the previously established network or between two nodes. As an IRC network is an undirected acyclic graph, a split between any two nodes splits the entire network into two pieces.Consider...
), the server would not allow any user to use that nickname or join that channel, until a certain period of time (the delay) had passed. The idea behind this was that even if a netsplit
Netsplit
In computer networking, specifically Internet Relay Chat , netsplit is the disconnection of a given node from the previously established network or between two nodes. As an IRC network is an undirected acyclic graph, a split between any two nodes splits the entire network into two pieces.Consider...
occurred, it was useless to an abuser because they could not take the nickname or gain operator status on a channel, and thus no collision of a nickname or 'merging' of a channel could occur. To some extent, this inconvenienced legitimate users, who might be forced to briefly use a different name (appending an underscore
Underscore
The underscore [ _ ] is a character that originally appeared on the typewriter and was primarily used to underline words...
was popular) after rejoining.
Timestamping
The alternative, the timestamp or TS protocol, took a different approach. Every nickname and channel on the network was assigned a timestamp the date and time when it was created. When a netsplit occurred, two users on each side were free to use the same nickname or channel, but when the two sides were joined, only one could survive. In the case of nicknames, the newer user, according to their TS, was killed; when a channel collided, the members (users on the channel) were merged, but the channel operators on the "losing" side of the split lost their channel operator status.TS is a much more complicated protocol than ND/CD, both in design and implementation, and despite having gone through several revisions, some implementations still have problems with "desyncs" (where two servers on the same network disagree about the current state of the network), and allowing too much leniency in what was allowed by the 'losing' side. Under the original TS protocols, for example, there was no protection against users setting bans or other modes in the losing channel that would then be merged when the split rejoined, even though the users who had set those modes lost their channel operator status. Some modern TS-based IRC servers have also incorporated some form of ND and/or CD in addition to timestamping in an attempt to further curb abuse.
Most networks today use the timestamping approach. The timestamp versus ND/CD disagreements caused several servers to split away from EFnet
EFnet
EFnet or Eris Free network is a major IRC network, with more than 35,000 users. It is the modern-day descendant of the original IRC network.- History :...
and form the newer IRCnet
IRCnet
IRCnet is one of the largest IRC networks with more than 60,000 users using it daily. An early 2005 record had approximately 123,110 users simultaneously connected to the network.-History:...
. After the split, EFnet moved to a TS protocol, while IRCnet used ND/CD.
SAVE
In recent Versions of the ircnet IRCd, ND has been extended/replaced by a mechanism called SAVE. This mechanism assigns every client a unique UID upon connecting to an IRC Server. This ID starts with a number, which is forbidden in nicks. Clients may now choose to use their UID or any free nick; however, if two clients with the same nickname are joined from different sides of a netsplit ("Collision"), the first server to see this collision will force BOTH clients to change their nick to their UID, thus SAVEing both clients from being disconnected. The nickname will be locked for some time (ND) to prevent both clients to change to the original nickname back, thus colliding again.Networks
There are thousands of running IRC networks in the world. They run various implementations of IRC servers, and are administered by various groups of IRC operatorIRC operator
An IRC operator is a user on an Internet Relay Chat network who has privileged access. IRC operators are charged with the task of enforcing the network's rules, and in many cases, improving the network in various areas...
s, but the protocol exposed to IRC users is very similar, and all IRC networks can be accessed by the same client software, although there might be slight incompatibilities and limited functionality due to the differing server implementations.
The largest IRC networks have traditionally been grouped as the "Big Four" a designation for networks that top the statistics. The Big Four networks change periodically, but due to the community nature of IRC there are a large number of other networks for users to choose from.
Historically the "Big Four" were:
- EFnetEFnetEFnet or Eris Free network is a major IRC network, with more than 35,000 users. It is the modern-day descendant of the original IRC network.- History :...
- IRCnetIRCnetIRCnet is one of the largest IRC networks with more than 60,000 users using it daily. An early 2005 record had approximately 123,110 users simultaneously connected to the network.-History:...
- UndernetUndernetThe Undernet is the fourth-largest publicly-monitored Internet Relay Chat network circa 2011, with about 12 client servers serving 60,000 users in 11,000 channels at any given time....
- DALnetDALnetDALnet is an Internet Relay Chat network that is currently populated by a stable population of around 30,000 users in about 18,000 channels, with 40 servers making up the network....
Today the "Big Four" are:
- EFnetEFnetEFnet or Eris Free network is a major IRC network, with more than 35,000 users. It is the modern-day descendant of the original IRC network.- History :...
- IRCnetIRCnetIRCnet is one of the largest IRC networks with more than 60,000 users using it daily. An early 2005 record had approximately 123,110 users simultaneously connected to the network.-History:...
- QuakeNetQuakeNetQuakeNet is currently the largest Internet Relay Chat network, with a peak average of about 135,000 users and 100,000 channels. The network was founded in 1997 by Garfield and Oli as a new home for their respective countries' Quake channels...
- UndernetUndernetThe Undernet is the fourth-largest publicly-monitored Internet Relay Chat network circa 2011, with about 12 client servers serving 60,000 users in 11,000 channels at any given time....
URI scheme
There is an irc: URI schemeURI scheme
In the field of computer networking, a URI scheme is the top level of the Uniform Resource Identifier naming structure. All URIs and absolute URI references are formed with a scheme name, followed by a colon character , and the remainder of the URI called the scheme-specific part...
that (when supported) allows hyperlink
Hyperlink
In computing, a hyperlink is a reference to data that the reader can directly follow, or that is followed automatically. A hyperlink points to a whole document or to a specific element within a document. Hypertext is text with hyperlinks...
s of various forms, including
(where items enclosed within brackets ([,]) are optional) to be used to (if necessary) connect to the specified host (or network, if known to the IRC client) and join the specified channel. (This can be used within the client itself, or from another application such as a Web browser).
Per the specification, the usual hash symbol (#) will be prepended to channel names that do not begin with an alphanumeric
Alphanumeric
Alphanumeric is a combination of alphabetic and numeric characters, and is used to describe the collection of Latin letters and Arabic digits or a text constructed from this collection. There are either 36 or 62 alphanumeric characters. The alphanumeric character set consists of the numbers 0 to...
character—allowing it to be omitted. Some implementations (for example, mIRC) will do so unconditionally resulting in a (usually unintended) extra (for example, ##channel), if included in the URL.
Some implementations allow multiple channels to be specified, separated by commas.
Client software
In different operating systemOperating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...
s, some of the most popular clients are:
- Windows: mIRCMIRCmIRC is an Internet Relay Chat client for Microsoft Windows, created in 1995 and developed by Khaled Mardam-Bey. Although it is a fully functional chat utility, its integrated scripting language makes it extensible and versatile....
, Miranda IMMiranda IMMiranda IM is an open source multiprotocol instant messaging application, designed for Microsoft Windows. Miranda is free software distributed under GNU General Public License.- Architecture :...
, Trillian, PidginPidgin (software)Pidgin is an open-source multi-platform instant messaging client, based on a library named libpurple. Libpurple has support for many commonly used instant messaging protocols, allowing the user to log into various services from one application.The number of Pidgin users was estimated to be over 3...
, KVIrcKVIrcKVIrc is a graphical IRC client for Linux, Unix, Mac OS and Windows. The name is an acronym of K Visual IRC in which the K stands for a dependency to KDE, which became optional from version 2.0.0...
, and XChat. - UnixUnixUnix is a multitasking, multi-user computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs, including Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy, and Joe Ossanna...
and LinuxLinuxLinux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...
: Quassel, KopeteKopeteKopete is a multi-protocol, free software instant messaging client. Although it can run in numerous environments, it was designed for and integrates with the KDE desktop environment...
, irssiIrssiIrssi is an IRC client program for Linux, Microsoft Windows, and Mac OS X. It was originally written by Timo Sirainen, and released under the terms of the GNU General Public License in January 1999.-Features:...
, XChat, KonversationKonversationKonversation is an Internet Relay Chat client built on the KDE Platform and is free software released under the terms of the GNU General Public License. Konversation is currently maintained in the KDE Extragear module, which means that it has its own release cycle which is independent from KDE...
, KVIrcKVIrcKVIrc is a graphical IRC client for Linux, Unix, Mac OS and Windows. The name is an acronym of K Visual IRC in which the K stands for a dependency to KDE, which became optional from version 2.0.0...
, PidginPidgin (software)Pidgin is an open-source multi-platform instant messaging client, based on a library named libpurple. Libpurple has support for many commonly used instant messaging protocols, allowing the user to log into various services from one application.The number of Pidgin users was estimated to be over 3...
, and the traditional ircIIIrcIIircII is a free, open-source Unix IRC and ICB client written in C. Initially released in the late 1980s, it is the oldest IRC client still maintained. Several other UNIX IRC clients, including BitchX, EPIC, and ScrollZ, were originally forks of ircII...
and derivatives. - For Mac OS XMac OS XMac OS X is a series of Unix-based operating systems and graphical user interfaces developed, marketed, and sold by Apple Inc. Since 2002, has been included with all new Macintosh computer systems...
: SnakSnakSnak is a popular shareware Internet Relay Chat client written by Kent Sorensen for the Macintosh platform. Snak is distributed as shareware and can be freely used and evaluated for 30 days at no charge. After the 30-day evaluation period has ended, the program will quit after 15 minutes of use,...
, IrcleIrcleIrcle is an IRC client developed by Onno Tijdgat for the Macintosh computer platform. Ircle is shareware, with free upgrades...
, AdiumAdiumAdium is a free and open source instant messaging client for Mac OS X that supports multiple IM networks, including Windows Live Messenger, Yahoo! Messenger, Google Talk, AIM, ICQ, and XMPP. It supports many protocols through the libraries libezv , MGTwitterEngine , and libpurple...
and ColloquyColloquy (IRC client)Colloquy is an open-source IRC, SILC, ICB and XMPP client for Mac OS X. Colloquy uses its own core, known as Chat Core, although in the past it used Irssi as its IRC protocol engine. One of the primary goals behind Colloquy was to create an IRC, SILC and ICB client with Mac OS X visuals...
. OS X can also run most Unix-like command line and X11X Window SystemThe X window system is a computer software system and network protocol that provides a basis for graphical user interfaces and rich input device capability for networked computers...
IRC clients. - For iOSIOSiOS is an operating system for iPad, iPhone, iPod Touch, and Apple TV.IOS may also refer to:-Companies and organisations:* Illinois Ornithological Society, American state-based bird club...
: ColloquyColloquy (IRC client)Colloquy is an open-source IRC, SILC, ICB and XMPP client for Mac OS X. Colloquy uses its own core, known as Chat Core, although in the past it used Irssi as its IRC protocol engine. One of the primary goals behind Colloquy was to create an IRC, SILC and ICB client with Mac OS X visuals... - For Android: androIRC, Andchat, DaraIRC, fIRC chat, IRC radio, Yaaic, AiCiA, Droid-Life IRC, etc.
The higher-level programs also serve as platforms for the IRC clients. For instance,
- a client called ERCERC (software)ERC is a software package written in Emacs Lisp that enables the Emacs editor to act as an Internet Relay Chat client.It is an official GNU project, and is part of GNU Emacs...
, written entirely in Emacs LispEmacs LispEmacs Lisp is a dialect of the Lisp programming language used by the GNU Emacs and XEmacs text editors . It is used for implementing most of the editing functionality built into Emacs, the remainder being written in C...
is included in v.22.3 of Emacs. Therefore, any platform that can run Emacs can run ERC. - There are a number of Web browsers with built-in IRC clients. OperaOpera (web browser)Opera is a web browser and Internet suite developed by Opera Software with over 200 million users worldwide. The browser handles common Internet-related tasks such as displaying web sites, sending and receiving e-mail messages, managing contacts, chatting on IRC, downloading files via BitTorrent,...
has a built in IRC client. To Mozilla FirefoxMozilla FirefoxMozilla Firefox is a free and open source web browser descended from the Mozilla Application Suite and managed by Mozilla Corporation. , Firefox is the second most widely used browser, with approximately 25% of worldwide usage share of web browsers...
, ChatZillaChatZillaChatZilla is an IRC client for Mozilla-based browsers such as Firefox, introduced in 2000. It is cross-platform open source software which has been noted for its consistent appearance across platforms, CSS appearance customization and scripting....
add-on can be installed. Web-based clients include MibbitMibbitMibbit is a web-based client for modern web browsers that supports Internet Relay Chat , Yahoo Messenger, and Twitter. It is developed by Jimmy Moore and is designed around the Ajax model with a user interface written in JavaScript.- Design :...
, qwebirc and WebIRC. - Built-in IRC is utilized by many computer games, such as War§owWar§owWarsow is a multiplayer first-person shooter computer game first publicly released on June 8, 2005. The game is in active development.Warsow’s codebase is free and open source software, distributed under the terms of the GPL; it is built upon Qfusion, an advanced modification of the Quake II engine...
, Unreal TournamentUnreal TournamentUnreal Tournament is a futuristic first-person shooter video game co-developed by Epic Games and Digital Extremes. It was published in 1999 by GT Interactive. Retrospectively, the game has also been referred to as UT99 or UT Classic to differentiate it from its numbered sequels...
(up to Unreal Tournament 2004Unreal Tournament 2004Unreal Tournament 2004, also known as UT2K4 and UT2004, is a futuristic first-person shooter computer game developed by Epic Games and Digital Extremes...
), Uplink, Spring Games and ZDaemon. UstreamUstreamUstream is a website which consists of a network of diverse channels providing a platform for lifecasting and live video streaming of events online. Established in March 2007, the site has over 2,000,000 registered users who generate 1,500,000+ hours of live streamed content per month with over ten...
's chat interface is IRC with custom authentication. Justin.tvJustin.tvJustin.tv is a website created by Justin Kan, Emmett Shear, Michael Seibel and Kyle Vogt in 2007 that allows anyone to broadcast video online. Justin.tv user accounts are called "channels", and users are encouraged to broadcast a wide variety of user-generated live video content, called...
's chat interface is IRC with custom authentication as with UstreamUstreamUstream is a website which consists of a network of diverse channels providing a platform for lifecasting and live video streaming of events online. Established in March 2007, the site has over 2,000,000 registered users who generate 1,500,000+ hours of live streamed content per month with over ten...
's.
Bots
Automated clients are called botsIRC bot
thumb|409px|right|An IRC bot performing a simple task.An IRC bot is a set of scripts or an independent program that connects to Internet Relay Chat as a client, and so appears to other IRC users as another user...
. As bots evolved, they began to serve as permanent points of contact for information exchange and protection agents for the channels they served, because of their superior speed when compared to humans. Presently, although many of these functions are often delegated to network-provided services
IRC services
Internet Relay Chat services is a name for a set of features implemented on many modern Internet Relay Chat networks. Services are automated bots with special status which are generally used to provide users with access with certain privileges and protection...
that allow for registration and management of both nicknames and channels, bots remain popular and continue to be adapted to new and unexpected tasks.
Bots have been written in a variety of languages, and a wide array of implementations exist. Most modern IRC services
IRC services
Internet Relay Chat services is a name for a set of features implemented on many modern Internet Relay Chat networks. Services are automated bots with special status which are generally used to provide users with access with certain privileges and protection...
typically implement bot-like interfaces, through which users can communicate with and control the functionality. Bots have also been created for malevolent uses, such as flooding or taking over channels, ousting their rightful owners.
Bouncer
A program that runs as a daemonDaemon (computer software)
In Unix and other multitasking computer operating systems, a daemon is a computer program that runs as a background process, rather than being under the direct control of an interactive user...
on a server
Server (computing)
In the context of client-server architecture, a server is a computer program running to serve the requests of other programs, the "clients". Thus, the "server" performs some computational task on behalf of "clients"...
and functions as a persistent proxy
Proxy server
In computer networks, a proxy server is a server that acts as an intermediary for requests from clients seeking resources from other servers. A client connects to the proxy server, requesting some service, such as a file, connection, web page, or other resource available from a different server...
is known as a BNC or bouncer. The purpose is to maintain a connection to an IRC server, acting as a relay between the server and client, or simply to act as a proxy. Should the client lose network connectivity, the BNC may stay connected and archive all traffic for later delivery, allowing the user to resume his IRC session without disrupting their connection to the server.
Furthermore, as a way of obtaining a bouncer-like effect, an IRC client (typically text-based
Text-based
Usually used in reference to a computer application, a text-based application is one whose primary input and output are based on text rather than graphics or sound. This does not mean that text-based applications do not have graphics or sound, just that the graphics or sound are secondary to the...
, for example Irssi
Irssi
Irssi is an IRC client program for Linux, Microsoft Windows, and Mac OS X. It was originally written by Timo Sirainen, and released under the terms of the GNU General Public License in January 1999.-Features:...
) may be run on an always-on server to which the user connects via ssh
Secure Shell
Secure Shell is a network protocol for secure data communication, remote shell services or command execution and other secure network services between two networked computers that it connects via a secure channel over an insecure network: a server and a client...
. This also allows devices that only have ssh functionality, but no actual IRC client installed themselves, to connect to the IRC, and it allows sharing of IRC sessions.
To keep the IRC client from quitting when the ssh connection closes, the client can be run inside a piece of screen-detaching software (e.g. GNU Screen
GNU Screen
GNU Screen is a software application that can be used to multiplex several virtual consoles, allowing a user to access multiple separate terminal sessions inside a single terminal window or remote terminal session...
or tmux), thus staying connected to the IRC network(s) constantly and able to log conversation in channels that the user is interested in, etc. Modelled after this setup, in 2004 an IRC client following the client-server
Client-server
The client–server model of computing is a distributed application that partitions tasks or workloads between the providers of a resource or service, called servers, and service requesters, called clients. Often clients and servers communicate over a computer network on separate hardware, but both...
model, called Smuxi
Smuxi
Smuxi is a cross-platform IRC client for the GNOME desktop inspired by Irssi. It pioneered the concept of separating the frontend client from the backend engine which manages connections to IRC servers inside a single graphical application.-Architecture:...
, has been launched.
Search engines
There are numerous search engines available to aid the user in finding what they are looking for on IRC. Generally the search engine consists of two parts, a "back-end" (or "spider/crawler") and a front-end "search engine".The back-end (spider/crawler) is the work horse of the search engine. It is responsible for crawling IRC servers to index the information being sent across them. The information that is indexed usually consists solely of channel text (text that is publicly displayed in public channels). The storage method is usually some sort of relational database, like MySQL
MySQL
MySQL officially, but also commonly "My Sequel") is a relational database management system that runs as a server providing multi-user access to a number of databases. It is named after developer Michael Widenius' daughter, My...
or Oracle
Oracle database
The Oracle Database is an object-relational database management system produced and marketed by Oracle Corporation....
.
The front-end "search engine" is the user interface to the database. It supplies users with a way to search the database of indexed information to retrieve the data they are looking for. These front-end search engines can also be coded in numerous programming languages. The more popular languages for such search engines and indexing spiders are Perl
Perl
Perl is a high-level, general-purpose, interpreted, dynamic programming language. Perl was originally developed by Larry Wall in 1987 as a general-purpose Unix scripting language to make report processing easier. Since then, it has undergone many changes and revisions and become widely popular...
, PHP
PHP
PHP is a general-purpose server-side scripting language originally designed for web development to produce dynamic web pages. For this purpose, PHP code is embedded into the HTML source document and interpreted by a web server with a PHP processor module, which generates the web page document...
and C
C (programming language)
C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....
.
Most search engines have their own spider that is a single application responsible for crawling IRC and indexing data itself; however, others are "user based" indexers. The latter rely on users to install their "add-on" to their IRC client; the add-on is what sends the database the channel information of whatever channels the user happens to be on. IRC search engines have completely automated the process of finding information on IRC and have thus contributed greatly to the popularity of IRC in recent years.
Modern IRC
IRC has changed much over its life on the Internet. New server software has added a multitude of new features.- ServicesIRC servicesInternet Relay Chat services is a name for a set of features implemented on many modern Internet Relay Chat networks. Services are automated bots with special status which are generally used to provide users with access with certain privileges and protection...
: Network-operated bots to facilitate registration of nicknames and channels, sending messages for offline users and network operator functions. - Extra modes: While the original IRC system used a set of standard user and channel modes, new servers add many new modes for such features as removing color codes from text, or obscuring a user's hostmask ("cloaking") to protect from denial-of-service attackDenial-of-service attackA denial-of-service attack or distributed denial-of-service attack is an attempt to make a computer resource unavailable to its intended users...
s. - Proxy detection: Most modern servers support detection of users attempting to connect through an insecure (misconfigured or exploited) proxy serverProxy serverIn computer networks, a proxy server is a server that acts as an intermediary for requests from clients seeking resources from other servers. A client connects to the proxy server, requesting some service, such as a file, connection, web page, or other resource available from a different server...
, which can then be denied a connection. An example is the Blitzed Open Proxy Monitor or BOPM. This proxy detection software is used by several networks, although that real time list of proxies is defunct since early 2006. - Additional commands: New commands can be such things as shorthand commands to issue commands to Services, to network operator only commands to manipulate a user's hostmask.
- EncryptionEncryptionIn cryptography, encryption is the process of transforming information using an algorithm to make it unreadable to anyone except those possessing special knowledge, usually referred to as a key. The result of the process is encrypted information...
: For the client-to-server leg of the connection SSL might be used (messages cease to be secure once they are relayed to other users on standard connections, but it makes eavesdroppingMan-in-the-middle attackIn cryptography, the man-in-the-middle attack , bucket-brigade attack, or sometimes Janus attack, is a form of active eavesdropping in which the attacker makes independent connections with the victims and relays messages between them, making them believe that they are talking directly to each other...
on or wiretapping an individual's IRC sessions difficult). For client-to-client communication, SDCC (Secure DCC) can be used. - Connection protocol: IRC can be connected to via IPv4IPv4Internet Protocol version 4 is the fourth revision in the development of the Internet Protocol and the first version of the protocol to be widely deployed. Together with IPv6, it is at the core of standards-based internetworking methods of the Internet...
, the current standard version of the Internet ProtocolInternet ProtocolThe Internet Protocol is the principal communications protocol used for relaying datagrams across an internetwork using the Internet Protocol Suite...
, or by IPv6IPv6Internet Protocol version 6 is a version of the Internet Protocol . It is designed to succeed the Internet Protocol version 4...
, the next-generation version of the protocol. - Web-based account registrations and user profile pages: An example is IRCwx.
Character encoding
IRC still lacks a single globally accepted standard convention for how to transmit characters outside the 7-bit ASCIIASCII
The American Standard Code for Information Interchange is a character-encoding scheme based on the ordering of the English alphabet. ASCII codes represent text in computers, communications equipment, and other devices that use text...
repertoire.
IRC servers normally transfer messages from a client to another client just as byte sequences, without any interpretation or recoding of characters
Character (computing)
In computer and machine-based telecommunications terminology, a character is a unit of information that roughly corresponds to a grapheme, grapheme-like unit, or symbol, such as in an alphabet or syllabary in the written form of a natural language....
. The IRC protocol (unlike e.g. MIME
MIME
Multipurpose Internet Mail Extensions is an Internet standard that extends the format of email to support:* Text in character sets other than ASCII* Non-text attachments* Message bodies with multiple parts...
or HTTP) lacks mechanisms for announcing and negotiation character encoding options. This has put the responsibility for choosing the appropriate character codec on the client. In practice, IRC channels have largely used the same character encodings that were also used by operating systems (in particular Unix
Unix
Unix is a multitasking, multi-user computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs, including Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy, and Joe Ossanna...
derivatives) in the respective language communities:
- 7-bit era: In the early days of IRC, especially among ScandinavianNorth Germanic languagesThe North Germanic languages or Scandinavian languages, the languages of Scandinavians, make up one of the three branches of the Germanic languages, a sub-family of the Indo-European languages, along with the West Germanic languages and the extinct East Germanic languages...
and Finnish languageFinnish languageFinnish is the language spoken by the majority of the population in Finland Primarily for use by restaurant menus and by ethnic Finns outside Finland. It is one of the two official languages of Finland and an official minority language in Sweden. In Sweden, both standard Finnish and Meänkieli, a...
users, national variants of ISO 646 were the dominant character encodingCharacter encodingA character encoding system consists of a code that pairs each character from a given repertoire with something else, such as a sequence of natural numbers, octets or electrical pulses, in order to facilitate the transmission of data through telecommunication networks or storage of text in...
s. These encode non-ASCII characters like Ä Ö Å ä ö å at code positions 0x5B 0x5C 0x5D 0x7B 0x7C 0x7D (US-ASCII: [ \ ] { | }). That is why these codes are always allowed in nicknames. According to RFC 1459, { | } in nicknames should be treated as lowercase equivalents of [ \ ] respectively. By the late 1990s, the use of 7-bit encodings had disappeared in favour of ISO 8859-1, and such equivalence mappings were dropped from some IRC daemons.
- 8-bit era: Since the early 1990s, 8-bit encodings such as ISO 8859-1 have become commonly used for European languages. Russian users had a choice of KOI8-RKOI8-RKOI8-R is an 8-bit character encoding, designed to cover Russian, which uses the Cyrillic alphabet. It also happens to cover Bulgarian, but is not used since CP1251 is accepted. A derivative encoding is KOI8-U, which adds Ukrainian characters...
, ISO 8859-5 and CP1251, and since about 2000, modern Russian IRC networks convert between these different commonly used encodings of the Cyrillic alphabetCyrillic alphabetThe Cyrillic script or azbuka is an alphabetic writing system developed in the First Bulgarian Empire during the 10th century AD at the Preslav Literary School...
.
- Multi-byte era: East Asian IRC channels with ideographic scripts in China, Japan, and Korea have used for a long time multi-byte encodings such as EUCExtended Unix CodeExtended Unix Code is a multibyte character encoding system used primarily for Japanese, Korean, and simplified Chinese.The structure of EUC is based on the ISO-2022 standard, which specifies a way to represent character sets containing a maximum of 94 characters, or 8836 characters, or 830584 ...
or ISO-2022-JP. With the common migration from ISO 8859 to UTF-8 on Linux and Unix platforms since about 2002, UTF-8UTF-8UTF-8 is a multibyte character encoding for Unicode. Like UTF-16 and UTF-32, UTF-8 can represent every character in the Unicode character set. Unlike them, it is backward-compatible with ASCII and avoids the complications of endianness and byte order marks...
has become an increasingly popular substitute for many of the previously used 8-bit encodings in European channels. Some IRC clients are now capable of reading messages both in ISO 8859-1 or UTF-8 in the same channel, heuristically autodetecting which encoding is used. The shift to UTF-8 began in particular on Finnish-speaking IRC (:fi:IRC#Merkistö (Finnish)).
Today, the UTF-8
UTF-8
UTF-8 is a multibyte character encoding for Unicode. Like UTF-16 and UTF-32, UTF-8 can represent every character in the Unicode character set. Unlike them, it is backward-compatible with ASCII and avoids the complications of endianness and byte order marks...
encoding of Unicode
Unicode
Unicode is a computing industry standard for the consistent encoding, representation and handling of text expressed in most of the world's writing systems...
/ISO 10646 would be the most likely contender for a single future standard character encoding for all IRC communication, if such standard ever relaxed the 510 bytes message size restriction. UTF-8 is ASCII compatible and covers the superset of all other commonly used coded character set standards.
File sharing
Much like conventional P2PPeer-to-peer
Peer-to-peer computing or networking is a distributed application architecture that partitions tasks or workloads among peers. Peers are equally privileged, equipotent participants in the application...
file sharing, users can create file servers that allow them to share files with each other by using customised IRC bot
IRC bot
thumb|409px|right|An IRC bot performing a simple task.An IRC bot is a set of scripts or an independent program that connects to Internet Relay Chat as a client, and so appears to other IRC users as another user...
s or scripts for their IRC client. Often users will group together to distribute warez
Warez
Warez refers primarily to copyrighted works distributed without fees or royalties, and may be traded, in general violation of copyright law. The term generally refers to unauthorized releases by organized groups, as opposed to file sharing between friends or large groups of people with similar...
via a network of IRC bots.
Technically, IRC provides no file transfer
File transfer
File transfer is a generic term for the act of transmitting files over a computer network or the Internet. There are numerous ways and protocols to transfer files over a network. Computers which provide a file transfer service are often called file servers. Depending on the client's perspective the...
mechanisms itself; file sharing is implemented by IRC clients, typically using the Direct Client-to-Client
Direct Client-to-Client
Direct Client-to-Client is an IRC-related sub-protocol enabling peers to interconnect using an IRC server for handshaking in order to exchange files or perform non-relayed chats. Once established, a typical DCC session runs independently from the IRC server. Originally designed to be used with...
(DCC) protocol, in which file transfers are negotiated through the exchange of private messages between clients. The vast majority of IRC clients feature support for DCC file transfers, hence the view that file sharing is an integral feature of IRC. The commonplace usage of this protocol, however, sometimes also causes DCC spam. DCC commands have also been used to exploit vulnerable clients into performing an action such as disconnecting from the server or exiting the client.
See also
- Chat roomChat roomThe term chat room, or chatroom, is primarily used by mass media to describe any form of synchronous conferencing, occasionally even asynchronous conferencing...
- Client-to-client protocolClient-To-Client ProtocolClient-To-Client Protocol is a special type of communication between Internet Relay Chat clients.CTCP is a common protocol implemented by most major IRC clients in use today. CTCP extends the original IRC protocol by allowing users to query other clients or channels, this causes all the clients...
- Comparison of instant messaging protocols
- Comparison of IRC clientsComparison of IRC clientsThe following tables compare general and technical information between a number of IRC client programs. Please see the individual products articles for further information.- General :...
- Comparison of IRC daemons
- Comparison of IRC servicesComparison of IRC servicesThe following tables compare general and technical information including the differences in feature sets between various IRC services packages. This article is neither all-inclusive nor necessarily up-to-date.- General information :...
- Internet slangInternet slangInternet slang is a type of slang that Internet users have popularized, and in many cases, have coined. Such terms often originate with the purpose of saving keystrokes. Many people use the same abbreviations in texting and instant messaging, and social networking websites...
- List of IRC commands
- Serving channelServing channelA serving channel is a slang term for a file sharing channel found on an IRC network. Here, users can share and download files including photos, videos, audio files, books, programs, etc...
External links
- IRC.org - Technical and Historical IRC6 information; Articles on the history of IRC
- IRChelp.org - Internet Relay Chat (IRC) help archive; Large archive of IRC-related documents
- IRC/2 Numerics List
- History of IRC