IRC

[4] Internet Relay Chat is implemented as an application layer protocol to facilitate communication in the form of text.

IRC then grew larger and got used on the entire Finnish national network—FUNET—and then connected to Nordunet, the Scandinavian branch of the Internet.

[12] Another fork effort, the first that made a lasting difference, was initiated by "Wildthang" in the United States in October 1992.

[7] The "undernetters" wanted to take ircd further in an attempt to make it use less bandwidth and to try to sort out the channel chaos (netsplits and takeovers) that EFnet started to suffer from.

For the latter purpose, the Undernet implemented timestamps, new routing and offered the CService—a program that allowed users to register channels and then attempted to protect them from troublemakers.

[7] In May 1993, RFC 1459[13] was published and details a simple protocol for client/server operation, channels, one-to-one and one-to-many conversations.

[7] A significant number of extensions like CTCP, colors and formats are not included in the protocol specifications, nor is character encoding,[14] which led various implementations of servers and clients to diverge.

Much of DALnet's new functions were written in early 1995 by Brian "Morpher" Smith and allow users to own nicknames, control channels, send memos, and more.

[7] In July 1996, after months of flame wars and discussions on the mailing list, there was yet another split due to disagreement in how the development of the ircd should evolve.

[20] As of June 2021,[update] there are 481 different IRC networks known to be operating,[21] of which the open source Libera Chat, founded in May 2021, has the most users, with 20,374 channels on 26 servers; between them, the top 100 IRC networks share over 100 thousand channels operating on about one thousand servers.

[31] IRC was originally a plain text protocol[13] (although later extended), which on request was assigned port 194/TCP by IANA.

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

RFC 1459[66] claims that IRC operators are "a necessary evil" to keep a clean state of the network, and as such they need to be able to disconnect and reconnect servers.

Networks that carry services (NickServ et al.) usually allow their IRC operators also to handle basic "ownership" matters.

Users may also have the option of requesting a "virtual host" (or "vhost"), to be displayed in the hostmask to allow further anonymity.

Some IRC networks, such as Libera Chat or Freenode, use these as "cloaks" to indicate that a user is affiliated with a group or project.

Per the specification, the usual hash symbol (#) will be prepended to channel names that begin with an alphanumeric character—allowing it to be omitted.

[74] Issues in the original design of IRC were the amount of shared state data[75][76] being a limitation on its scalability,[77] the absence of unique user identifications leading to the nickname collision problem,[78] lack of protection from netsplits by means of cyclic routing,[79][80] the trade-off in scalability for the sake of real-time user presence information,[81] protocol weaknesses providing a platform for abuse,[82] no transparent and optimizable message passing,[83] and no encryption.

Because IRC connections may be unencrypted and typically span long time periods, they are an attractive target for DoS/DDoS attackers and hackers.

Because of this, careful security policy is necessary to ensure that an IRC network is not susceptible to an attack such as a takeover war.

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.

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.

To some extent, this inconveniences legitimate users, who might be forced to briefly use a different name after rejoining (appending an underscore is popular).

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.

The timestamp versus ND/CD disagreements caused several servers to split away from EFnet and form the newer IRCnet.

This ID starts with a number, which is forbidden in nicks (although some ircds, namely IRCnet and InspIRCd, allow clients to switch to their own UID as the nickname).

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

[97] To keep the IRC client from quitting when the ssh connection closes, the client can be run inside a terminal multiplexer such as 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, or to maintain a channel's presence on the network.

[citation needed] Many users have implemented their own ad hoc search engines using the logging features built into many IRC clients.

IRC still lacks a single globally accepted standard convention for how to transmit characters outside the 7-bit ASCII repertoire.

The first IRC server, tolsun.oulu.fi, a Sun-3 server on display near the University of Oulu computer centre
A screenshot of HexChat , an IRC client for GTK environments
Irssi , a text-based IRC client
Scheme of an IRC network with normal clients (green), bots (blue) and bouncers (orange)