Internet Relay Chat: Wikis

  
  
  
  

Note: Many of our articles have direct quotes from sources you can cite, within the Wikipedia article! This article doesn't yet, but we're working on it! See more info or our list of citable articles.

Did you know ...


More interesting facts on Internet Relay Chat

Include this on your site/blog:

Encyclopedia

From Wikipedia, the free encyclopedia

Internet Relay Chat (IRC) is a form of real-time Internet text messaging (chat) or synchronous conferencing.[1] It is mainly designed for group communication in discussion forums, called channels,[2] but also allows one-to-one communication via private message[3] as well as chat and data transfers via Direct Client-to-Client.[4]

As of May 2009, the top 100 IRC networks served more than half a million users at a time, with hundreds of thousands of channels (the vast majority of which stand mostly vacant), operating on a total of roughly 1,500 servers worldwide.[5]

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.[6]

IRC was used to report on the 1991 Soviet coup d'état attempt throughout a media blackout.[7] It was previously used in a similar fashion during the Gulf War.[8] Logs of these and other events are kept in the ibiblio archive.[9]

IRC client software is available for virtually every computer operating system that supports TCP/IP networking.

The Internet Protocol Suite
Application Layer
BGP · DHCP · DNS · FTP · GTP · HTTP · IMAP · IRC · Megaco · MGCP · NNTP · NTP · POP · RIP · RPC · RTP · RTSP · SDP · SIP · SMTP · SNMP · SOAP · SSH · Telnet · TLS/SSL · XMPP · (more)
Transport Layer
TCP · UDP · DCCP · SCTP · RSVP · ECN · (more)
Internet Layer
IP (IPv4, IPv6) · ICMP · ICMPv6 · IGMP · IPsec · (more)
Link Layer
ARP/InARP · NDP · OSPF · Tunnels (L2TP) · PPP · Media Access Control (Ethernet, DSL, ISDN, FDDI) · (more)

Contents

Technical information

A Screenshot of XChat, a cross-platform IRC client.
Xaric, a console based IRC client, in use on Mac OS X. Shown are two IRC channels and a private conversation with the software author.

IRC is an open protocol that uses TCP[1] and optionally TLS. An IRC server can connect to other IRC servers to expand the IRC network.[10] Users access IRC networks by connecting a client to a server.[11] 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.[12]

IRC was originally a plain text protocol[1] (although later extended), which on request was assigned port 194/TCP by IANA.[13] However, the de facto has always been to run IRC on 6667/TCP[14] and nearby port numbers (for example TCP ports 6662-6669) 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.[15] 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.[citation needed]

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.[citation needed]

Microsoft made an extension for IRC in 1998[16] 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. IRCwx has been adopted by Buzzen Communications Network.[17]

The standard structure of a network of IRC servers is a tree.[18] Messages are routed along only necessary branches of the tree but network state is sent to every server[19] 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[20] 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[21] 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 by multicast which means each message travels a network link exactly once.[22] This is a strength in comparison to non-multicasting protocols such as Simple Mail Transfer Protocol (SMTP) or Extensible Messaging and Presence Protocol (XMPP).

Commands and replies

IRC is based on a line-based structure with the client sending single-line messages to the server,[23] receiving replies to those messages[24] 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.[citation needed]

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.[25]

Channels

The basic means of communication in an established IRC session is a channel.[26] Channels in a server can be displayed using the IRC command LIST[27] that lists all currently available channels.

Users can join to a channel using the JOIN command,[28] in most clients available as /join #channelname. Messages sent to the joined channels are then relayed to all other users.[26]

Channels that are available across an entire IRC network are prepended with a '#', while those local to a server use '&'.[29] Other non-standard and less common channel types include '+' channels—'modeless' channels without operators —[30] and '!' channels, a form of timestamped channel on normally non-timestamped networks.[31]

Modes

Users and channels may have modes which are represented by single case-sensitive letters[32] and are set using the mode command.[33] 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.[34]) Modes are usually set and unset using the mode command which 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.[35] Modes that apply to users on a channel have an associated symbol which is used to represent the mode in names replies[36] (sent to clients on first joining a channel[28] 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 which sends this information to the client at connect time.[37]

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,[36] 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
User modes Channel modes
Letter Description Letter Symbol Parameter Description
i Invisible—cannot be seen without a common channel or knowing the exact name o @ Name of affected user Channel operator—can change channel modes and kick users out of the channel among other things
s Receives server notices p None None Private channel—listed in channel list as "prv" according to RFC 1459
w Receives wallops[38] s None None Secret channel—not shown in channel list or user whois except to users already on the channel
o User is an IRC operator (ircop) i None None Invite only—users can only join if invited by another user on that specific channel
t None None Topic only settable by channel operators
n None None Users cannot send external messages from outside the channel
m None None Channel is moderated (only those who hold operator or voice status on the channel can send messages to it)
l None Limit number Limits number of users able to be on channel (when full, no new users can join)
b None 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[39][40][41] 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 operators,[42] sometimes shortened to IRCops. As the implementation of the ircd varies, so do the privileges of the IRC operator on the given ircd. RFC1459[43] 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 automated programs that may cause harm to enter 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 wouldnt be allowed to join if they were not opered), being able to op themselves on channels where they wouldnt be able without being opered, being auto-opped on channels always and so. However, every network has to consider themselves where to draw the fine line between vanity ("Look, i'm powerful") and privacy ("As long as i give you the right to be here, you have the right to control your matters without me ever interfering").

Challenges

Issues in the original design of IRC were the amount of shared state data[44][45] being a limitation on its scalability,[46] the absence of unique user identifications leading to the nickname collision problem,[47] lack of protection from netsplits by means of cyclic routing,[48][49] the trade-off in scalability for the sake of real-time user presence information,[50] protocol weaknesses providing a platform for abuse,[51] no transparent and optimizable message passing,[52] no encryption.[53] 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 crackers. 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 (which may require the user to install SSL binaries and IRC client specific patches or modules on their computers).

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.

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 attacks, 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 which 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 which 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 netsplits, 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 nickname 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, respectively, 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.

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 which 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.

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 operators, 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.[citation needed]

One can join servers by clicking on an "irc://irc.network.example:port/#channel1,#channel2,#channel3" hyperlink.

The largest IRC networks have traditionally been grouped as the "Big Four"[54][55][56][57] — 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:[54][55][56]

Today the "Big Four" are:[57]

For network statistics, rankings, and a list of smaller networks, see netsplit.de, Search IRC and Gogloom.

freenode is quite popular with community based projects, especially Free and Open Source Software projects. A lot of users of various FOSS projects use freenode since a lot of FOSS projects have official IRC channels there.

Usage Share

As of March 2009, the top 100 IRC networks served more than half a million users at a time, with hundreds of thousands of channels (the vast majority of which stand mostly vacant), operating on a total of roughly 1,500 servers worldwide.

According to statistics by netsplit.de, the top 10 populated networks accounted for 66 per cent of usage in the top 100 populated networks. That is, more than 370,000 users at a time. These networks had an average of just less than 1,500 users per server. The top 20 populated networks accounted for 77 per cent of usage (again, in the top 100 networks). That is, more than 430,000 users at a time. These networks had an average of 1,000 users per server. According to these statistics, the top 100 networks served more than 560,000 users at a time, on 1,450 servers, with an average load of 390 users per server.

Statistics from gogloom show similar results, with more than 570,000 users served at a time. According to these statistics, 78 per cent of users were concentrated on the top 10 networks. That is, more than 450,000 users at a time. Furthermore, the top 20 networks house 86 per cent of users, with almost half a million users at a time.

According to statistics by Search IRC, as of March 2009, it monitored more than 760,000 users on 650 different networks spread over 7,600 servers. Giving an overall server load of 100 users per server. Here too 90 percent of the users were concentrated in 250 (a third) of the monitored networks, with the vast majority of networks being small/local with less than 200 users per network.

Clients

Client software

Scheme of an IRC-Network with normal clients (green), bots (blue) and bouncers (orange)

There are IRC clients available for several operating systems.

The most popular Windows-based IRC client is mIRC[58]. Other popular Windows IRC clients are Miranda IM, KVIrc, Trillian, Pidgin, and XChat. Popular Unix and Linux clients include BitchX, irssi, XChat, Konversation, and the traditional ircII and derivatives. For Mac OS X, the most widely used clients are Snak, Ircle and Colloquy.[citation needed] OS X can also run most Unix-like command line and X11 IRC clients. Web based clients include Mibbit and WebIRC.

A client called ERC, written entirely in Emacs Lisp 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. Opera has a built in IRC client.[59] Mozilla Firefox does not have a built-in IRC client, though ChatZilla, a Firefox add-on, can be installed to provide access to IRC in the browser.[60] ChatZilla is part of the SeaMonkey internet suite.[61]

Built-in IRC is utilized by many computer games, such as War§ow, Unreal Tournament (up to Unreal Tournament 2004), Uplink, and Zdaemon.[62][63][64][65] The Soulseek file sharing network is based on IRC[citation needed]; Ustream's chat interface is IRC with custom authentication.[66]

Bots

Automated clients are called bots. 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 which 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.

Bouncer

A program that runs as a daemon 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.[67] 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.[68]

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.[69]

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,[70] an IRC client following the client-server model, called Quassel IRC, has been developed.

Search engines

There are numerous search engines available to aid the user in finding what they are looking for on IRC.[71][72] 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 or Oracle.[citation needed]

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.[citation needed]

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.[citation needed] 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.[citation needed]

Modern IRC

IRC has changed much over its life on the Internet. New server software has added a multitude of new features.

  • Services: 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 attacks.[citation needed]
  • Proxy detection: Most modern servers support detection of users attempting to connect through an insecure (misconfigured or exploited) proxy 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.[citation needed]
  • 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.[citation needed]
  • Encryption: 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 eavesdropping on or wiretapping an individual's IRC sessions difficult). For client-to-client communication, SDCC (Secure DCC) can be used.[citation needed]
  • Connection protocol: IRC can be connected to via IPv4, the current standard version of the Internet Protocol, or by IPv6, the next-generation version of the Protocol.
  • Account registration and profile: IRCwx protocol adds web based account registration and user profiles.[17]

Character encoding

IRC still lacks a single globally accepted standard convention for how to transmit characters outside the 7-bit ASCII 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 operating systems (in particular Unix derivatives) in the respective language communities:

  • 7-bit era: In the early days of IRC, especially among Scandinavian and Finnish language users, national variants of ISO 646 were the dominant character encodings. 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.[15] 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-R, ISO 8859-5[citation needed] and CP1251, and since about 2000, modern Russian IRC networks convert between these different commonly used encodings of the Cyrillic alphabet.
  • 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 EUC or ISO-2022-JP. With the common migration from ISO 8859 to UTF-8 on Linux and Unix platforms since about 2002, UTF-8 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 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

Much like conventional P2P file sharing, users can create file servers that allow them to share files with each other by using customised IRC bots or scripts for their IRC client. Often users will group together to distribute warez via a network of IRC bots.[73]

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.[74] The commonplace usage of this protocol, however, sometimes also causes DCC Spam.

See also

References

  1. ^ a b c "Introduction". p. 4. sec. 1. RFC 1459. http://tools.ietf.org/html/rfc1459#section-1. 
  2. ^ "One-to-many". p. 11. sec. 3.2. RFC 1459. http://tools.ietf.org/html/rfc1459#section-3.2. 
  3. ^ "One-To-One Communication". p. 5. sec. 5.1. RFC 2810. http://tools.ietf.org/html/rfc2810#section-5.1. 
  4. ^ Irchelp.org
  5. ^ Netsplit.de
  6. ^ Founding IRC
  7. ^ IRC logs 1991 IRC transcripts from the time of the 1991 Soviet coup attempt
  8. ^ Ibiblio.org
  9. ^ Index of pub academic communications logs
  10. ^ "Servers". p. 4. sec. 1.1. RFC 1459. http://tools.ietf.org/html/rfc1459#section-1.1. 
  11. ^ "Clients". p. 3. sec. 2.2. RFC 2810. http://tools.ietf.org/html/rfc2810#section-2.2. 
  12. ^ "Clients". p. 5. sec. 1.2. RFC 1459. http://tools.ietf.org/html/rfc1459#section-1.2. 
  13. ^ IANA.org
  14. ^ "Connect message". p. 29. sec. 4.3.5. RFC 1459. http://tools.ietf.org/html/rfc1459#section-4.3.5. 
  15. ^ a b "Character codes". p. 7. sec. 2.2. RFC 1459. http://tools.ietf.org/html/rfc1459#section-2.2. 
  16. ^ IRCX Protocol Addition Specification
  17. ^ a b IRCwx Server Page
  18. ^ "Architecture". pp. 3 – 4. sec. 3. RFC 2810. http://tools.ietf.org/html/rfc2810#section-3. 
  19. ^ "Introduction". p. 2. sec. 1. RFC 2810. http://tools.ietf.org/html/rfc2810#section-1. 
  20. ^ "Algorithms". p. 64. sec. 9.3. RFC 1459. http://tools.ietf.org/html/rfc1459#section-9.3. 
  21. ^ "Network Congestion". pp. 7 – 8. sec. 6.3. RFC 2810. http://tools.ietf.org/html/rfc2810#section-6.3. 
  22. ^ "To A Channel". pp. 5 – 6. sec. 5.2.1. RFC 2810. http://tools.ietf.org/html/rfc2810#section-5.2.1. 
  23. ^ "Message format in 'pseudo' BNF". p. 8. sec. 2.3.1. RFC 1459. http://tools.ietf.org/html/rfc1459#section-2.3.1. 
  24. ^ "Numeric replies". p. 10. sec. 2.4. RFC 1459. http://tools.ietf.org/html/rfc1459#section-2.4. 
  25. ^ List mode extension showing pair confusion for lists
  26. ^ a b "To a group (channel)". p. 11. sec. 3.2.2. RFC 1459. http://tools.ietf.org/html/rfc1459#section-3.2.2. 
  27. ^ "List message". p. 24. sec. 4.2.6. RFC 1459. http://tools.ietf.org/html/rfc1459#section-4.2.6. 
  28. ^ a b "Join message". p. 19. sec. 4.2.1. RFC 1459. http://tools.ietf.org/html/rfc1459#section-4.2.1. 
  29. ^ "Channel Scope". sec. 2.2. RFC 2811. http://tools.ietf.org/html/rfc2811#section-2.2. 
  30. ^ "Channel Properties". p. 4. sec. 2.3. RFC 2811. http://tools.ietf.org/html/rfc2811#section-2.3. 
  31. ^ "Channel lifetime". p. 5. sec. 3. RFC 2811. http://tools.ietf.org/html/rfc2811#section-3. 
  32. ^ "Channel Modes". p. 7. sec. 4. RFC 2811. http://tools.ietf.org/html/rfc2811#section-4. 
  33. ^ "Mode message". p. 21. sec. 4.2.3. RFC 1459. http://tools.ietf.org/html/rfc1459#section-4.2.3. 
  34. ^ "Channel modes". pp. 21 – 22. sec. 4.2.3.1. RFC 1459. http://tools.ietf.org/html/rfc1459#section-4.2.3.1. 
  35. ^ "Channel Access Control". pp. 10 – 11. sec. 4.3. RFC 2811. http://tools.ietf.org/html/rfc2811#section-4.3. 
  36. ^ a b "Command responses: 353 RPL_NAMREPLY". p. 51. RFC 1459. http://tools.ietf.org/html/rfc1459#page-51. 
  37. ^ IRC.org
  38. ^ Definition of wallops
  39. ^ Alien.net.au
  40. ^ Alien.net.au
  41. ^ Webtoman.com
  42. ^ "Operators". p. 5. sec. 1.2.1. RFC 1459. http://tools.ietf.org/html/rfc1459#section-1.2.1. 
  43. ^ "Operators". p. 5. sec. 1.2.1. RFC 1459. http://tools.ietf.org/html/rfc1459#section-1.2.1. 
  44. ^ "Size". pp. 5 – 6. sec. 2.5.1. RFC 1324. http://tools.ietf.org/html/rfc1324#section-2.5.1. 
  45. ^ "Scalability". p. 7. sec. 6.1. RFC 2810. http://tools.ietf.org/html/rfc2810#section-6.1. 
  46. ^ Functionality Provided by Systems for Synchronous Conferencing, 1.2.1 Growth, Loesch 1992-2003
  47. ^ "User identification". p. 10. sec. 5.4.1. RFC 1324. http://tools.ietf.org/html/rfc1324#section-5.4.1. 
  48. ^ "Trees and cycles". p. 10. sec. 5.4.2. RFC 1324. http://tools.ietf.org/html/rfc1324#section-5.4.2. 
  49. ^ Functionality Provided by Systems for Synchronous Conferencing, 1.2.2 Network failures, Loesch 1992-2003
  50. ^ "State Information problems". p. 4. sec. 2.1. RFC 1324. http://tools.ietf.org/html/rfc1324#section-2.1. 
  51. ^ Functionality Provided by Systems for Synchronous Conferencing, 1.2.3 Sociological and security aspects, Loesch 1992-2003
  52. ^ "Message passing". p. 7. sec. 5.2.1. RFC 1324. http://tools.ietf.org/html/rfc1324#section-5.2.1. 
  53. ^ "Conference security". p. 8. sec. 5.2.4. RFC 1324. http://tools.ietf.org/html/rfc1324#section-5.2.4. 
  54. ^ a b Charalabidis, Alex (1999-12-15). "IRCing On The Macintosh: Ircle". The Book of IRC: The Ultimate Guide to Internet Relay Chat (1st ed.). San Francisco, California: No Starch Press. p. 61. ISBN 1-886411-29-8. "On large networks such as the Big Four — EFnet, IRCnet, Undernet, and DALnet — trying to list the thousands of channels with Ircle always causes you to disconnect due to the flood of information, while other clients can usually manage the feat if you are on a direct Ethernet connection." 
  55. ^ a b Jones, Steve, ed (2002-12-10). "Internet Relay Chat". Encyclopedia of New Media: An Essential Reference to Communication and Technology (1st ed.). Thousand Oaks, California: SAGE Publications. p. 257. ISBN 0-7619-2382-9. "Today there are hundreds of independent IRC networks, but the "Big Four" are EFNet, UnderNet, Dalnet, and IRCnet." 
  56. ^ a b Rittner, Don (1999-03-03). The iMac Book (1st ed.). Scottsdale, Arizona: Coriolis Group. p. 215. ISBN 1-576-10429-X. "There are several large networks: EFnet, UnderNET, DALnet, and IRCnet make up the Big Four." 
  57. ^ a b Turban, Efraim; Leidner, Dorothy; McLean, Ephraim; Wetherbe, James (2005-02-07). "Communication". Information Technology for Management: Transforming Organizations in the Digital Economy (5th ed.). Hoboken, New Jersey: John Wiley & Sons. pp. 106 – 107. ISBN 0-471-70522-5. "The largest networks have traditionally been grouped as the "Big Four": EFNet, IrcNet, QuakeNet, and UnderNet." 
  58. ^ Schweitzer, Douglas, Internet Relay Chat: IRC the Place to Be?, http://www.pcflank.com/art32.htm, retrieved 2007-03-25 
  59. ^ Opera Browser Wiki: IRC Client
  60. ^ ChatZilla Firefox Addon
  61. ^ SeaMonkey: Features
  62. ^ IRC Module - Warsow Wiki
  63. ^ Unreal 2004 Review mentioning IRC
  64. ^ The Ultimate Uplink Guide
  65. ^ ZDaemon - The Doom Wiki
  66. ^ http://www.ustream.tv/forum/showthread.php?p=1516
  67. ^ BNC IRC proxy
  68. ^ psyBNC Readme
  69. ^ Blog: IRC with irssi-proxy & screen
  70. ^ About Quassel IRC
  71. ^ Mutton, Paul (2004-07-27). "Users and Channels". IRC Hacks (1st ed.). Sebastopol, California: O'Reilly Media. pp. 44 – 46. ISBN 0-596-00687-X. 
  72. ^ Wang, Wallace (2004-10-25). "Instant Messaging and Online Chat Rooms". Steal this File Sharing Book (1st ed.). San Francisco, California: No Starch Press. pp. 65 – 67. ISBN 1-59327-050-X. 
  73. ^ Zdnet.com
  74. ^ Macobserver.com

Bibliography

Further reading

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 - List of numeric replies for the IRC protocol

Wiktionary

Up to date as of January 15, 2010
(Redirected to IRC article)

Definition from Wiktionary, a free dictionary

For the Wiktionary IRC channel, see Wiktionary:IRC channel.

Contents

English

Initialism

Wikipedia-logo.png
Wikipedia has an article on:

Wikipedia

IRC

  1. (Internet) Internet Relay Chat, a protocol for instant communication via the Internet
  2. (US law) Internal Revenue Code

Derived terms

Verb

Infinitive
to IRC

Third person singular
IRCs

Simple past
IRCed

Past participle
IRCed

Present participle
IRCing

to IRC (third-person singular simple present IRCs, present participle IRCing, simple past and past participle IRCed)

  1. (intransitive) (Internet, informal) To participate in IRC (Internet Relay Chat).
    • 1995, Stuart Harris, The Irc Survival Guide
      <Xantha> <- irced 2 yrs without aliases ...
    • 2002, James Arnt Aune, Selling the Free Market
      ...IRCing can confirm the observation that work and play appear to constitute a continuum for the digerati.
    • 2004, Allison Rushby, Friday Night Cocktails
      ...not that this is strange or anything, I do the same thing myself when I'm IRCing — there're some real weirdos out there roaming the Net...

Anagrams


Wikibooks

Up to date as of January 23, 2010
(Redirected to Internet Technologies/IRC article)

From Wikibooks, the open-content textbooks collection

Internet Relay Chat, commonly abbreviated IRC, is a chat protocol, a way how to enable several people to talk to each other by entering text messages, each participant seeing everything that the other participants write, as if they were in a telephone conference.

Contents

Technology of IRC

Formally, IRC is a real-time text-based multi-user communication protocol specification and implementation, which relays messages between users on the network. According to Efnet.org, IRC was born sometime in 1988. According to IRChelp.org, the official specification for IRC was written in 1993 in the RFC format. The specification "RFC 1459: Internet Relay Chat Protocol" is a really excellent source for both and introduction to and for detailed information about the IRC protocol. Today IRC has a very wide range of users and anyone can find a place to participate in chat.

IRC's largest unit of architecture is the IRC network. There are perhaps hundreds of IRC networks in the world each one running parallel and disjoint from the others. A client logged into one network can communicate only with other clients on the same network, not with clients on other networks. Each network is composed of one or more IRC servers. An IRC client is a program that connects to a given IRC server in order to have the server relay communications to and from other clients on the same network but not necessarily the same server.

Messages on IRC are sent as blocks. That is, other IRC clients will not see one typing and editing as one does so. One creates a message block (often just a sentence) and transmits that block all at once, which is received by the server and based on the addressing, delivers it to the appropriate client or relays it to other servers so that it may be delivered or relayed again, et cetera.

Once connected to a server, addressing of other clients is achieved through IRC nicknames. A nickname is simply a unique string of ASCII characters identifying a particular client. Although implementations vary, restrictions on nicknames usually dictate that they be composed only of characters a-z, A-Z, 0-9, underscore, and dash.

Another form of addressing on IRC, and arguably one of its defining features, is the IRC channel. IRC channels are often compared to CB Radio (Citizen's Band Radio) channels. While with CB one is said to be "listening" to a channel, in IRC one's client is said to be "joined" to the channel. Any communication sent to that channel is then "heard" or seen by the client. On the other hand, other clients on the same network or even on the same server, but not on the same channel will not see any messages sent to that channel.

While IRC is by definition not a P2P protocol, IRC does have some extensions that support text and file transmission directly from client to client without any relay at all. These extensions are known as DCC (Direct Client Connect) and CTCP (Client To Client Protocol). For CTCP, clients like mIRC implement commands such as "ctcp nickname version" or "ctcp nickname ping" to get some interesting infos about other users.

Using Internet Relay Chat

To use Internet Relay Chat, you need to do the following:

  1. Choose and install an IRC client.
  2. Find the channel discussing the topic of your interest (similar to a room in other chat environments).
  3. Find the server at which the channel is located. You can be directed to both the server and the channel by the website of a project, such as Wikibooks.
  4. Connect to the server using the client, using a nickname of your choice.
  5. Connect to the channel (a room).
TODO

TODO
Provide more information on how to choose nicknames and their use and restrictions of registering them.

Registering your nickname

Some IRC networks offer to register your nickname through a service bot. This provides sometimes access to channels that are blocked to unregistered users and in most cases reserves your nickname so no one else can use it (it will at least mark you as the logged in user and anyone else who uses it as not logged in).

The service bots providing this is mostly named "NickServ", sometimes also "AuthServ" or on a big network just "Q". When you found out which one of those bots exists, you can gather more information by typing:

/msg [BOTNAME] help

This should get you detailed instructions on how to use the service.

Example HowTo for a network

The process is fairly simple, once you have chosen a nickname you would like to register (assuming it's not owned by anyone else) and chosen a password, follow these steps:

  • If you have not done so already, change your nickname to the one you would like to register
/nick [NICKNAME]

For example:

/nick JohnDoe
  • Send a private message to the network's nickserv service with the password you chose and your email address with
/msg nickserv register [PASSWORD] [EMAIL]

For example:

/msg nickserv register 1234abcd JohnDoe@email.com
  • After messaging the nickserv you should shortly receive a reply back stating that the it received your registration request and sent an email to the address you provided.
An email containing nickname activation instructions has been sent to JohnDoe@email.com
  • To complete the registration process, you will need to message the nickserv with the registration code emailed to your address.
/msg NickServ VERIFY REGISTER JohnDoe p4huc5gqunnc
  • Once you have correctly entered the registration code, the nickserv should message you back stating the nick registration process was completed successfully.
JohnDoe has now been verified.

You should now be "logged in" under your nick. If you disconnect from the server, to relogin under your nick you will need to message the nickserv with your password:

/msg nickserv identify [PASSWORD]

For example:

/msg nickserv identify 1234abcd

Once doing so, it should reply back saying you successfully logged in.

You are now identified for JohnDoe

Private conversations and chats

By default, the conversations using IRC are public, visible to all users in the channel.

To have a private conversation with a user in the channel, type "/query nickname".

To have a private chat, join an non-existent channel, and then allow joining only by invitation using the command "/mode +i". Chunked into steps:

  1. /join #mynewchannel
  2. /mode +i
  3. /invite someotherguy

IRC clients

To use IRC, you'll need an IRC client--a program that lets you connect to an IRC server, and enter an IRC channel. There is a variety of IRC clients:

Some IRC clients
IRC Client Description OS Restrictions Note
ChatZilla An add-in for Firefox.
IRSSI Has a text-only user interface.
mIRC Good for beginners.
XChat (Silverex's XChat for Windows)
Smuxi A user-friendly client for GNOME. Linux and Windows
Colloquy For Mac OS X only.
Pidgin A multi-protocol client. Has more chat protocols than IRC.
Miranda A multi-protocol client.
Trillian A multi-protocol client.
Opera A web browser with integrated IRC client.
BitchX

IRC commands

What follows is an overview of some of the basic commands of the IRC protocol. All the commands are already prefixed with a slash "/", as in most clients this will indicate that an IRC command follows that shall be executed. With some IRC clients including ChatZilla and Pidgin, you do not need to know these commands: you tell the client what you want to do using the graphical user interface and the client sends the necessary commands for you.

Basic commands

Some basic commands for IRC are listed in the following section. Please note that not all of them are available in all clients, as some of them are client-sided inventions to make your life easier and not part of the IRC protocol itself.

Command What it does Example
/attach

/server

/connect

Sign on to a server /attach irc.freenode.net

/server irc.freenode.net

/connect irc.freenode.net

/nick Set your nickname /nick YourName
/join Join a channel /join #wikibooks
/msg Sends a message (can either be private or to the entire channel) Message the channel: /msg #wikibooks hello world!

Send a private message: /msg JohnDoe Hi john.

/whois Display information about a user on the server /whois JohnDoe
/clear

/clearall

Clears a channel's text.

Clears all open channel's text.

/clear

/clearall

/away Sets an away message. To return from "away", type /away or send a message. /away I'm away because...
/me Sends an action to the channel. See example. The following:

/me loves pie.

would output to the chat in the case of JohnDoe:

JohnDoe loves pie.

/topic Querries or sets the topic of discussion. /topic Using IRC

Privileged User Commands

Commands for half-operators, channel operators, channel owners, and admins:

Command What it does Example
/kick Kicks, or boots a user from the channel. You must be a half-operator or greater to do this. Kick a user from the channel with a reason: /kick #channel JohnDoe I kicked you because...
/ban

/unban

Bans a user from the channel. You must be a channel operator or greater to do this.

Unbans a user from the channel. You must be a channel operator or greater to do this.

/ban JohnDoe

/unban JohnDoe








Got something to say? Make a comment.
Your name
Your email address
Message