https://de.wikipedia.org/w/api.php?action=feedcontributions&feedformat=atom&user=Categorization Wikipedia - Benutzerbeiträge [de] 2025-06-04T22:34:44Z Benutzerbeiträge MediaWiki 1.45.0-wmf.3 https://de.wikipedia.org/w/index.php?title=Matrix_(Kommunikationsprotokoll)&diff=177137613 Matrix (Kommunikationsprotokoll) 2015-05-09T11:33:57Z <p>Categorization: just jotting first</p> <hr /> <div>{{AFC submission|t||ts=20150328052535|u=ThaddeusB|ns=118}}<br /> <br /> '''Matrix''' is an [[application layer]] protocol based on open standard for decentralised communication, providing simple HTTP APIs and open source reference implementations for securely distributing and persisting JSON over an open federation of servers.&lt;ref&gt;{{Cite web|url = https://matrix.org/|title = Matrix.org|date = |accessdate = 2015-03-27|website = |publisher = |last = |first = }}&lt;/ref&gt; <br /> <br /> <br /> <br /> Matrix.org is an ambitious not-for-profit open source initiative defining a new open standard for decentralised, persistent and interoperable communications over the internet. Matrix.org’s aim is to fix the problem of fragmented IP-communications between devices, people and services, and make them as seamless and interoperable as possible. Matrix addresses use cases like VoIP, IoT and instant messaging but its real potential and ultimate mission is to be a generic messaging and data synchronization system for the web - allowing anyone and anything to easily communicate securely, maintaining full conversation history with no single points of control or failure. Any developer can use Matrix to easily create and host their own feature-rich real-time communication apps or add such features to an existing service whilst building on the Matrix community of users. Existing communication services can also easily join in and integrate with the Matrix ecosystem.<br /> <br /> The Matrix standard specifies simple RESTful HTTP APIs for securely transmitting and replicating JSON data between Matrix-capable clients, servers and services. Clients send data by PUTing it to a ‘room’ on their server, which then replicates the data over all the Matrix servers participating in this ‘room’. This data is signed using a blockchain-style signature to mitigate tampering, and the federated traffic is encrypted with HTTPS and signed with each server’s private key to avoid spoofing. Replication follows eventual consistency semantics, allowing servers to function even if offline or after data-loss by resynchronizing missing history from other participating servers. End-to-end encryption ensures data at rest is only readable by the room participants. The result is that data transmitted over Matrix is never stored in any single place, and is instead securely shared on a purely need-to-know basis between relevant parties, with control of access residing solely with the author.<br /> <br /> - See more at: https://www.crunchbase.com/organization/matrix-org#sthash.GJAZxJGJ.dpuf<br /> https://www.crunchbase.com/organization/matrix-org<br /> <br /> Client software is available for open-federated Instant Messaging (IM), Voice over IP (VoIP) and Internet of Things (IoT) communication, designed to create and support a new global real-time communication ecosystem.&lt;ref&gt;{{Cite web|url = https://matrix.org/docs/spec/|title = Matrix Specification Documentation|date = 2015-03-27|accessdate = |website = |publisher = |last = |first = }}&lt;/ref&gt;<br /> &lt;references /&gt;{{Computer-mediated communication}}</div> Categorization https://de.wikipedia.org/w/index.php?title=Matrix_(Kommunikationsprotokoll)&diff=177137612 Matrix (Kommunikationsprotokoll) 2015-03-30T15:18:37Z <p>Categorization: removing extra table, but keeping the computer-mediated communication one just to see if there is a part that fits wih Matrix?? unsure, will change probably</p> <hr /> <div>{{AFC submission|t||ts=20150328052535|u=ThaddeusB|ns=118}}<br /> <br /> '''Matrix''' is an [[application layer]] protocol based on open standard for decentralised communication, providing simple HTTP APIs and open source reference implementations for securely distributing and persisting JSON over an open federation of servers.&lt;ref&gt;{{Cite web|url = https://matrix.org/|title = Matrix.org|date = |accessdate = 2015-03-27|website = |publisher = |last = |first = }}&lt;/ref&gt; <br /> <br /> Client software is available for open-federated Instant Messaging (IM), Voice over IP (VoIP) and Internet of Things (IoT) communication, designed to create and support a new global real-time communication ecosystem.&lt;ref&gt;{{Cite web|url = https://matrix.org/docs/spec/|title = Matrix Specification Documentation|date = 2015-03-27|accessdate = |website = |publisher = |last = |first = }}&lt;/ref&gt;<br /> &lt;references /&gt;{{Computer-mediated communication}}</div> Categorization https://de.wikipedia.org/w/index.php?title=Matrix_(Kommunikationsprotokoll)&diff=177137611 Matrix (Kommunikationsprotokoll) 2015-03-28T02:15:28Z <p>Categorization: basic cites</p> <hr /> <div><br /> '''Matrix''' is an [[application layer]] protocol based on open standard for decentralised communication, providing simple HTTP APIs and open source reference implementations for securely distributing and persisting JSON over an open federation of servers.&lt;ref&gt;{{Cite web|url = https://matrix.org/|title = Matrix.org|date = |accessdate = 2015-03-27|website = |publisher = |last = |first = }}&lt;/ref&gt; <br /> <br /> Client software is available for open-federated Instant Messaging (IM), Voice over IP (VoIP) and Internet of Things (IoT) communication, designed to create and support a new global real-time communication ecosystem.&lt;ref&gt;{{Cite web|url = https://matrix.org/docs/spec/|title = Matrix Specification Documentation|date = 2015-03-27|accessdate = |website = |publisher = |last = |first = }}&lt;/ref&gt;<br /> &lt;references /&gt;{{Computer-mediated communication}}<br /> <br /> [[Category:Internet Relay Chat| ]]<br /> [[Category:Application layer protocols]]<br /> [[Category:Finnish inventions]]<br /> [[Category:Internet terminology]]<br /> [[Category:Virtual communities]]<br /> [[Category:1988 introductions]]</div> Categorization https://de.wikipedia.org/w/index.php?title=Matrix_(Kommunikationsprotokoll)&diff=177137610 Matrix (Kommunikationsprotokoll) 2015-03-28T00:53:01Z <p>Categorization: cutting!</p> <hr /> <div><br /> '''Matrix''' is an [[application layer]] protocol based on open standard for decentralised communication, providing simple HTTP APIs and open source reference implementations for securely distributing and persisting JSON over an open federation of servers. <br /> <br /> Client software is available for open-federated Instant Messaging (IM), Voice over IP (VoIP) and Internet of Things (IoT) communication, designed to create and support a new global real-time communication ecosystem&lt;!-- * [[Comparison of IRC services]] --&gt;{{Computer-mediated communication}}<br /> <br /> [[Category:Internet Relay Chat| ]]<br /> [[Category:Application layer protocols]]<br /> [[Category:Finnish inventions]]<br /> [[Category:Internet terminology]]<br /> [[Category:Virtual communities]]<br /> [[Category:1988 introductions]]</div> Categorization https://de.wikipedia.org/w/index.php?title=Matrix_(Kommunikationsprotokoll)&diff=177137609 Matrix (Kommunikationsprotokoll) 2015-03-28T00:39:10Z <p>Categorization: hmm</p> <hr /> <div><br /> '''Matrix''' is an [[application layer]] protocol based on open standard for decentralised communication, providing simple HTTP APIs and open source reference implementations for securely distributing and persisting JSON over an open federation of servers. <br /> <br /> Client software is available for open-federated Instant Messaging (IM), Voice over IP (VoIP) and Internet of Things (IoT) communication, designed to create and support a new global real-time communication ecosystem.<br /> <br /> facilitates transfer of messages in the form of text. The chat process works on a client/server model of networking. IRC clients are computer programs that a user can install on their system. These clients are able to communicate with chat servers to transfer messages to other clients.&lt;ref name=&quot;rfc 1459 1 introduction&quot;&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Introduction<br /> | section = 1<br /> | page = 4<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; It is mainly designed for [[Many-to-many|group communication]] in discussion forums, called ''[[#Channels|channels]]'',&lt;ref&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = One-to-many<br /> | section = 3.2<br /> | page = 11<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; but also allows one-to-one communication via [[instant messaging|private message]]&lt;ref&gt;{{cite IETF<br /> | rfc = 2810<br /> | sectionname = One-To-One Communication<br /> | section = 5.1<br /> | page = 5<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; as well as [[Direct Client-to-Client|chat and data transfer]],&lt;ref&gt;{{cite web<br /> | url = http://www.irchelp.org/irchelp/rfc/dccspec.html<br /> | title = A description of the DCC protocol<br /> | accessdate = 2011-04-08<br /> | last = Rollo<br /> | first = Troy<br /> | publisher = irchelp.org<br /> }}&lt;/ref&gt; including [[file sharing]].&lt;ref&gt;{{cite book<br /> | last = Wang<br /> | first = Wallace<br /> | title = Steal this File Sharing Book<br /> | edition = 1st<br /> | date = 2004-10-25<br /> | publisher = [[No Starch Press]]<br /> | location = [[San Francisco, California]]<br /> | isbn = 1-59327-050-X<br /> | pages = 61{{spaced ndash}}67<br /> | chapter = Instant Messaging and Online Chat Rooms: Internet Relay Chat (IRC)<br /> }}&lt;/ref&gt;<br /> <br /> [[Comparison of Internet Relay Chat clients|Client software]] is available for every major operating system that supports Internet access.&lt;ref name=Sage&gt;{{cite web<br /> |title=SAGE IRC Channel<br /> |url=http://www.sage.org/about/irc.html<br /> |publisher=Sage – The USENIX Special Interest Group for Sysadmins<br /> |accessdate=18 April 2011<br /> |archiveurl=http://web.archive.org/web/20120207191923/http://sage.org/about/irc.html|archivedate=7 February 2012}}&lt;/ref&gt; As of April 2011, the top 100 IRC networks served more than half a million users at a time,&lt;ref name=&quot;irc networks top 100&quot;&gt;{{cite web<br /> | url = http://irc.netsplit.de/networks/top100.php<br /> | title = IRC Networks – Top 100<br /> | accessdate = 2011-04-08<br /> | publisher = irc.netsplit.de<br /> }}&lt;/ref&gt; with hundreds of thousands of channels&lt;ref name=&quot;irc networks top 100&quot; /&gt; operating on a total of roughly 1,500 servers&lt;ref name=&quot;irc networks top 100&quot; /&gt; out of roughly 3,200 servers worldwide.&lt;ref&gt;{{cite web<br /> | url = http://irc.netsplit.de/servers/summary.php<br /> | title = IRC Servers – Summary<br /> | accessdate = 2011-04-08<br /> | publisher = irc.netsplit.de<br /> }}&lt;/ref&gt;<br /> <br /> Over the past decade IRC usage has been declining: since 2003 it has lost 60% of its users (from 1 million to about 400,000 in 2014) and half of its channels (from half a million in 2003).&lt;ref&gt;{{cite web<br /> | url = http://royal.pingdom.com/2012/04/24/irc-is-dead-long-live-irc/<br /> | title = IRC is dead, long live IRC<br /> | accessdate = 2014-05-16<br /> }}&lt;/ref&gt;<br /> <br /> {{IPstack}}<br /> <br /> ==History {{anchor|MultiUser Talk}}== &lt;!-- This section is linked from redirect &quot;[[MultiUser Talk]]&quot; --&gt;<br /> IRC was created by [[Jarkko Oikarinen]] in August 1988 to replace a program called MUT (MultiUser Talk) on a [[Bulletin board system|BBS]] called OuluBox in [[Finland]].&lt;ref name=&quot;founding irc&quot;&gt;{{cite web<br /> | url = http://www.mirc.com/jarkko.html<br /> | title = Founding IRC<br /> | accessdate = 2011-04-08<br /> | last = Oikarinen<br /> | first = Jarkko<br /> | authorlink = Jarkko Oikarinen<br /> }}&lt;/ref&gt; Oikarinen found inspiration in a chat system known as [[Bitnet Relay]], which operated on the [[BITNET]].&lt;ref name=&quot;founding irc&quot; /&gt;<br /> <br /> IRC was used to report on the [[1991 Soviet coup d'état attempt]] throughout a [[media blackout]].&lt;ref&gt;{{cite web<br /> | url = http://www.ibiblio.org/pub/academic/communications/logs/report-ussr-gorbatchev<br /> | title = IRC transcripts from the time of the 1991 Soviet coup d'état attempt<br /> | accessdate = 2011-04-08<br /> | publisher = [[ibiblio]]<br /> | location = [[Chapel Hill, North Carolina]]<br /> }}&lt;/ref&gt; It was previously used in a similar fashion during the [[Gulf War]].&lt;ref&gt;{{cite web<br /> | url = http://www.ibiblio.org/pub/academic/communications/logs/Gulf-War/<br /> | title = IRC logs of events of the Gulf War<br /> | accessdate = 2011-04-08<br /> | publisher = [[ibiblio]]<br /> | location = [[Chapel Hill, North Carolina]]<br /> }}&lt;/ref&gt; Logs of these and other events are kept in the [[ibiblio]] archive.&lt;ref&gt;{{cite web<br /> | url = http://www.ibiblio.org/pub/academic/communications/logs/<br /> | title = Logs of major events in the online community<br /> | accessdate = 2011-04-08<br /> | publisher = [[ibiblio]]<br /> | location = [[Chapel Hill, North Carolina]]<br /> }}&lt;/ref&gt;<br /> <br /> ==Technical information==<br /> {{See also|IRCd}}<br /> &lt;!-- Commented out: [[File:MIRC 6.31 Screenshot.png|right|thumb|A Screenshot of [[mIRC]], an IRC client for [[Microsoft Windows|Windows]] versions.]] --&gt;<br /> [[File:Screenshot of HexChat in Windows 8.png|right|thumb|A screenshot of [[HexChat]], an IRC client for [[GTK]] environments.]]<br /> [[File:Xaric screen shot.jpg|right|thumb|Xaric, a text-based IRC client, in use on [[Mac OS X]]. Shown are two IRC channels and a private conversation with the software author.]]<br /> IRC is an open [[Network protocol|protocol]] that uses [[Transmission Control Protocol|TCP]]&lt;ref name=&quot;rfc 1459 1 introduction&quot; /&gt; and, optionally, [[Transport Layer Security|TLS]]. An [[IRC server]] can connect to other IRC servers to expand the IRC network.&lt;ref&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Servers<br /> | section = 1.1<br /> | page = 4<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; Users access IRC networks by connecting a client to a server.&lt;ref&gt;{{cite IETF<br /> | rfc = 2810<br /> | sectionname = Clients<br /> | section = 2.2<br /> | page = 3<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; There are many client implementations, such as [[mIRC]], [[HexChat]] and [[irssi]], 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.&lt;ref&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Clients<br /> | section = 1.2<br /> | page = 5<br /> | idanchor = ietf<br /> }}&lt;/ref&gt;<br /> <br /> IRC was originally a [[Text-based protocol|plain text protocol]] &lt;ref name=&quot;rfc 1459 1 introduction&quot; /&gt; (although later extended), which on request was assigned port [[List of TCP and UDP port numbers|194/TCP]] by [[Internet Assigned Numbers Authority|IANA]].&lt;ref&gt;{{cite web<br /> | url = http://www.iana.org/assignments/port-numbers<br /> | title = Port Numbers<br /> | accessdate = 2011-04-08<br /> | date = 2011-04-06<br /> | publisher = [[Internet Assigned Numbers Authority]]<br /> | location = [[Marina del Rey, California]]<br /> }}&lt;/ref&gt; However, the [[de facto standard|''de facto'' standard]] has always been to run IRC on 6667/TCP&lt;ref&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Connect message<br /> | section = 4.3.5<br /> | page = 29<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; and nearby port numbers (for example TCP ports 6660–6669, 7000)&lt;ref&gt;{{cite book<br /> | last1 = Lucas<br /> | first1 = Mark<br /> | last2 = Singh<br /> | first2 = Abhishek<br /> | last3 = Cantrell<br /> | first3 = Chris<br /> | editor-last = Henmi<br /> | editor-first = Anne<br /> | title = Firewall Policies and VPN Configurations<br /> | date = 2006-10-05<br /> | publisher = [[Syngress Publishing]]<br /> | location = [[Rockland, Massachusetts]]<br /> | isbn = 1-59749-088-1<br /> | page = 93<br /> | chapter = Defining a Firewall<br /> }}&lt;/ref&gt; to avoid having to run the [[IRCd]] software with [[Superuser|root privileges]].<br /> <br /> The protocol specified that characters were 8-bit but did not specify the character encoding the text was supposed to use.&lt;ref name=&quot;rfc 1459 2.2 character codes&quot;&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Character codes<br /> | section = 2.2<br /> | page = 7<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; This can cause problems when users using different clients and/or different platforms want to converse.<br /> <br /> 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|date=July 2007}}<br /> <br /> 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|date=July 2007}}<br /> <br /> Microsoft made an extension for IRC in 1998 via the proprietary [[IRCX]].&lt;ref&gt;{{cite IETF<br /> | title = Extensions to the Internet Relay Chat Protocol (IRCX)<br /> | draft = draft-pfenning-irc-extensions-04<br /> | last = Abraham<br /> | first = Dalen<br /> | year = 1998<br /> | month = June<br /> | publisher = [[Internet Engineering Task Force|IETF]]<br /> | accessdate = 2011-04-08<br /> }}&lt;/ref&gt; They later stopped distributing software supporting IRCX, instead developing the proprietary [[Microsoft Notification Protocol|MSNP]].<br /> <br /> The standard structure of a network of IRC servers is a [[Tree network|tree]].&lt;ref&gt;{{cite IETF<br /> | rfc = 2810<br /> | sectionname = Architecture<br /> | section = 3<br /> | pages = 3{{spaced ndash}}4<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; Messages are routed along only necessary branches of the tree but network state is sent to every server&lt;ref&gt;{{cite IETF<br /> | rfc = 2810<br /> | sectionname = Introduction<br /> | section = 1<br /> | page = 2<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; 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&lt;ref&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Algorithms<br /> | section = 9.3<br /> | page = 64<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; 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&lt;ref&gt;{{cite IETF<br /> | rfc = 2810<br /> | sectionname = Network Congestion<br /> | section = 6.3<br /> | pages = 7{{spaced ndash}}8<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; 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.&lt;ref&gt;{{cite IETF<br /> | rfc = 2810<br /> | sectionname = To A Channel<br /> | section = 5.2.1<br /> | pages = 5{{spaced ndash}}6<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; This is a strength in comparison to non-multicasting protocols such as [[Simple Mail Transfer Protocol]] (SMTP) or [[Extensible Messaging and Presence Protocol]] (XMPP).<br /> <br /> An IRC daemon can also be used on a local area network (LAN). IRC can thus be used to facilitate communication between people of the own network (internal communication).&lt;ref&gt;{{cite web|url=http://computerquestionhelp.com/content/how-guide-setup-your-own-irc-server-using-personal-or-dedicated-system-or-server-top-freewar|title=IRC daemons for LAN|publisher=|accessdate=2 October 2014}}&lt;/ref&gt;&lt;ref&gt;{{cite web|url=http://www.irc-wiki.org/IRC_server|title=Running an own IRC server|publisher=|accessdate=2 October 2014}}&lt;/ref&gt;<br /> <br /> ===Commands and replies===<br /> {{Main|List of Internet Relay Chat commands}}<br /> IRC has a line-based structure with the client sending single-line messages to the server,&lt;ref&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Message format in 'pseudo' BNF<br /> | section = 2.3.1<br /> | page = 8<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; receiving replies to those messages&lt;ref&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Numeric replies<br /> | section = 2.4<br /> | page = 10<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; 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|date=May 2009}}<br /> <br /> 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.&lt;ref&gt;{{cite web<br /> | url = http://www.shanemcc.co.uk/irc/#listmode<br /> | title = IRC List Modes – List mode extension showing pair confusion for lists<br /> | accessdate = 2011-04-08<br /> | date = 2009-11-25<br /> }}&lt;/ref&gt;<br /> <br /> ===Channels===<br /> The basic means of communicating to a group of users in an established IRC session is through a ''[[chat room|channel]]''.&lt;ref name=&quot;rfc 1459 3.2.2 to a group (channel)&quot;&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = To a group (channel)<br /> | section = 3.2.2<br /> | page = 11<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; Channels on a network can be displayed using the IRC command ''LIST'',&lt;ref&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = List message<br /> | section = 4.2.6<br /> | page = 24<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; which lists all currently available channels that do not have the modes +s or +p set, on that particular network.<br /> <br /> Users can ''join'' a channel using the ''JOIN'' command,&lt;ref name=&quot;rfc 1459 4.2.1 join message&quot;&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Join message<br /> | section = 4.2.1<br /> | page = 19<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; in most clients available as ''/join #channelname''. Messages sent to the joined channels are then relayed to all other users.&lt;ref name=&quot;rfc 1459 3.2.2 to a group (channel)&quot; /&gt;<br /> <br /> Channels that are available across an entire IRC network are prefixed with a '#', while those local to a server use '&amp;'.&lt;ref&gt;{{cite IETF<br /> | rfc = 2811<br /> | sectionname = Channel Scope<br /> | section = 2.2<br /> | page2 = 3{{spaced ndash}}4<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; Other less common channel types include '+' channels—'modeless' channels without operators&amp;nbsp;—&lt;ref&gt;{{cite IETF<br /> | rfc = 2811<br /> | sectionname = Channel Properties<br /> | section = 2.3<br /> | page = 4<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; and '!' channels, a form of [[#Nick/channel delay|timestamped]] channel on normally non-timestamped networks.&lt;ref&gt;{{cite IETF<br /> | rfc = 2811<br /> | sectionname = Channel lifetime<br /> | section = 3<br /> | page = 5<br /> | idanchor = ietf<br /> }}&lt;/ref&gt;<br /> <br /> ===Modes===<br /> Users and channels may have ''modes'' that are represented by single case-sensitive letters&lt;ref&gt;{{cite IETF<br /> | rfc = 2811<br /> | sectionname = Channel Modes<br /> | section = 4<br /> | page = 7<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; and are set using the ''MODE'' command.&lt;ref&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Mode message<br /> | section = 4.2.3<br /> | page = 21<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; User modes and channel modes are separate and can use the same letter to mean different things (e.g. usermode &quot;i&quot; is invisible mode whilst channelmode &quot;i&quot; is invite only.&lt;ref&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Channel modes<br /> | section = 4.2.3.1<br /> | pages = 21{{spaced ndash}}22<br /> | idanchor = ietf<br /> }}&lt;/ref&gt;) 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.<br /> <br /> 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.&lt;ref&gt;{{cite IETF<br /> | rfc = 2811<br /> | sectionname = Channel Access Control<br /> | section = 4.3<br /> | pages = 10{{spaced ndash}}11<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; Modes that apply to users on a channel have an associated symbol that is used to represent the mode in names replies&lt;ref name=&quot;rfc 1459 p.51 rpl_namreply&quot;&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Command responses: 353 RPL_NAMREPLY<br /> | page = 51<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; (sent to clients on first joining a channel&lt;ref name=&quot;rfc 1459 4.2.1 join message&quot; /&gt; 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.<br /> <br /> 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.&lt;ref&gt;{{cite web<br /> | url = http://www.irc.org/tech_docs/005.html<br /> | title = The 005 numeric: ISUPPORT<br /> | accessdate = 2011-04-10<br /> | last = Roeckx<br /> | first = Kurt<br /> | date = 2004-10-14<br /> | publisher = irc.org<br /> }}&lt;/ref&gt;&lt;ref&gt;{{cite IETF<br /> | title = IRC RPL_ISUPPORT Numeric Definition<br /> | draft = draft-brocklesby-irc-isupport-03<br /> | last = Brocklesby<br /> | first = Edward<br /> | year = 2002<br /> | month = September<br /> | publisher = [[Internet Engineering Task Force|IETF]]<br /> | accessdate = 2011-04-10<br /> }}&lt;/ref&gt;<br /> <br /> 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,&lt;ref name=&quot;rfc 1459 p.51 rpl_namreply&quot; /&gt; 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.<br /> <br /> ====Standard (RFC 1459) modes====<br /> <br /> {| class=&quot;wikitable&quot;<br /> |+ User modes<br /> |-<br /> ! Letter<br /> ! Symbol<br /> ! Description<br /> |-<br /> | '''i'''<br /> |<br /> | Invisible—cannot be seen without a common channel or knowing the exact name<br /> |-<br /> | '''s'''<br /> |<br /> | Receives server notices<br /> |-<br /> | '''w'''<br /> |<br /> | Receives wallops&lt;ref&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Operwall message<br /> | section = 5.6<br /> | page = 41<br /> | idanchor = ietf<br /> }}&lt;/ref&gt;<br /> |-<br /> | '''o'''<br /> |<br /> | User is an IRC operator (ircop)<br /> |}<br /> <br /> {| class=&quot;wikitable&quot;<br /> |+ Channel modes<br /> |-<br /> ! Letter<br /> ! Symbol<br /> ! Parameter(s)<br /> ! Description<br /> |-<br /> | '''o'''<br /> | @<br /> | Name of affected user<br /> | Channel operator—can change channel modes and kick users out of the channel among other things<br /> |-<br /> | '''s'''<br /> |<br /> |<br /> | Secret channel—not shown in channel list or user whois except to users already on the channel<br /> |-<br /> | '''p'''<br /> |<br /> |<br /> | Private channel—listed in channel list as &quot;prv&quot; according to &lt;nowiki&gt;RFC 1459&lt;/nowiki&gt;<br /> |-<br /> | '''n'''<br /> |<br /> |<br /> | Users cannot send messages to the channel externally<br /> |-<br /> | '''m'''<br /> | <br /> |<br /> | Channel is moderated (only those who hold operator or voice status on the channel can send messages to it)<br /> |-<br /> | '''i'''<br /> |<br /> |<br /> | Only users with invites may enter the channel.<br /> |-<br /> | '''t'''<br /> |<br /> |<br /> | Only operators can change the channel topic.<br /> |-<br /> | '''l'''<br /> |<br /> | Limit number<br /> | Limits number of users able to be on channel (when full, no new users can join)<br /> |-<br /> | '''b'''<br /> |<br /> | Ban mask (nick!user@host with wildcards allowed)<br /> | Bans [[hostmask]]s from channel<br /> |-<br /> | '''v''' &lt;!-- That does belong here with the channel modes. It's not a user mode --&gt;<br /> | +<br /> | Name of affected user<br /> | Gives a user voice status on channel (see +m above)<br /> |-<br /> | '''k'''<br /> | <br /> | New channel key<br /> | Sets a channel key such that only users knowing the key can enter<br /> |}<br /> <br /> Many daemons and networks have added extra modes or modified the behavior of modes in the above list.&lt;ref&gt;{{cite web<br /> | url = http://www.alien.net.au/irc/usermodes.html<br /> | title = IRC User Modes List<br /> | accessdate = 2011-04-10<br /> | last = Butcher<br /> | first = Simon<br /> | date = 2005-01-12<br /> | publisher = alien.net.au<br /> }}&lt;/ref&gt;&lt;ref&gt;{{cite web<br /> | url = http://www.alien.net.au/irc/chanmodes.html<br /> | title = IRC Channel Modes List<br /> | accessdate = 2011-04-10<br /> | last = Butcher<br /> | first = Simon<br /> | date = 2005-01-12<br /> | publisher = alien.net.au<br /> }}&lt;/ref&gt;&lt;ref&gt;{{cite web<br /> | url = http://www.alien.net.au/irc/servermodes.html<br /> | title = IRC Server Modes List<br /> | accessdate = 2011-04-10<br /> | last = Butcher<br /> | first = Simon<br /> | date = 2005-01-12<br /> | publisher = alien.net.au<br /> }}&lt;/ref&gt;&lt;ref&gt;{{cite web<br /> | url = http://webtoman.com/opera/panel/ircdmodes.html<br /> | title = IRCd Modes<br /> | accessdate = 2011-04-10<br /> | last = Olsen<br /> | first = Tommy<br /> | publisher = webtoman.com<br /> }}&lt;/ref&gt;<br /> <br /> ===Channel Operators===<br /> A ''Channel Operator'' is a [[Client (computing)|client]] on an [[IRC channel]] that manages the channel.<br /> IRC Channel Operators can be easily seen by a symbol &quot;@&quot;, or a Latin letter &quot;+o&quot;/&quot;o&quot;.<br /> On most networks, an operator can:<br /> * Kick a user<br /> * Ban a user<br /> * Give another user IRC Channel Operator Status or IRC Channel Voice Status.<br /> * Change the IRC Channel topic.<br /> * Change the IRC Channel Mode locks.<br /> <br /> ===IRC Operators===<br /> {{main|Internet Relay Chat operator}}<br /> There are also users who maintain elevated rights on their local server, or the entire network; these are called IRC operators,&lt;ref name=&quot;rfc 1459 1.2.1 operators&quot;&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Operators<br /> | section = 1.2.1<br /> | page = 5<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; sometimes shortened to IRCops or Opers (not to be confused with channel operators). As the implementation of the IRCd varies, so do the privileges of the IRC operator on the given IRCd. RFC 1459&lt;ref name=&quot;rfc 1459 1.2.1 operators&quot; /&gt; claims that IRC operators are &quot;a necessary evil&quot; to keep clean state of the network, and 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 are usually allowed to disconnect clients and completely ban IPs or complete subnets. Networks that carry services (Nickserv et al.) usually allow their IRC operators also to handle basic &quot;Ownership&quot; 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.<br /> <br /> ===Hostmasks===<br /> A hostmask is a unique identifier of an IRC [[client (computing)|client]] connected to an IRC [[Server (computing)|server]].&lt;ref name=&quot;thiedeke-2003&quot;&gt;{{cite book<br /> | last = Thiedeke<br /> | first = Udo<br /> | title = Virtuelle Gruppen: Charakteristika und Problemdimensionen<br /> | url = http://books.google.com/?id=aQ74THYRyYsC&amp;lpg=PA314&amp;pg=PA315#v=onepage&amp;q=hostmask<br /> | accessdate = 2010-03-30<br /> | edition = 2nd<br /> | date = 2003-09-23<br /> | publisher = {{Ill|de|Springer VS}}<br /> | language = German<br /> | isbn = 3-531-33372-0<br /> | pages = 314, 337<br /> | chapter = Nicola Döring, Alexander Schestag<br /> }}&lt;/ref&gt;&lt;ref name=&quot;rogers-2005&quot;&gt;{{cite book<br /> | last = Rogers<br /> | first = Russ<br /> | editor-last = Devost<br /> | editor-first = Matthew G.<br /> | title = Hacking a Terror Network: The Silent Threat of Covert Channels<br /> | url = http://books.google.com/books?id=e3ggsGgTzUgC&amp;lpg=PA10&amp;pg=PA10#v=onepage&amp;q=Hostmask%20IRC<br /> | accessdate = 2010-03-30<br /> | edition = 1st<br /> | date = 2004-12-01<br /> | publisher = [[Syngress Publishing]]<br /> | location = [[Rockland, Massachusetts]]<br /> | isbn = 1-928994-98-9<br /> | page = 10<br /> | chapter = The Mind of Terror<br /> }}&lt;/ref&gt; IRC [[IRCd|server]]s, [[Internet Relay Chat services|services]], and other clients including [[Internet Relay Chat bot|bots]] can use it to identify a specific IRC session.<br /> <br /> The format of a hostmask is &lt;code&gt;nick!user@host&lt;/code&gt;. The hostmask looks similar to, but should not be confused with an [[e-mail address]].<br /> <br /> The nick part is the nickname chosen by the user and may be changed while connected.<br /> The user part is the username reported by [[ident protocol|ident]] on the client.&lt;ref name=&quot;petersen-2002&quot;&gt;{{cite book<br /> | editor-last = Petersen<br /> | editor-first = Julie K.<br /> | title = The Telecommunications Illustrated Dictionary<br /> | url = http://books.google.com/books?id=b2mMzS0hCkAC&amp;lpg=PA500&amp;pg=PA500#v=onepage&amp;q=Hostmask<br /> | accessdate = 2010-03-30<br /> | edition = 2nd<br /> | date = 2002-05-29<br /> | publisher = [[CRC Press]]<br /> | isbn = 0-8493-1173-X<br /> | page = 500<br /> | chapter = Internet Relay Chat<br /> }}&lt;/ref&gt; If ident is not available on the client, the username specified when the client connected is used after being prefixed with a [[tilde]].&lt;ref name=&quot;freenode faq&quot;&gt;{{cite web<br /> | url = http://freenode.net/faq.shtml<br /> | title = Frequently-Asked Questions<br /> | accessdate = 2010-03-30<br /> | publisher = [[freenode]]<br /> }}&lt;/ref&gt;<br /> <br /> The host part is the [[hostname]] the client is connecting from. If the [[IP address]] of the client cannot be resolved to a valid [[hostname]] by the server, it is used instead of the hostname.<br /> <br /> Because of the [[privacy]] implications of exposing the IP address or hostname of a client, some [[IRCd|IRC daemons]] also provide privacy features, such as InspIRCD or UnrealIRCD's &quot;+x&quot; mode. This [[Cryptographic hash function|hashes]] a client IP address or masks part of a client's hostname, making it unreadable to users other than [[Internet Relay Chat#IRC Operators|IRCops]]. Users may also have the option of requesting a &quot;virtual host&quot; (or &quot;vhost&quot;), to be displayed in the hostmask to allow further anonymity. Some IRC networks such as [[Freenode]] use these as &quot;cloaks&quot; to indicate that a user is affiliated with a group or project.&lt;ref&gt;{{cite web<br /> | url = http://meta.wikimedia.org/wiki/IRC/Cloaks<br /> | title = IRC/Cloaks<br /> | accessdate = 2011-11-27<br /> | publisher = [[Wikimedia]]<br /> }}&lt;/ref&gt;<br /> <br /> ==Challenges==<br /> Issues in the original design of IRC were the amount of shared state data&lt;ref&gt;{{cite IETF<br /> | rfc = 1324<br /> | sectionname = Size<br /> | section = 2.5.1<br /> | pages = 5{{spaced ndash}}6<br /> | idanchor = ietf<br /> }}&lt;/ref&gt;&lt;ref&gt;{{cite IETF<br /> | rfc = 2810<br /> | sectionname = Scalability<br /> | section = 6.1<br /> | page = 7<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; being a limitation on its scalability,&lt;ref&gt;{{harvnb|Loesch|2003}} 1.2.1 Growth&lt;/ref&gt; the absence of unique user identifications leading to the nickname collision problem,&lt;ref&gt;{{cite IETF<br /> | rfc = 1324<br /> | sectionname = User identification<br /> | section = 5.4.1<br /> | page = 10<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; lack of protection from netsplits by means of cyclic routing,&lt;ref&gt;{{cite IETF<br /> | rfc = 1324<br /> | sectionname = Trees and cycles<br /> | section = 5.4.2<br /> | page = 10<br /> | idanchor = ietf<br /> }}&lt;/ref&gt;&lt;ref&gt;{{harvnb|Loesch|2003}} 1.2.2 Network failures&lt;/ref&gt; the trade-off in scalability for the sake of real-time user presence information,&lt;ref&gt;{{cite IETF<br /> | rfc = 1324<br /> | sectionname = State Information problems<br /> | section = 2.1<br /> | page = 4<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; protocol weaknesses providing a platform for abuse,&lt;ref&gt;{{harvnb|Loesch|2003}} 1.2.3 Sociological and security aspects&lt;/ref&gt; no transparent and optimizable message passing,&lt;ref&gt;{{cite IETF<br /> | rfc = 1324<br /> | sectionname = Message passing<br /> | section = 5.2.1<br /> | page = 7<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; and no encryption.&lt;ref&gt;{{cite IETF<br /> | rfc = 1324<br /> | sectionname = Conference security<br /> | section = 5.2.4<br /> | page = 8<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; Some of these issues have been addressed in ''Modern IRC''.<br /> <br /> ===Attacks===<br /> Because IRC connections are usually unencrypted and typically span long time periods, they are an attractive target for [[Denial-of-service attack|Dos/DDoS attackers]] and [[Hacker (computer security)|hackers]]. Because of this, careful security policy is necessary to ensure that an IRC network is not susceptible to an attack such as a [[Internet Relay Chat takeover|takeover]] war. IRC networks may also [[K-line (IRC)|K-line]] or [[G-line]] users or networks that have a harming effect.<br /> <br /> A small number of IRC servers support [[Transport Layer Security|SSL/TLS]] 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 &lt;code&gt;+S&lt;/code&gt;) to only allow SSL-connected users on the channel, while disallowing operator identification in clear text, to better utilize the advantages that SSL provides.&lt;ref&gt;{{cite web<br /> | url = http://esper.net/help.php<br /> | title = Getting Help on EsperNet<br /> | publisher = The EsperNet IRC Network<br /> | accessdate = 2012-07-31<br /> }}&lt;/ref&gt;&lt;ref&gt;{{cite web<br /> | url = http://www.dal.net/news/shownews.php?id=67<br /> | title = New Feature: SSL For Users<br /> | author = brandon<br /> | date = 2010-05-18<br /> | publisher = DALnet<br /> | accessdate = 2012-07-31<br /> }}&lt;/ref&gt;<br /> <br /> IRC served as an early laboratory for many kinds of Internet attacks, such as using fake [[Internet Control Message Protocol|ICMP]] unreachable messages to break [[Transmission Control Protocol|TCP]]-based IRC connections ([[Nuke (computer)|nuking]]) to annoy users or facilitate [[Internet Relay Chat takeover|takeover]]s.<br /> <br /> ===Abuse prevention===<br /> One of the most contentious technical issues surrounding IRC implementations, which survives to this day, is the merit of &quot;Nick/Channel Delay&quot; vs. &quot;Timestamp&quot; protocols. Both methods exist to solve the problem of [[denial-of-service attack]]s, but take very different approaches.<br /> 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 &quot;split&quot; 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 &quot;combined&quot; 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').<br /> This was often abused to &quot;mass-kill&quot; all users on a channel, thus creating &quot;opless&quot; 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.<br /> <br /> ====Nick/channel delay====<br /> 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, 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.<br /> <br /> ====Timestamping====<br /> The alternative, the timestamp or ''TS'' protocol, took a different approach. Every nickname and channel on the network was assigned a timestamp{{spaced ndash}}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 &quot;losing&quot; side of the split lost their channel operator status.<br /> 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 &quot;desyncs&quot; (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.<br /> 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.<br /> <br /> ====SAVE====<br /> In recent versions of the IRCnet ircd, as well as ircds using the TS6 protocol (including Charybdis), 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 (although some ircds, namely IRCnet and InspIRCd, allow clients to switch to their own UID as the nickname).<br /> <br /> If two clients with the same nickname join from different sides of a netsplit (&quot;nick collision&quot;), the first server to see this collision will force ''both'' clients to change their nick to their UID, thus saving both clients from being disconnected. On IRCnet, the nickname will also be locked for some time (ND) to prevent both clients from changing back to the original nickname, thus colliding again.<br /> <br /> ==Networks==<br /> [[File:Tolsun 2.jpg|thumb|right|The first IRC server, tolsun.oulu.fi, a [[Sun-3]] server on display near the [[University of Oulu]] computer centre. (2001)]]<br /> <br /> There are thousands of running IRC networks in the world. They run various implementations of [[IRC server]]s, and are administered by various groups of [[IRC operator]]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 software implementations.<br /> <br /> The largest IRC networks have traditionally been grouped as the &quot;Big Four&quot;&lt;ref name=&quot;the book of irc&quot;&gt;{{cite book<br /> | last = Charalabidis<br /> | first = Alex<br /> | title = The Book of IRC: The Ultimate Guide to Internet Relay Chat<br /> | edition = 1st<br /> | date = 1999-12-15<br /> | publisher = No Starch Press<br /> | location = [[San Francisco, California]]<br /> | isbn = 1-886411-29-8<br /> | page = 61<br /> | chapter = IRCing On The Macintosh: Ircle<br /> | quote = On large networks such as the Big Four{{mdash}} EFnet, IRCnet, Undernet, and DALnet{{mdash}} 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.<br /> }}&lt;/ref&gt;&lt;ref name=&quot;encyclopedia of new media&quot;&gt;{{cite book<br /> | editor-last = Jones<br /> | editor-first = Steve<br /> | title = Encyclopedia of New Media: An Essential Reference to Communication and Technology<br /> | edition = 1st<br /> | date = 2002-12-10<br /> | publisher = [[SAGE Publications]]<br /> | location = [[Thousand Oaks, California]]<br /> | isbn = 0-7619-2382-9<br /> | page = 257<br /> | chapter = Internet Relay Chat<br /> | quote = Today there are hundreds of independent IRC networks, but the &quot;Big Four&quot; are EFNet, UnderNet, Dalnet, and IRCnet.<br /> }}&lt;/ref&gt;&lt;ref name=&quot;the imac book&quot;&gt;{{cite book<br /> | last = Rittner<br /> | first = Don<br /> | title = The iMac Book<br /> | edition = 1st<br /> | date = 1999-03-03<br /> | publisher = Coriolis Group<br /> | location = [[Scottsdale, Arizona]]<br /> | isbn = 1-57610-429-X<br /> | page = 215<br /> | chapter =<br /> | quote = There are several large networks: EFnet, UnderNET, DALnet, and IRCnet make up the Big Four.<br /> }}&lt;/ref&gt;&lt;ref name=&quot;information technology for management&quot;&gt;{{cite book<br /> | last1 = Turban<br /> | first1 = Efraim<br /> | last2 = Leidner<br /> | first2 = Dorothy<br /> | last3 = McLean<br /> | first3 = Ephraim<br /> | last4 = Wetherbe<br /> | first4 = James<br /> | title = Information Technology for Management: Transforming Organizations in the Digital Economy<br /> | edition = 5th<br /> | date = 2005-02-07<br /> | publisher = [[John Wiley &amp; Sons]]<br /> | location = [[Hoboken, New Jersey]]<br /> | isbn = 0-471-70522-5<br /> | pages = 106{{spaced ndash}}107<br /> | chapter = Communication<br /> | quote = The largest networks have traditionally been grouped as the &quot;Big Four&quot;: EFNet, IrcNet, QuakeNet, and UnderNet.<br /> }}&lt;/ref&gt;{{mdash}} 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.<br /> <br /> Historically the &quot;Big Four&quot; were:&lt;ref name=&quot;the book of irc&quot; /&gt;&lt;ref name=&quot;encyclopedia of new media&quot; /&gt;&lt;ref name=&quot;the imac book&quot; /&gt;<br /> * [[EFnet]]<br /> * [[IRCnet]]<br /> * [[Undernet]]<br /> * [[DALnet]]<br /> <br /> IRC reached 6 million simultaneous users in 2001 and 10 million users in 2003.{{citation needed|date=January 2015}}<br /> <br /> As of March 2015 the largest IRC networks were:<br /> <br /> * [[freenode]] – around 99k users at peak hours<br /> * [[IRCNet]] – around 44k users at peak hours<br /> * [[QuakeNet]] – around 36k users at peak hours<br /> * [[EFnet]] – around 26k users at peak hours<br /> * [[Undernet]] – around 25k users at peak hours<br /> * [[rizon]] – around 25k users at peak hours<br /> <br /> Today, the top 100 IRC networks have around [http://irc.netsplit.de/networks/top100.php 460k users connected at peak hours].<br /> <br /> ===Timeline===<br /> <br /> {{Simple Horizontal timeline<br /> <br /> |from=1990<br /> |to=2014<br /> |inc=2<br /> <br /> |styleDefault-borderbottom=solid 0.1em black;<br /> <br /> |row1=timeline<br /> |row1-style=styleDefault<br /> |row1-bordertop=solid 0.1em black;<br /> |row1-1-color=#ffbb33<br /> |row1-1-from=1990<br /> |row1-1-to=2014<br /> |row1-1-text=[[EFnet]]<br /> <br /> |row2=timeline<br /> |row2-style=styleDefault<br /> |row2-1-from=1990<br /> |row2-1-to=1992<br /> |row2-2-to=2014<br /> |row2-2-text=[[Undernet]]<br /> |row2-2-color=#33b5e5<br /> <br /> |row3=timeline<br /> |row3-style=styleDefault<br /> |row3-1-from=1990<br /> |row3-1-to=1994<br /> |row3-2-color=#cc0000<br /> |row3-2-to=2014<br /> |row3-2-text=[[DALnet]]<br /> <br /> |row4=timeline<br /> |row4-style=styleDefault<br /> |row4-1-from=1990<br /> |row4-1-to=1995<br /> |row4-2-color=#aa66cc<br /> |row4-2-to=2014<br /> |row4-2-text=[[freenode]]<br /> <br /> |row5=timeline<br /> |row5-style=styleDefault<br /> |row5-1-from=1990<br /> |row5-1-to=1997<br /> |row5-2-color=#99cc00<br /> |row5-2-to=2014<br /> |row5-2-text=[[IRCnet]]<br /> <br /> |row6=timeline<br /> |row6-style=styleDefault<br /> |row6-1-from=1990<br /> |row6-1-to=1997<br /> |row6-2-color=#ff4444<br /> |row6-2-to=2014<br /> |row6-2-text=[[QuakeNet]]<br /> <br /> |row7=timeline<br /> |row7-1-from=1990<br /> |row7-1-to=2002<br /> |row7-2-color=#ff44ff<br /> |row7-2-to=2014<br /> |row7-2-text=[[Rizon]]<br /> <br /> |row8=scale<br /> |caption=IRC networks<br /> }}<br /> <br /> ==URI scheme==<br /> There are three recognized [[URI scheme]]s for Internet Relay Chat, irc, irc6, and ircs,&lt;ref&gt;{{cite web<br /> | url = http://www.iana.org/assignments/uri-schemes.html<br /> | title = Uniform Resource Identifier (URI) Schemes<br /> | publisher = Internet Assigned Numbers Authority | accessdate = 2012-10-14<br /> }}&lt;/ref&gt; that (when supported) allows [[hyperlink]]s of various forms, including<br /> &lt;nowiki&gt;irc://&lt;host&gt;[:&lt;port&gt;]/[&lt;channel&gt;[?&lt;channel_keyword&gt;]]&lt;/nowiki&gt;<br /> (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.&lt;ref&gt;{{cite IETF<br /> | title = Uniform Resource Locator Schemes for Internet Relay Chat Entities<br /> | draft = draft-butcher-irc-url-04<br /> | last = Butcher<br /> | first = Simon<br /> | year = 2003<br /> | month = January<br /> | publisher = [[Internet Engineering Task Force|IETF]]<br /> | accessdate = 2011-04-10<br /> }}&lt;/ref&gt; (This can be used within the client itself, or from another application such as a Web browser). irc is the default URI, irc6 specifies a connection to be made using IPv6, and ircs specifies a secure connection.<br /> <br /> Per the specification, the usual [[hash symbol]] (#) will be prepended to channel names that 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.<br /> <br /> Some implementations allow multiple channels to be specified, separated by commas.{{Citation needed|date=April 2011}}<br /> <br /> ==Clients==<br /> <br /> ===Client software===<br /> {{Details|Comparison of Internet Relay Chat clients}}<br /> [[File:Ircnetz-Schema.svg|right|thumb|Scheme of an IRC network with [[Client (computing)|normal clients]] (green), [[IRC bot|bots]] (blue) and [[Bouncer (networking)|bouncers]] (orange)]]<br /> <br /> Client software exists for various operating systems or software packages, as well as web-based or inside games. Many different clients are available for the various [[operating systems]], including [[Microsoft Windows|Windows]], [[Unix]] &amp; [[Linux]], [[Mac OS X]] and mobile operating systems (such as [[iOS]] and [[Android (operating system)|Android]]). On Windows, [[mIRC]] is one of the most popular clients.&lt;ref&gt;{{cite book|last=Smith|first=Roderick W.|title=The Multi-Boot Configuration Handbook| url= http://books.google.com/books?id=OuPtI5fHhBoC|accessdate=2010-07-25|series= Handbook Series| date= 2000-04-08| publisher= [[Que Publishing]]| location= [[Upper Saddle River, New Jersey]]|isbn= 0-7897-2283-6|page=289|chapter=The Internet: Using IRC to Get Help|quote= mIRC is one of the most popular Windows IRC clients.}}&lt;/ref&gt;<br /> <br /> Some programs which are extensible through [[plug-in (computing)|plug-ins]] also serve as platforms for IRC clients. For instance, a client called [[ERC (software)|ERC]], written entirely in [[Emacs Lisp]] is included in v.22.3 of Emacs. Therefore, any platform that can run Emacs can run ERC.<br /> <br /> A number of [[web browser]]s have built in IRC clients, such as [[Opera (Web browser)|Opera]] ([[Features of the Opera web browser#Legacy features|version 12.17 and earlier]])&lt;ref&gt;{{cite web| url=http://operawiki.info/OperaIRC| title = Opera Browser Wiki: IRC Client| accessdate = 2011-04-10}}&lt;/ref&gt; or the [[ChatZilla]] add-on for Mozilla [[Firefox]] (included as a built-in component of [[SeaMonkey]]). Web-based clients, such as [[Mibbit]] and open source [[KiwiIRC]], can run in most browsers.<br /> <br /> Games such as ''[[War§ow]]'',&lt;ref&gt;{{cite web<br /> | url = http://www.warsow.net/wiki/index.php?title=IRC_Module<br /> | title = Warsow Wiki: IRC Module<br /> | accessdate = 2011-04-10<br /> }}&lt;/ref&gt; ''[[Unreal Tournament]]'' (up to [[Unreal Tournament 2004]]),&lt;ref&gt;{{cite web<br /> | url = http://www.bcchardware.com/index.php?option=com_content&amp;task=view&amp;id=35&amp;Itemid=40<br /> | title = UT2004 Review<br /> | accessdate = 2011-04-10<br /> | last = Guenter<br /> | first = Daniel<br /> | date = 2004-06-21<br /> | publisher = BCCHardware<br /> }}&lt;/ref&gt; ''[[Uplink (video game)|Uplink]]'',&lt;ref&gt;{{cite web<br /> | url = http://guide.modlink.net/section11.php<br /> | title = The Ultimate Uplink Guide<br /> | accessdate = 2011-04-10<br /> }}&lt;/ref&gt; ''[[Spring Engine]]''-based games, [[0 A.D. (video game)|0 A.D.]] and ''[[ZDaemon]]'' have included IRC.&lt;ref&gt;{{cite web<br /> | url = http://doomwiki.org/wiki/ZDaemon#Other_utilities<br /> | title = ZDaemon – The Doom Wiki: Other utilities<br /> | accessdate = 2011-04-10<br /> }}&lt;/ref&gt;<br /> <br /> [[Ustream]]'s chat interface is [[IRC]] with custom authentication&lt;ref&gt;{{cite web<br /> | url = http://ustream-helpers.com/how-to/ircclient<br /> | title = How to setup an IRC client to connect and login to Ustream<br /> | accessdate = 2013-04-27<br /> | date = 2012-01-29<br /> | publisher = Ustream-Helpers<br /> }}&lt;/ref&gt; as well as [[Justin.tv]]'s.&lt;ref&gt;{{cite web<br /> | url = http://www.liquidsilver.org/2010/06/ustream-v-justin/<br /> | title = Ustream vs. Justin.tv<br /> | accessdate = 2011-07-13<br /> | date = 2010-06-20<br /> | publisher = LiquidSilver<br /> | author = Mauldor<br /> }}&lt;/ref&gt;<br /> <br /> ===Bots===<br /> {{Main|IRC bot}}<br /> <br /> A typical use of bots in IRC is to provide [[Internet Relay Chat services|IRC services]] or a specific functionality within a channel such as to host a chat-based game or provide notifications of external events.<br /> <br /> ===Bouncer===<br /> {{Main|BNC (software)}}<br /> A program that runs as a [[daemon (computer software)|daemon]] on a [[Server (computing)|server]] and functions as a persistent [[proxy server|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.{{Citation needed|date=April 2011}} 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.&lt;ref&gt;{{cite web<br /> | url = http://www.psybnc.at/readme.txt<br /> | title = psyBNC Readme<br /> | accessdate = 2011-04-10<br /> | publisher = psybnc.at<br /> }}&lt;/ref&gt;<br /> <br /> 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 [[secure shell|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.&lt;ref&gt;{{cite web<br /> | url = http://chriscarey.com/wordpress/2009/07/18/irc-with-irssi-proxy-screen/<br /> | title = IRC with irssi-proxy + screen<br /> | accessdate = 2011-04-10<br /> | last = Carey<br /> | first = Chris<br /> | date = 2009-07-18<br /> | publisher = chriscarey.com<br /> }}&lt;/ref&gt;<br /> <br /> 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.&lt;ref&gt;{{cite web<br /> | url = http://www.smuxi.org/blog/show/Detachable_Frontend_Core_Rewrite__UML__Windows_Port_kicking_Glade<br /> | title = Detachable Frontend (Core Rewrite) / UML / Windows Port (kicking Glade)<br /> | accessdate = 2010-07-25<br /> | date = 2004-12-25<br /> | publisher = smuxi.org<br /> }}&lt;/ref&gt;&lt;ref&gt;{{cite web<br /> | url = http://www.smuxi.org/page/About<br /> | title = About Smuxi<br /> | accessdate = 2011-04-10<br /> | publisher = smuxi.org<br /> }}&lt;/ref&gt;<br /> <br /> ==Search engines==<br /> There are numerous search engines available to aid the user in finding what they are looking for on IRC.&lt;ref&gt;{{cite book<br /> | last = Mutton<br /> | first = Paul<br /> | title = IRC Hacks<br /> | edition = 1st<br /> | date = 2004-07-27<br /> | publisher = [[O'Reilly Media]]<br /> | location = [[Sebastopol, California]]<br /> | isbn = 0-596-00687-X<br /> | pages = 44{{spaced ndash}}46<br /> | chapter = Users and Channels<br /> }}&lt;/ref&gt;&lt;ref&gt;{{cite book<br /> | last = Wang<br /> | first = Wallace<br /> | title = Steal this File Sharing Book<br /> | edition = 1st<br /> | date = 2004-10-25<br /> | publisher = [[No Starch Press]]<br /> | location = [[San Francisco, California]]<br /> | isbn = 1-59327-050-X<br /> | pages = 65{{spaced ndash}}67<br /> | chapter = Instant Messaging and Online Chat Rooms: Internet Relay Chat (IRC)<br /> }}&lt;/ref&gt; Generally the search engine consists of two parts, a &quot;back-end&quot; (or &quot;spider/crawler&quot;) and a front-end &quot;search engine&quot;.<br /> <br /> 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 database|Oracle]].{{Citation needed|date=January 2010}}<br /> <br /> The front-end &quot;search engine&quot; 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.<br /> <br /> Most search engines have their own spider that is a single application responsible for crawling IRC and indexing data itself; however, others are &quot;user based&quot; indexers. The latter rely on users to install their &quot;add-on&quot; 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|date=August 2009}}<br /> <br /> Many users have implemented their own [[ad hoc]] search engines using the logging features built into many IRC clients.<br /> <br /> ==Modern IRC==<br /> IRC has changed much over its life on the Internet. New server software has added a multitude of new features.<br /> * [[IRC services|Services]]: Network-operated bots to facilitate registration of nicknames and channels, sending messages for offline users and network operator functions.<br /> * 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 (&quot;cloaking&quot;) to protect from [[denial-of-service attack]]s.{{Citation needed|date=January 2010}}<br /> * 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 [http://www.blitzed.org/proxy 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|date=January 2010}}<br /> * 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|date=January 2010}}<br /> * [[Encryption]]: For the client-to-server leg of the connection [[Secure Sockets Layer|SSL]] might be used (messages cease to be secure once they are relayed to other users on standard connections, but it makes [[Man-in-the-middle attack|eavesdropping]] on or wiretapping an individual's IRC sessions difficult). For client-to-client communication, [[Secure Direct Client-to-Client|SDCC]] (Secure DCC) can be used.{{Citation needed|date=January 2010}}<br /> * 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.<br /> <br /> There is an effort of standardization and adding new features to the IRC protocol by IRCv3 working group.&lt;ref&gt;{{cite web<br /> | url = http://www.ircv3.org/<br /> | title = IRCv3 Working Group<br /> | accessdate = 2014-03-08<br /> }}&lt;/ref&gt;<br /> <br /> ==Character encoding==<br /> IRC still lacks a single globally accepted standard convention for how to transmit characters outside the 7-bit [[ASCII]] repertoire.<br /> IRC servers normally{{Clarify|date=July 2009}} transfer messages from a client to another client just as byte sequences, without any interpretation or recoding of [[character (computing)|characters]]. The IRC protocol (unlike e.g. [[MIME]] or [[HTTP]]) lacks mechanisms for announcing and negotiating 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:<br /> <br /> * '''7-bit era:''' In the early days of IRC, especially among [[North Germanic languages|Scandinavian]] and [[Finnish language]] users, national variants of [[ISO 646]] were the dominant [[character encoding]]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.&lt;ref name=&quot;rfc 1459 2.2 character codes&quot; /&gt; 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.<br /> <br /> * '''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|date=October 2008}}&lt;!-- Some networks offer MacCyrillic under the name «ISO 8859-5». But MacCyrillic has virtually nothing common with ISO 8859-5, this naming confusion just indicates the depth of programmers' ignorance. --Incnis Mrsi --&gt; and [[CP1251]], and since about 2000, modern Russian IRC networks convert between these different commonly used encodings of the [[Cyrillic script]].<br /> <br /> * '''Multi-byte era:''' For a long time, East Asian IRC channels with ideographic scripts in China, Japan, and Korea have been using multi-byte encodings such as [[Extended Unix Code|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ö|Merkistö]] &lt;small&gt;(Finnish)&lt;/small&gt;).<br /> <br /> 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.<br /> <br /> ==File sharing==<br /> Much like conventional [[Peer-to-peer|P2P]] 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.&lt;ref&gt;{{cite web<br /> | url = http://www.zdnet.com/news/pirated-movies-now-playing-on-a-server-near-you/122663<br /> | title = Pirated movies: Now playing on a server near you<br /> | accessdate = 2011-04-10<br /> | last = Vamosi<br /> | first = Robert<br /> | date = 2002-05-08<br /> | publisher = [[ZDNet]]<br /> }}&lt;/ref&gt;<br /> <br /> 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.&lt;ref&gt;{{cite web<br /> | url = http://www.macobserver.com/tip/2002/04/04.1.shtml<br /> | title = IRC 101: What Is It &amp; How Do I Use It?<br /> | accessdate = 2011-04-10<br /> | last = Sasaki<br /> | first = Darla<br /> | date = 2002-04-04<br /> | publisher = Macobserver.com<br /> }}&lt;/ref&gt; 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.<br /> <br /> ==See also==<br /> {{Portal|Internet Relay Chat}}<br /> * [[Chat room]]<br /> * [[Client-to-client protocol]]<br /> * [[Comparison of instant messaging protocols]]<br /> * [[Comparison of IRC clients]]<br /> * [[Comparison of IRC daemons]]<br /> &lt;!-- * [[Comparison of IRC services]] --&gt;<br /> * [[Internet slang]]<br /> * [[List of IRC commands]]<br /> * [[Serving channel]]<br /> * [[The Hamnet Players]]<br /> <br /> ==References==<br /> {{reflist|30em}}<br /> <br /> ==Bibliography==<br /> * {{cite IETF<br /> | title = A Discussion on Computer Network Conferencing<br /> | rfc = 1324<br /> | last = Reed<br /> | first = Darren<br /> | year = 1992<br /> | month = May<br /> | publisher = [[Internet Engineering Task Force|IETF]]<br /> | accessdate = 2009-10-30<br /> | ref = ietf<br /> }}<br /> * {{cite IETF<br /> | title = Internet Relay Chat Protocol<br /> | rfc = 1459<br /> | last1 = Oikarinen<br /> | first1 = Jarkko<br /> | authorlink1 = Jarkko Oikarinen<br /> | last2 = Reed<br /> | first2 = Darren<br /> | year = 1993<br /> | month = May<br /> | publisher = [[Internet Engineering Task Force|IETF]]<br /> | accessdate = 2009-10-30<br /> | ref = ietf<br /> }}<br /> * {{cite IETF<br /> | title = Internet Relay Chat: Architecture<br /> | rfc = 2810<br /> | last = Kalt<br /> | first = Christophe<br /> | year = 2000<br /> | month = April<br /> | publisher = [[Internet Engineering Task Force|IETF]]<br /> | accessdate = 2009-10-30<br /> | ref = ietf<br /> }}<br /> * {{cite IETF<br /> | title = Internet Relay Chat: Channel Management<br /> | rfc = 2811<br /> | last = Kalt<br /> | first = Christophe<br /> | year = 2000<br /> | month = April<br /> | publisher = [[Internet Engineering Task Force|IETF]]<br /> | accessdate = 2009-10-30<br /> | ref = ietf<br /> }}<br /> * {{cite journal<br /> | last = Loesch<br /> | first = Carl<br /> | date = 2003-07-17<br /> | title = Functionality Provided by Systems for Synchronous Conferencing<br /> | publisher = psyc.eu<br /> | url = http://www.psyc.eu/synconf<br /> | accessdate = 2011-04-10<br /> | ref = harv<br /> }}<br /> <br /> ==Further reading==<br /> * {{cite IETF<br /> | title = Internet Relay Chat: Client Protocol<br /> | rfc = 2812<br /> | last = Kalt<br /> | first = Christophe<br /> | year = 2000<br /> | month = April<br /> | publisher = [[Internet Engineering Task Force|IETF]]<br /> | accessdate = 2009-10-30<br /> }}<br /> * {{cite IETF<br /> | title = Internet Relay Chat: Server Protocol<br /> | rfc = 2813<br /> | last = Kalt<br /> | first = Christophe<br /> | year = 2000<br /> | month = April<br /> | publisher = [[Internet Engineering Task Force|IETF]]<br /> | accessdate = 2009-10-30<br /> }}<br /> * {{cite web<br /> | url = http://www.ibiblio.org/pub/academic/communications/logs/<br /> | title = Logs of major events in the online community<br /> | accessdate = 2011-04-08<br /> | publisher = [[ibiblio]]<br /> | location = [[Chapel Hill, North Carolina]]<br /> }}<br /> * {{cite web<br /> | url = http://www.alien.net.au/irc/<br /> | title = IRC technical information<br /> | accessdate = 2011-04-10<br /> | last = Butcher<br /> | first = Simon<br /> | publisher = alien.net.au<br /> }}<br /> <br /> ==External links==<br /> {{Wikibooks|Internet Technologies|IRC}}<br /> {{Commons category|IRC}}<br /> * {{Dmoz|Computers/Internet/Chat/IRC|IRC}}<br /> * [http://www.alien.net.au/irc/irc2numerics.html IRC/2 Numerics List]<br /> * [http://www.irc.org/history.html History of IRC]<br /> * [http://www.irc.org/ IRC.org] – Technical and Historical IRC6 information; Articles on the history of IRC<br /> * [http://www.irchelp.org/ IRChelp.org] – Internet Relay Chat (IRC) help archive; Large archive of IRC-related documents<br /> * [http://www.ircv3.org/ IRCv3] – Working group of developers, who add new features to the protocol and write specs for them<br /> <br /> {{IRC topics}}<br /> {{URI scheme}}<br /> {{Computer-mediated communication}}<br /> <br /> [[Category:Internet Relay Chat| ]]<br /> [[Category:Application layer protocols]]<br /> [[Category:Finnish inventions]]<br /> [[Category:Internet terminology]]<br /> [[Category:Virtual communities]]<br /> [[Category:1988 introductions]]</div> Categorization https://de.wikipedia.org/w/index.php?title=Matrix_(Kommunikationsprotokoll)&diff=177137608 Matrix (Kommunikationsprotokoll) 2015-03-28T00:36:44Z <p>Categorization: just trying to keep it going slowly, trying to read https://en.wikipedia.org/wiki/List_of_social_networking_websites to see examples for form.</p> <hr /> <div>&quot;Matrix is an open standard for decentralised communication, providing simple HTTP APIs and open source reference implementations for securely distributing and persisting JSON over an open federation of servers.&quot;<br /> <br /> just using IRC as first draft, editing live<br /> <br /> '''Matrix''' is an [[application layer]] protocol based on open standard for decentralised communication, providing simple HTTP APIs and open source reference implementations for securely distributing and persisting JSON over an open federation of servers. <br /> <br /> facilitates transfer of messages in the form of text. The chat process works on a client/server model of networking. IRC clients are computer programs that a user can install on their system. These clients are able to communicate with chat servers to transfer messages to other clients.&lt;ref name=&quot;rfc 1459 1 introduction&quot;&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Introduction<br /> | section = 1<br /> | page = 4<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; It is mainly designed for [[Many-to-many|group communication]] in discussion forums, called ''[[#Channels|channels]]'',&lt;ref&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = One-to-many<br /> | section = 3.2<br /> | page = 11<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; but also allows one-to-one communication via [[instant messaging|private message]]&lt;ref&gt;{{cite IETF<br /> | rfc = 2810<br /> | sectionname = One-To-One Communication<br /> | section = 5.1<br /> | page = 5<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; as well as [[Direct Client-to-Client|chat and data transfer]],&lt;ref&gt;{{cite web<br /> | url = http://www.irchelp.org/irchelp/rfc/dccspec.html<br /> | title = A description of the DCC protocol<br /> | accessdate = 2011-04-08<br /> | last = Rollo<br /> | first = Troy<br /> | publisher = irchelp.org<br /> }}&lt;/ref&gt; including [[file sharing]].&lt;ref&gt;{{cite book<br /> | last = Wang<br /> | first = Wallace<br /> | title = Steal this File Sharing Book<br /> | edition = 1st<br /> | date = 2004-10-25<br /> | publisher = [[No Starch Press]]<br /> | location = [[San Francisco, California]]<br /> | isbn = 1-59327-050-X<br /> | pages = 61{{spaced ndash}}67<br /> | chapter = Instant Messaging and Online Chat Rooms: Internet Relay Chat (IRC)<br /> }}&lt;/ref&gt;<br /> <br /> [[Comparison of Internet Relay Chat clients|Client software]] is available for every major operating system that supports Internet access.&lt;ref name=Sage&gt;{{cite web<br /> |title=SAGE IRC Channel<br /> |url=http://www.sage.org/about/irc.html<br /> |publisher=Sage – The USENIX Special Interest Group for Sysadmins<br /> |accessdate=18 April 2011<br /> |archiveurl=http://web.archive.org/web/20120207191923/http://sage.org/about/irc.html|archivedate=7 February 2012}}&lt;/ref&gt; As of April 2011, the top 100 IRC networks served more than half a million users at a time,&lt;ref name=&quot;irc networks top 100&quot;&gt;{{cite web<br /> | url = http://irc.netsplit.de/networks/top100.php<br /> | title = IRC Networks – Top 100<br /> | accessdate = 2011-04-08<br /> | publisher = irc.netsplit.de<br /> }}&lt;/ref&gt; with hundreds of thousands of channels&lt;ref name=&quot;irc networks top 100&quot; /&gt; operating on a total of roughly 1,500 servers&lt;ref name=&quot;irc networks top 100&quot; /&gt; out of roughly 3,200 servers worldwide.&lt;ref&gt;{{cite web<br /> | url = http://irc.netsplit.de/servers/summary.php<br /> | title = IRC Servers – Summary<br /> | accessdate = 2011-04-08<br /> | publisher = irc.netsplit.de<br /> }}&lt;/ref&gt;<br /> <br /> Over the past decade IRC usage has been declining: since 2003 it has lost 60% of its users (from 1 million to about 400,000 in 2014) and half of its channels (from half a million in 2003).&lt;ref&gt;{{cite web<br /> | url = http://royal.pingdom.com/2012/04/24/irc-is-dead-long-live-irc/<br /> | title = IRC is dead, long live IRC<br /> | accessdate = 2014-05-16<br /> }}&lt;/ref&gt;<br /> <br /> {{IPstack}}<br /> <br /> ==History {{anchor|MultiUser Talk}}== &lt;!-- This section is linked from redirect &quot;[[MultiUser Talk]]&quot; --&gt;<br /> IRC was created by [[Jarkko Oikarinen]] in August 1988 to replace a program called MUT (MultiUser Talk) on a [[Bulletin board system|BBS]] called OuluBox in [[Finland]].&lt;ref name=&quot;founding irc&quot;&gt;{{cite web<br /> | url = http://www.mirc.com/jarkko.html<br /> | title = Founding IRC<br /> | accessdate = 2011-04-08<br /> | last = Oikarinen<br /> | first = Jarkko<br /> | authorlink = Jarkko Oikarinen<br /> }}&lt;/ref&gt; Oikarinen found inspiration in a chat system known as [[Bitnet Relay]], which operated on the [[BITNET]].&lt;ref name=&quot;founding irc&quot; /&gt;<br /> <br /> IRC was used to report on the [[1991 Soviet coup d'état attempt]] throughout a [[media blackout]].&lt;ref&gt;{{cite web<br /> | url = http://www.ibiblio.org/pub/academic/communications/logs/report-ussr-gorbatchev<br /> | title = IRC transcripts from the time of the 1991 Soviet coup d'état attempt<br /> | accessdate = 2011-04-08<br /> | publisher = [[ibiblio]]<br /> | location = [[Chapel Hill, North Carolina]]<br /> }}&lt;/ref&gt; It was previously used in a similar fashion during the [[Gulf War]].&lt;ref&gt;{{cite web<br /> | url = http://www.ibiblio.org/pub/academic/communications/logs/Gulf-War/<br /> | title = IRC logs of events of the Gulf War<br /> | accessdate = 2011-04-08<br /> | publisher = [[ibiblio]]<br /> | location = [[Chapel Hill, North Carolina]]<br /> }}&lt;/ref&gt; Logs of these and other events are kept in the [[ibiblio]] archive.&lt;ref&gt;{{cite web<br /> | url = http://www.ibiblio.org/pub/academic/communications/logs/<br /> | title = Logs of major events in the online community<br /> | accessdate = 2011-04-08<br /> | publisher = [[ibiblio]]<br /> | location = [[Chapel Hill, North Carolina]]<br /> }}&lt;/ref&gt;<br /> <br /> ==Technical information==<br /> {{See also|IRCd}}<br /> &lt;!-- Commented out: [[File:MIRC 6.31 Screenshot.png|right|thumb|A Screenshot of [[mIRC]], an IRC client for [[Microsoft Windows|Windows]] versions.]] --&gt;<br /> [[File:Screenshot of HexChat in Windows 8.png|right|thumb|A screenshot of [[HexChat]], an IRC client for [[GTK]] environments.]]<br /> [[File:Xaric screen shot.jpg|right|thumb|Xaric, a text-based IRC client, in use on [[Mac OS X]]. Shown are two IRC channels and a private conversation with the software author.]]<br /> IRC is an open [[Network protocol|protocol]] that uses [[Transmission Control Protocol|TCP]]&lt;ref name=&quot;rfc 1459 1 introduction&quot; /&gt; and, optionally, [[Transport Layer Security|TLS]]. An [[IRC server]] can connect to other IRC servers to expand the IRC network.&lt;ref&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Servers<br /> | section = 1.1<br /> | page = 4<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; Users access IRC networks by connecting a client to a server.&lt;ref&gt;{{cite IETF<br /> | rfc = 2810<br /> | sectionname = Clients<br /> | section = 2.2<br /> | page = 3<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; There are many client implementations, such as [[mIRC]], [[HexChat]] and [[irssi]], 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.&lt;ref&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Clients<br /> | section = 1.2<br /> | page = 5<br /> | idanchor = ietf<br /> }}&lt;/ref&gt;<br /> <br /> IRC was originally a [[Text-based protocol|plain text protocol]] &lt;ref name=&quot;rfc 1459 1 introduction&quot; /&gt; (although later extended), which on request was assigned port [[List of TCP and UDP port numbers|194/TCP]] by [[Internet Assigned Numbers Authority|IANA]].&lt;ref&gt;{{cite web<br /> | url = http://www.iana.org/assignments/port-numbers<br /> | title = Port Numbers<br /> | accessdate = 2011-04-08<br /> | date = 2011-04-06<br /> | publisher = [[Internet Assigned Numbers Authority]]<br /> | location = [[Marina del Rey, California]]<br /> }}&lt;/ref&gt; However, the [[de facto standard|''de facto'' standard]] has always been to run IRC on 6667/TCP&lt;ref&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Connect message<br /> | section = 4.3.5<br /> | page = 29<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; and nearby port numbers (for example TCP ports 6660–6669, 7000)&lt;ref&gt;{{cite book<br /> | last1 = Lucas<br /> | first1 = Mark<br /> | last2 = Singh<br /> | first2 = Abhishek<br /> | last3 = Cantrell<br /> | first3 = Chris<br /> | editor-last = Henmi<br /> | editor-first = Anne<br /> | title = Firewall Policies and VPN Configurations<br /> | date = 2006-10-05<br /> | publisher = [[Syngress Publishing]]<br /> | location = [[Rockland, Massachusetts]]<br /> | isbn = 1-59749-088-1<br /> | page = 93<br /> | chapter = Defining a Firewall<br /> }}&lt;/ref&gt; to avoid having to run the [[IRCd]] software with [[Superuser|root privileges]].<br /> <br /> The protocol specified that characters were 8-bit but did not specify the character encoding the text was supposed to use.&lt;ref name=&quot;rfc 1459 2.2 character codes&quot;&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Character codes<br /> | section = 2.2<br /> | page = 7<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; This can cause problems when users using different clients and/or different platforms want to converse.<br /> <br /> 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|date=July 2007}}<br /> <br /> 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|date=July 2007}}<br /> <br /> Microsoft made an extension for IRC in 1998 via the proprietary [[IRCX]].&lt;ref&gt;{{cite IETF<br /> | title = Extensions to the Internet Relay Chat Protocol (IRCX)<br /> | draft = draft-pfenning-irc-extensions-04<br /> | last = Abraham<br /> | first = Dalen<br /> | year = 1998<br /> | month = June<br /> | publisher = [[Internet Engineering Task Force|IETF]]<br /> | accessdate = 2011-04-08<br /> }}&lt;/ref&gt; They later stopped distributing software supporting IRCX, instead developing the proprietary [[Microsoft Notification Protocol|MSNP]].<br /> <br /> The standard structure of a network of IRC servers is a [[Tree network|tree]].&lt;ref&gt;{{cite IETF<br /> | rfc = 2810<br /> | sectionname = Architecture<br /> | section = 3<br /> | pages = 3{{spaced ndash}}4<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; Messages are routed along only necessary branches of the tree but network state is sent to every server&lt;ref&gt;{{cite IETF<br /> | rfc = 2810<br /> | sectionname = Introduction<br /> | section = 1<br /> | page = 2<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; 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&lt;ref&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Algorithms<br /> | section = 9.3<br /> | page = 64<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; 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&lt;ref&gt;{{cite IETF<br /> | rfc = 2810<br /> | sectionname = Network Congestion<br /> | section = 6.3<br /> | pages = 7{{spaced ndash}}8<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; 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.&lt;ref&gt;{{cite IETF<br /> | rfc = 2810<br /> | sectionname = To A Channel<br /> | section = 5.2.1<br /> | pages = 5{{spaced ndash}}6<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; This is a strength in comparison to non-multicasting protocols such as [[Simple Mail Transfer Protocol]] (SMTP) or [[Extensible Messaging and Presence Protocol]] (XMPP).<br /> <br /> An IRC daemon can also be used on a local area network (LAN). IRC can thus be used to facilitate communication between people of the own network (internal communication).&lt;ref&gt;{{cite web|url=http://computerquestionhelp.com/content/how-guide-setup-your-own-irc-server-using-personal-or-dedicated-system-or-server-top-freewar|title=IRC daemons for LAN|publisher=|accessdate=2 October 2014}}&lt;/ref&gt;&lt;ref&gt;{{cite web|url=http://www.irc-wiki.org/IRC_server|title=Running an own IRC server|publisher=|accessdate=2 October 2014}}&lt;/ref&gt;<br /> <br /> ===Commands and replies===<br /> {{Main|List of Internet Relay Chat commands}}<br /> IRC has a line-based structure with the client sending single-line messages to the server,&lt;ref&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Message format in 'pseudo' BNF<br /> | section = 2.3.1<br /> | page = 8<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; receiving replies to those messages&lt;ref&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Numeric replies<br /> | section = 2.4<br /> | page = 10<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; 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|date=May 2009}}<br /> <br /> 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.&lt;ref&gt;{{cite web<br /> | url = http://www.shanemcc.co.uk/irc/#listmode<br /> | title = IRC List Modes – List mode extension showing pair confusion for lists<br /> | accessdate = 2011-04-08<br /> | date = 2009-11-25<br /> }}&lt;/ref&gt;<br /> <br /> ===Channels===<br /> The basic means of communicating to a group of users in an established IRC session is through a ''[[chat room|channel]]''.&lt;ref name=&quot;rfc 1459 3.2.2 to a group (channel)&quot;&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = To a group (channel)<br /> | section = 3.2.2<br /> | page = 11<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; Channels on a network can be displayed using the IRC command ''LIST'',&lt;ref&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = List message<br /> | section = 4.2.6<br /> | page = 24<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; which lists all currently available channels that do not have the modes +s or +p set, on that particular network.<br /> <br /> Users can ''join'' a channel using the ''JOIN'' command,&lt;ref name=&quot;rfc 1459 4.2.1 join message&quot;&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Join message<br /> | section = 4.2.1<br /> | page = 19<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; in most clients available as ''/join #channelname''. Messages sent to the joined channels are then relayed to all other users.&lt;ref name=&quot;rfc 1459 3.2.2 to a group (channel)&quot; /&gt;<br /> <br /> Channels that are available across an entire IRC network are prefixed with a '#', while those local to a server use '&amp;'.&lt;ref&gt;{{cite IETF<br /> | rfc = 2811<br /> | sectionname = Channel Scope<br /> | section = 2.2<br /> | page2 = 3{{spaced ndash}}4<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; Other less common channel types include '+' channels—'modeless' channels without operators&amp;nbsp;—&lt;ref&gt;{{cite IETF<br /> | rfc = 2811<br /> | sectionname = Channel Properties<br /> | section = 2.3<br /> | page = 4<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; and '!' channels, a form of [[#Nick/channel delay|timestamped]] channel on normally non-timestamped networks.&lt;ref&gt;{{cite IETF<br /> | rfc = 2811<br /> | sectionname = Channel lifetime<br /> | section = 3<br /> | page = 5<br /> | idanchor = ietf<br /> }}&lt;/ref&gt;<br /> <br /> ===Modes===<br /> Users and channels may have ''modes'' that are represented by single case-sensitive letters&lt;ref&gt;{{cite IETF<br /> | rfc = 2811<br /> | sectionname = Channel Modes<br /> | section = 4<br /> | page = 7<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; and are set using the ''MODE'' command.&lt;ref&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Mode message<br /> | section = 4.2.3<br /> | page = 21<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; User modes and channel modes are separate and can use the same letter to mean different things (e.g. usermode &quot;i&quot; is invisible mode whilst channelmode &quot;i&quot; is invite only.&lt;ref&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Channel modes<br /> | section = 4.2.3.1<br /> | pages = 21{{spaced ndash}}22<br /> | idanchor = ietf<br /> }}&lt;/ref&gt;) 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.<br /> <br /> 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.&lt;ref&gt;{{cite IETF<br /> | rfc = 2811<br /> | sectionname = Channel Access Control<br /> | section = 4.3<br /> | pages = 10{{spaced ndash}}11<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; Modes that apply to users on a channel have an associated symbol that is used to represent the mode in names replies&lt;ref name=&quot;rfc 1459 p.51 rpl_namreply&quot;&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Command responses: 353 RPL_NAMREPLY<br /> | page = 51<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; (sent to clients on first joining a channel&lt;ref name=&quot;rfc 1459 4.2.1 join message&quot; /&gt; 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.<br /> <br /> 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.&lt;ref&gt;{{cite web<br /> | url = http://www.irc.org/tech_docs/005.html<br /> | title = The 005 numeric: ISUPPORT<br /> | accessdate = 2011-04-10<br /> | last = Roeckx<br /> | first = Kurt<br /> | date = 2004-10-14<br /> | publisher = irc.org<br /> }}&lt;/ref&gt;&lt;ref&gt;{{cite IETF<br /> | title = IRC RPL_ISUPPORT Numeric Definition<br /> | draft = draft-brocklesby-irc-isupport-03<br /> | last = Brocklesby<br /> | first = Edward<br /> | year = 2002<br /> | month = September<br /> | publisher = [[Internet Engineering Task Force|IETF]]<br /> | accessdate = 2011-04-10<br /> }}&lt;/ref&gt;<br /> <br /> 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,&lt;ref name=&quot;rfc 1459 p.51 rpl_namreply&quot; /&gt; 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.<br /> <br /> ====Standard (RFC 1459) modes====<br /> <br /> {| class=&quot;wikitable&quot;<br /> |+ User modes<br /> |-<br /> ! Letter<br /> ! Symbol<br /> ! Description<br /> |-<br /> | '''i'''<br /> |<br /> | Invisible—cannot be seen without a common channel or knowing the exact name<br /> |-<br /> | '''s'''<br /> |<br /> | Receives server notices<br /> |-<br /> | '''w'''<br /> |<br /> | Receives wallops&lt;ref&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Operwall message<br /> | section = 5.6<br /> | page = 41<br /> | idanchor = ietf<br /> }}&lt;/ref&gt;<br /> |-<br /> | '''o'''<br /> |<br /> | User is an IRC operator (ircop)<br /> |}<br /> <br /> {| class=&quot;wikitable&quot;<br /> |+ Channel modes<br /> |-<br /> ! Letter<br /> ! Symbol<br /> ! Parameter(s)<br /> ! Description<br /> |-<br /> | '''o'''<br /> | @<br /> | Name of affected user<br /> | Channel operator—can change channel modes and kick users out of the channel among other things<br /> |-<br /> | '''s'''<br /> |<br /> |<br /> | Secret channel—not shown in channel list or user whois except to users already on the channel<br /> |-<br /> | '''p'''<br /> |<br /> |<br /> | Private channel—listed in channel list as &quot;prv&quot; according to &lt;nowiki&gt;RFC 1459&lt;/nowiki&gt;<br /> |-<br /> | '''n'''<br /> |<br /> |<br /> | Users cannot send messages to the channel externally<br /> |-<br /> | '''m'''<br /> | <br /> |<br /> | Channel is moderated (only those who hold operator or voice status on the channel can send messages to it)<br /> |-<br /> | '''i'''<br /> |<br /> |<br /> | Only users with invites may enter the channel.<br /> |-<br /> | '''t'''<br /> |<br /> |<br /> | Only operators can change the channel topic.<br /> |-<br /> | '''l'''<br /> |<br /> | Limit number<br /> | Limits number of users able to be on channel (when full, no new users can join)<br /> |-<br /> | '''b'''<br /> |<br /> | Ban mask (nick!user@host with wildcards allowed)<br /> | Bans [[hostmask]]s from channel<br /> |-<br /> | '''v''' &lt;!-- That does belong here with the channel modes. It's not a user mode --&gt;<br /> | +<br /> | Name of affected user<br /> | Gives a user voice status on channel (see +m above)<br /> |-<br /> | '''k'''<br /> | <br /> | New channel key<br /> | Sets a channel key such that only users knowing the key can enter<br /> |}<br /> <br /> Many daemons and networks have added extra modes or modified the behavior of modes in the above list.&lt;ref&gt;{{cite web<br /> | url = http://www.alien.net.au/irc/usermodes.html<br /> | title = IRC User Modes List<br /> | accessdate = 2011-04-10<br /> | last = Butcher<br /> | first = Simon<br /> | date = 2005-01-12<br /> | publisher = alien.net.au<br /> }}&lt;/ref&gt;&lt;ref&gt;{{cite web<br /> | url = http://www.alien.net.au/irc/chanmodes.html<br /> | title = IRC Channel Modes List<br /> | accessdate = 2011-04-10<br /> | last = Butcher<br /> | first = Simon<br /> | date = 2005-01-12<br /> | publisher = alien.net.au<br /> }}&lt;/ref&gt;&lt;ref&gt;{{cite web<br /> | url = http://www.alien.net.au/irc/servermodes.html<br /> | title = IRC Server Modes List<br /> | accessdate = 2011-04-10<br /> | last = Butcher<br /> | first = Simon<br /> | date = 2005-01-12<br /> | publisher = alien.net.au<br /> }}&lt;/ref&gt;&lt;ref&gt;{{cite web<br /> | url = http://webtoman.com/opera/panel/ircdmodes.html<br /> | title = IRCd Modes<br /> | accessdate = 2011-04-10<br /> | last = Olsen<br /> | first = Tommy<br /> | publisher = webtoman.com<br /> }}&lt;/ref&gt;<br /> <br /> ===Channel Operators===<br /> A ''Channel Operator'' is a [[Client (computing)|client]] on an [[IRC channel]] that manages the channel.<br /> IRC Channel Operators can be easily seen by a symbol &quot;@&quot;, or a Latin letter &quot;+o&quot;/&quot;o&quot;.<br /> On most networks, an operator can:<br /> * Kick a user<br /> * Ban a user<br /> * Give another user IRC Channel Operator Status or IRC Channel Voice Status.<br /> * Change the IRC Channel topic.<br /> * Change the IRC Channel Mode locks.<br /> <br /> ===IRC Operators===<br /> {{main|Internet Relay Chat operator}}<br /> There are also users who maintain elevated rights on their local server, or the entire network; these are called IRC operators,&lt;ref name=&quot;rfc 1459 1.2.1 operators&quot;&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Operators<br /> | section = 1.2.1<br /> | page = 5<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; sometimes shortened to IRCops or Opers (not to be confused with channel operators). As the implementation of the IRCd varies, so do the privileges of the IRC operator on the given IRCd. RFC 1459&lt;ref name=&quot;rfc 1459 1.2.1 operators&quot; /&gt; claims that IRC operators are &quot;a necessary evil&quot; to keep clean state of the network, and 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 are usually allowed to disconnect clients and completely ban IPs or complete subnets. Networks that carry services (Nickserv et al.) usually allow their IRC operators also to handle basic &quot;Ownership&quot; 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.<br /> <br /> ===Hostmasks===<br /> A hostmask is a unique identifier of an IRC [[client (computing)|client]] connected to an IRC [[Server (computing)|server]].&lt;ref name=&quot;thiedeke-2003&quot;&gt;{{cite book<br /> | last = Thiedeke<br /> | first = Udo<br /> | title = Virtuelle Gruppen: Charakteristika und Problemdimensionen<br /> | url = http://books.google.com/?id=aQ74THYRyYsC&amp;lpg=PA314&amp;pg=PA315#v=onepage&amp;q=hostmask<br /> | accessdate = 2010-03-30<br /> | edition = 2nd<br /> | date = 2003-09-23<br /> | publisher = {{Ill|de|Springer VS}}<br /> | language = German<br /> | isbn = 3-531-33372-0<br /> | pages = 314, 337<br /> | chapter = Nicola Döring, Alexander Schestag<br /> }}&lt;/ref&gt;&lt;ref name=&quot;rogers-2005&quot;&gt;{{cite book<br /> | last = Rogers<br /> | first = Russ<br /> | editor-last = Devost<br /> | editor-first = Matthew G.<br /> | title = Hacking a Terror Network: The Silent Threat of Covert Channels<br /> | url = http://books.google.com/books?id=e3ggsGgTzUgC&amp;lpg=PA10&amp;pg=PA10#v=onepage&amp;q=Hostmask%20IRC<br /> | accessdate = 2010-03-30<br /> | edition = 1st<br /> | date = 2004-12-01<br /> | publisher = [[Syngress Publishing]]<br /> | location = [[Rockland, Massachusetts]]<br /> | isbn = 1-928994-98-9<br /> | page = 10<br /> | chapter = The Mind of Terror<br /> }}&lt;/ref&gt; IRC [[IRCd|server]]s, [[Internet Relay Chat services|services]], and other clients including [[Internet Relay Chat bot|bots]] can use it to identify a specific IRC session.<br /> <br /> The format of a hostmask is &lt;code&gt;nick!user@host&lt;/code&gt;. The hostmask looks similar to, but should not be confused with an [[e-mail address]].<br /> <br /> The nick part is the nickname chosen by the user and may be changed while connected.<br /> The user part is the username reported by [[ident protocol|ident]] on the client.&lt;ref name=&quot;petersen-2002&quot;&gt;{{cite book<br /> | editor-last = Petersen<br /> | editor-first = Julie K.<br /> | title = The Telecommunications Illustrated Dictionary<br /> | url = http://books.google.com/books?id=b2mMzS0hCkAC&amp;lpg=PA500&amp;pg=PA500#v=onepage&amp;q=Hostmask<br /> | accessdate = 2010-03-30<br /> | edition = 2nd<br /> | date = 2002-05-29<br /> | publisher = [[CRC Press]]<br /> | isbn = 0-8493-1173-X<br /> | page = 500<br /> | chapter = Internet Relay Chat<br /> }}&lt;/ref&gt; If ident is not available on the client, the username specified when the client connected is used after being prefixed with a [[tilde]].&lt;ref name=&quot;freenode faq&quot;&gt;{{cite web<br /> | url = http://freenode.net/faq.shtml<br /> | title = Frequently-Asked Questions<br /> | accessdate = 2010-03-30<br /> | publisher = [[freenode]]<br /> }}&lt;/ref&gt;<br /> <br /> The host part is the [[hostname]] the client is connecting from. If the [[IP address]] of the client cannot be resolved to a valid [[hostname]] by the server, it is used instead of the hostname.<br /> <br /> Because of the [[privacy]] implications of exposing the IP address or hostname of a client, some [[IRCd|IRC daemons]] also provide privacy features, such as InspIRCD or UnrealIRCD's &quot;+x&quot; mode. This [[Cryptographic hash function|hashes]] a client IP address or masks part of a client's hostname, making it unreadable to users other than [[Internet Relay Chat#IRC Operators|IRCops]]. Users may also have the option of requesting a &quot;virtual host&quot; (or &quot;vhost&quot;), to be displayed in the hostmask to allow further anonymity. Some IRC networks such as [[Freenode]] use these as &quot;cloaks&quot; to indicate that a user is affiliated with a group or project.&lt;ref&gt;{{cite web<br /> | url = http://meta.wikimedia.org/wiki/IRC/Cloaks<br /> | title = IRC/Cloaks<br /> | accessdate = 2011-11-27<br /> | publisher = [[Wikimedia]]<br /> }}&lt;/ref&gt;<br /> <br /> ==Challenges==<br /> Issues in the original design of IRC were the amount of shared state data&lt;ref&gt;{{cite IETF<br /> | rfc = 1324<br /> | sectionname = Size<br /> | section = 2.5.1<br /> | pages = 5{{spaced ndash}}6<br /> | idanchor = ietf<br /> }}&lt;/ref&gt;&lt;ref&gt;{{cite IETF<br /> | rfc = 2810<br /> | sectionname = Scalability<br /> | section = 6.1<br /> | page = 7<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; being a limitation on its scalability,&lt;ref&gt;{{harvnb|Loesch|2003}} 1.2.1 Growth&lt;/ref&gt; the absence of unique user identifications leading to the nickname collision problem,&lt;ref&gt;{{cite IETF<br /> | rfc = 1324<br /> | sectionname = User identification<br /> | section = 5.4.1<br /> | page = 10<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; lack of protection from netsplits by means of cyclic routing,&lt;ref&gt;{{cite IETF<br /> | rfc = 1324<br /> | sectionname = Trees and cycles<br /> | section = 5.4.2<br /> | page = 10<br /> | idanchor = ietf<br /> }}&lt;/ref&gt;&lt;ref&gt;{{harvnb|Loesch|2003}} 1.2.2 Network failures&lt;/ref&gt; the trade-off in scalability for the sake of real-time user presence information,&lt;ref&gt;{{cite IETF<br /> | rfc = 1324<br /> | sectionname = State Information problems<br /> | section = 2.1<br /> | page = 4<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; protocol weaknesses providing a platform for abuse,&lt;ref&gt;{{harvnb|Loesch|2003}} 1.2.3 Sociological and security aspects&lt;/ref&gt; no transparent and optimizable message passing,&lt;ref&gt;{{cite IETF<br /> | rfc = 1324<br /> | sectionname = Message passing<br /> | section = 5.2.1<br /> | page = 7<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; and no encryption.&lt;ref&gt;{{cite IETF<br /> | rfc = 1324<br /> | sectionname = Conference security<br /> | section = 5.2.4<br /> | page = 8<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; Some of these issues have been addressed in ''Modern IRC''.<br /> <br /> ===Attacks===<br /> Because IRC connections are usually unencrypted and typically span long time periods, they are an attractive target for [[Denial-of-service attack|Dos/DDoS attackers]] and [[Hacker (computer security)|hackers]]. Because of this, careful security policy is necessary to ensure that an IRC network is not susceptible to an attack such as a [[Internet Relay Chat takeover|takeover]] war. IRC networks may also [[K-line (IRC)|K-line]] or [[G-line]] users or networks that have a harming effect.<br /> <br /> A small number of IRC servers support [[Transport Layer Security|SSL/TLS]] 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 &lt;code&gt;+S&lt;/code&gt;) to only allow SSL-connected users on the channel, while disallowing operator identification in clear text, to better utilize the advantages that SSL provides.&lt;ref&gt;{{cite web<br /> | url = http://esper.net/help.php<br /> | title = Getting Help on EsperNet<br /> | publisher = The EsperNet IRC Network<br /> | accessdate = 2012-07-31<br /> }}&lt;/ref&gt;&lt;ref&gt;{{cite web<br /> | url = http://www.dal.net/news/shownews.php?id=67<br /> | title = New Feature: SSL For Users<br /> | author = brandon<br /> | date = 2010-05-18<br /> | publisher = DALnet<br /> | accessdate = 2012-07-31<br /> }}&lt;/ref&gt;<br /> <br /> IRC served as an early laboratory for many kinds of Internet attacks, such as using fake [[Internet Control Message Protocol|ICMP]] unreachable messages to break [[Transmission Control Protocol|TCP]]-based IRC connections ([[Nuke (computer)|nuking]]) to annoy users or facilitate [[Internet Relay Chat takeover|takeover]]s.<br /> <br /> ===Abuse prevention===<br /> One of the most contentious technical issues surrounding IRC implementations, which survives to this day, is the merit of &quot;Nick/Channel Delay&quot; vs. &quot;Timestamp&quot; protocols. Both methods exist to solve the problem of [[denial-of-service attack]]s, but take very different approaches.<br /> 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 &quot;split&quot; 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 &quot;combined&quot; 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').<br /> This was often abused to &quot;mass-kill&quot; all users on a channel, thus creating &quot;opless&quot; 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.<br /> <br /> ====Nick/channel delay====<br /> 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, 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.<br /> <br /> ====Timestamping====<br /> The alternative, the timestamp or ''TS'' protocol, took a different approach. Every nickname and channel on the network was assigned a timestamp{{spaced ndash}}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 &quot;losing&quot; side of the split lost their channel operator status.<br /> 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 &quot;desyncs&quot; (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.<br /> 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.<br /> <br /> ====SAVE====<br /> In recent versions of the IRCnet ircd, as well as ircds using the TS6 protocol (including Charybdis), 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 (although some ircds, namely IRCnet and InspIRCd, allow clients to switch to their own UID as the nickname).<br /> <br /> If two clients with the same nickname join from different sides of a netsplit (&quot;nick collision&quot;), the first server to see this collision will force ''both'' clients to change their nick to their UID, thus saving both clients from being disconnected. On IRCnet, the nickname will also be locked for some time (ND) to prevent both clients from changing back to the original nickname, thus colliding again.<br /> <br /> ==Networks==<br /> [[File:Tolsun 2.jpg|thumb|right|The first IRC server, tolsun.oulu.fi, a [[Sun-3]] server on display near the [[University of Oulu]] computer centre. (2001)]]<br /> <br /> There are thousands of running IRC networks in the world. They run various implementations of [[IRC server]]s, and are administered by various groups of [[IRC operator]]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 software implementations.<br /> <br /> The largest IRC networks have traditionally been grouped as the &quot;Big Four&quot;&lt;ref name=&quot;the book of irc&quot;&gt;{{cite book<br /> | last = Charalabidis<br /> | first = Alex<br /> | title = The Book of IRC: The Ultimate Guide to Internet Relay Chat<br /> | edition = 1st<br /> | date = 1999-12-15<br /> | publisher = No Starch Press<br /> | location = [[San Francisco, California]]<br /> | isbn = 1-886411-29-8<br /> | page = 61<br /> | chapter = IRCing On The Macintosh: Ircle<br /> | quote = On large networks such as the Big Four{{mdash}} EFnet, IRCnet, Undernet, and DALnet{{mdash}} 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.<br /> }}&lt;/ref&gt;&lt;ref name=&quot;encyclopedia of new media&quot;&gt;{{cite book<br /> | editor-last = Jones<br /> | editor-first = Steve<br /> | title = Encyclopedia of New Media: An Essential Reference to Communication and Technology<br /> | edition = 1st<br /> | date = 2002-12-10<br /> | publisher = [[SAGE Publications]]<br /> | location = [[Thousand Oaks, California]]<br /> | isbn = 0-7619-2382-9<br /> | page = 257<br /> | chapter = Internet Relay Chat<br /> | quote = Today there are hundreds of independent IRC networks, but the &quot;Big Four&quot; are EFNet, UnderNet, Dalnet, and IRCnet.<br /> }}&lt;/ref&gt;&lt;ref name=&quot;the imac book&quot;&gt;{{cite book<br /> | last = Rittner<br /> | first = Don<br /> | title = The iMac Book<br /> | edition = 1st<br /> | date = 1999-03-03<br /> | publisher = Coriolis Group<br /> | location = [[Scottsdale, Arizona]]<br /> | isbn = 1-57610-429-X<br /> | page = 215<br /> | chapter =<br /> | quote = There are several large networks: EFnet, UnderNET, DALnet, and IRCnet make up the Big Four.<br /> }}&lt;/ref&gt;&lt;ref name=&quot;information technology for management&quot;&gt;{{cite book<br /> | last1 = Turban<br /> | first1 = Efraim<br /> | last2 = Leidner<br /> | first2 = Dorothy<br /> | last3 = McLean<br /> | first3 = Ephraim<br /> | last4 = Wetherbe<br /> | first4 = James<br /> | title = Information Technology for Management: Transforming Organizations in the Digital Economy<br /> | edition = 5th<br /> | date = 2005-02-07<br /> | publisher = [[John Wiley &amp; Sons]]<br /> | location = [[Hoboken, New Jersey]]<br /> | isbn = 0-471-70522-5<br /> | pages = 106{{spaced ndash}}107<br /> | chapter = Communication<br /> | quote = The largest networks have traditionally been grouped as the &quot;Big Four&quot;: EFNet, IrcNet, QuakeNet, and UnderNet.<br /> }}&lt;/ref&gt;{{mdash}} 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.<br /> <br /> Historically the &quot;Big Four&quot; were:&lt;ref name=&quot;the book of irc&quot; /&gt;&lt;ref name=&quot;encyclopedia of new media&quot; /&gt;&lt;ref name=&quot;the imac book&quot; /&gt;<br /> * [[EFnet]]<br /> * [[IRCnet]]<br /> * [[Undernet]]<br /> * [[DALnet]]<br /> <br /> IRC reached 6 million simultaneous users in 2001 and 10 million users in 2003.{{citation needed|date=January 2015}}<br /> <br /> As of March 2015 the largest IRC networks were:<br /> <br /> * [[freenode]] – around 99k users at peak hours<br /> * [[IRCNet]] – around 44k users at peak hours<br /> * [[QuakeNet]] – around 36k users at peak hours<br /> * [[EFnet]] – around 26k users at peak hours<br /> * [[Undernet]] – around 25k users at peak hours<br /> * [[rizon]] – around 25k users at peak hours<br /> <br /> Today, the top 100 IRC networks have around [http://irc.netsplit.de/networks/top100.php 460k users connected at peak hours].<br /> <br /> ===Timeline===<br /> <br /> {{Simple Horizontal timeline<br /> <br /> |from=1990<br /> |to=2014<br /> |inc=2<br /> <br /> |styleDefault-borderbottom=solid 0.1em black;<br /> <br /> |row1=timeline<br /> |row1-style=styleDefault<br /> |row1-bordertop=solid 0.1em black;<br /> |row1-1-color=#ffbb33<br /> |row1-1-from=1990<br /> |row1-1-to=2014<br /> |row1-1-text=[[EFnet]]<br /> <br /> |row2=timeline<br /> |row2-style=styleDefault<br /> |row2-1-from=1990<br /> |row2-1-to=1992<br /> |row2-2-to=2014<br /> |row2-2-text=[[Undernet]]<br /> |row2-2-color=#33b5e5<br /> <br /> |row3=timeline<br /> |row3-style=styleDefault<br /> |row3-1-from=1990<br /> |row3-1-to=1994<br /> |row3-2-color=#cc0000<br /> |row3-2-to=2014<br /> |row3-2-text=[[DALnet]]<br /> <br /> |row4=timeline<br /> |row4-style=styleDefault<br /> |row4-1-from=1990<br /> |row4-1-to=1995<br /> |row4-2-color=#aa66cc<br /> |row4-2-to=2014<br /> |row4-2-text=[[freenode]]<br /> <br /> |row5=timeline<br /> |row5-style=styleDefault<br /> |row5-1-from=1990<br /> |row5-1-to=1997<br /> |row5-2-color=#99cc00<br /> |row5-2-to=2014<br /> |row5-2-text=[[IRCnet]]<br /> <br /> |row6=timeline<br /> |row6-style=styleDefault<br /> |row6-1-from=1990<br /> |row6-1-to=1997<br /> |row6-2-color=#ff4444<br /> |row6-2-to=2014<br /> |row6-2-text=[[QuakeNet]]<br /> <br /> |row7=timeline<br /> |row7-1-from=1990<br /> |row7-1-to=2002<br /> |row7-2-color=#ff44ff<br /> |row7-2-to=2014<br /> |row7-2-text=[[Rizon]]<br /> <br /> |row8=scale<br /> |caption=IRC networks<br /> }}<br /> <br /> ==URI scheme==<br /> There are three recognized [[URI scheme]]s for Internet Relay Chat, irc, irc6, and ircs,&lt;ref&gt;{{cite web<br /> | url = http://www.iana.org/assignments/uri-schemes.html<br /> | title = Uniform Resource Identifier (URI) Schemes<br /> | publisher = Internet Assigned Numbers Authority | accessdate = 2012-10-14<br /> }}&lt;/ref&gt; that (when supported) allows [[hyperlink]]s of various forms, including<br /> &lt;nowiki&gt;irc://&lt;host&gt;[:&lt;port&gt;]/[&lt;channel&gt;[?&lt;channel_keyword&gt;]]&lt;/nowiki&gt;<br /> (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.&lt;ref&gt;{{cite IETF<br /> | title = Uniform Resource Locator Schemes for Internet Relay Chat Entities<br /> | draft = draft-butcher-irc-url-04<br /> | last = Butcher<br /> | first = Simon<br /> | year = 2003<br /> | month = January<br /> | publisher = [[Internet Engineering Task Force|IETF]]<br /> | accessdate = 2011-04-10<br /> }}&lt;/ref&gt; (This can be used within the client itself, or from another application such as a Web browser). irc is the default URI, irc6 specifies a connection to be made using IPv6, and ircs specifies a secure connection.<br /> <br /> Per the specification, the usual [[hash symbol]] (#) will be prepended to channel names that 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.<br /> <br /> Some implementations allow multiple channels to be specified, separated by commas.{{Citation needed|date=April 2011}}<br /> <br /> ==Clients==<br /> <br /> ===Client software===<br /> {{Details|Comparison of Internet Relay Chat clients}}<br /> [[File:Ircnetz-Schema.svg|right|thumb|Scheme of an IRC network with [[Client (computing)|normal clients]] (green), [[IRC bot|bots]] (blue) and [[Bouncer (networking)|bouncers]] (orange)]]<br /> <br /> Client software exists for various operating systems or software packages, as well as web-based or inside games. Many different clients are available for the various [[operating systems]], including [[Microsoft Windows|Windows]], [[Unix]] &amp; [[Linux]], [[Mac OS X]] and mobile operating systems (such as [[iOS]] and [[Android (operating system)|Android]]). On Windows, [[mIRC]] is one of the most popular clients.&lt;ref&gt;{{cite book|last=Smith|first=Roderick W.|title=The Multi-Boot Configuration Handbook| url= http://books.google.com/books?id=OuPtI5fHhBoC|accessdate=2010-07-25|series= Handbook Series| date= 2000-04-08| publisher= [[Que Publishing]]| location= [[Upper Saddle River, New Jersey]]|isbn= 0-7897-2283-6|page=289|chapter=The Internet: Using IRC to Get Help|quote= mIRC is one of the most popular Windows IRC clients.}}&lt;/ref&gt;<br /> <br /> Some programs which are extensible through [[plug-in (computing)|plug-ins]] also serve as platforms for IRC clients. For instance, a client called [[ERC (software)|ERC]], written entirely in [[Emacs Lisp]] is included in v.22.3 of Emacs. Therefore, any platform that can run Emacs can run ERC.<br /> <br /> A number of [[web browser]]s have built in IRC clients, such as [[Opera (Web browser)|Opera]] ([[Features of the Opera web browser#Legacy features|version 12.17 and earlier]])&lt;ref&gt;{{cite web| url=http://operawiki.info/OperaIRC| title = Opera Browser Wiki: IRC Client| accessdate = 2011-04-10}}&lt;/ref&gt; or the [[ChatZilla]] add-on for Mozilla [[Firefox]] (included as a built-in component of [[SeaMonkey]]). Web-based clients, such as [[Mibbit]] and open source [[KiwiIRC]], can run in most browsers.<br /> <br /> Games such as ''[[War§ow]]'',&lt;ref&gt;{{cite web<br /> | url = http://www.warsow.net/wiki/index.php?title=IRC_Module<br /> | title = Warsow Wiki: IRC Module<br /> | accessdate = 2011-04-10<br /> }}&lt;/ref&gt; ''[[Unreal Tournament]]'' (up to [[Unreal Tournament 2004]]),&lt;ref&gt;{{cite web<br /> | url = http://www.bcchardware.com/index.php?option=com_content&amp;task=view&amp;id=35&amp;Itemid=40<br /> | title = UT2004 Review<br /> | accessdate = 2011-04-10<br /> | last = Guenter<br /> | first = Daniel<br /> | date = 2004-06-21<br /> | publisher = BCCHardware<br /> }}&lt;/ref&gt; ''[[Uplink (video game)|Uplink]]'',&lt;ref&gt;{{cite web<br /> | url = http://guide.modlink.net/section11.php<br /> | title = The Ultimate Uplink Guide<br /> | accessdate = 2011-04-10<br /> }}&lt;/ref&gt; ''[[Spring Engine]]''-based games, [[0 A.D. (video game)|0 A.D.]] and ''[[ZDaemon]]'' have included IRC.&lt;ref&gt;{{cite web<br /> | url = http://doomwiki.org/wiki/ZDaemon#Other_utilities<br /> | title = ZDaemon – The Doom Wiki: Other utilities<br /> | accessdate = 2011-04-10<br /> }}&lt;/ref&gt;<br /> <br /> [[Ustream]]'s chat interface is [[IRC]] with custom authentication&lt;ref&gt;{{cite web<br /> | url = http://ustream-helpers.com/how-to/ircclient<br /> | title = How to setup an IRC client to connect and login to Ustream<br /> | accessdate = 2013-04-27<br /> | date = 2012-01-29<br /> | publisher = Ustream-Helpers<br /> }}&lt;/ref&gt; as well as [[Justin.tv]]'s.&lt;ref&gt;{{cite web<br /> | url = http://www.liquidsilver.org/2010/06/ustream-v-justin/<br /> | title = Ustream vs. Justin.tv<br /> | accessdate = 2011-07-13<br /> | date = 2010-06-20<br /> | publisher = LiquidSilver<br /> | author = Mauldor<br /> }}&lt;/ref&gt;<br /> <br /> ===Bots===<br /> {{Main|IRC bot}}<br /> <br /> A typical use of bots in IRC is to provide [[Internet Relay Chat services|IRC services]] or a specific functionality within a channel such as to host a chat-based game or provide notifications of external events.<br /> <br /> ===Bouncer===<br /> {{Main|BNC (software)}}<br /> A program that runs as a [[daemon (computer software)|daemon]] on a [[Server (computing)|server]] and functions as a persistent [[proxy server|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.{{Citation needed|date=April 2011}} 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.&lt;ref&gt;{{cite web<br /> | url = http://www.psybnc.at/readme.txt<br /> | title = psyBNC Readme<br /> | accessdate = 2011-04-10<br /> | publisher = psybnc.at<br /> }}&lt;/ref&gt;<br /> <br /> 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 [[secure shell|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.&lt;ref&gt;{{cite web<br /> | url = http://chriscarey.com/wordpress/2009/07/18/irc-with-irssi-proxy-screen/<br /> | title = IRC with irssi-proxy + screen<br /> | accessdate = 2011-04-10<br /> | last = Carey<br /> | first = Chris<br /> | date = 2009-07-18<br /> | publisher = chriscarey.com<br /> }}&lt;/ref&gt;<br /> <br /> 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.&lt;ref&gt;{{cite web<br /> | url = http://www.smuxi.org/blog/show/Detachable_Frontend_Core_Rewrite__UML__Windows_Port_kicking_Glade<br /> | title = Detachable Frontend (Core Rewrite) / UML / Windows Port (kicking Glade)<br /> | accessdate = 2010-07-25<br /> | date = 2004-12-25<br /> | publisher = smuxi.org<br /> }}&lt;/ref&gt;&lt;ref&gt;{{cite web<br /> | url = http://www.smuxi.org/page/About<br /> | title = About Smuxi<br /> | accessdate = 2011-04-10<br /> | publisher = smuxi.org<br /> }}&lt;/ref&gt;<br /> <br /> ==Search engines==<br /> There are numerous search engines available to aid the user in finding what they are looking for on IRC.&lt;ref&gt;{{cite book<br /> | last = Mutton<br /> | first = Paul<br /> | title = IRC Hacks<br /> | edition = 1st<br /> | date = 2004-07-27<br /> | publisher = [[O'Reilly Media]]<br /> | location = [[Sebastopol, California]]<br /> | isbn = 0-596-00687-X<br /> | pages = 44{{spaced ndash}}46<br /> | chapter = Users and Channels<br /> }}&lt;/ref&gt;&lt;ref&gt;{{cite book<br /> | last = Wang<br /> | first = Wallace<br /> | title = Steal this File Sharing Book<br /> | edition = 1st<br /> | date = 2004-10-25<br /> | publisher = [[No Starch Press]]<br /> | location = [[San Francisco, California]]<br /> | isbn = 1-59327-050-X<br /> | pages = 65{{spaced ndash}}67<br /> | chapter = Instant Messaging and Online Chat Rooms: Internet Relay Chat (IRC)<br /> }}&lt;/ref&gt; Generally the search engine consists of two parts, a &quot;back-end&quot; (or &quot;spider/crawler&quot;) and a front-end &quot;search engine&quot;.<br /> <br /> 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 database|Oracle]].{{Citation needed|date=January 2010}}<br /> <br /> The front-end &quot;search engine&quot; 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.<br /> <br /> Most search engines have their own spider that is a single application responsible for crawling IRC and indexing data itself; however, others are &quot;user based&quot; indexers. The latter rely on users to install their &quot;add-on&quot; 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|date=August 2009}}<br /> <br /> Many users have implemented their own [[ad hoc]] search engines using the logging features built into many IRC clients.<br /> <br /> ==Modern IRC==<br /> IRC has changed much over its life on the Internet. New server software has added a multitude of new features.<br /> * [[IRC services|Services]]: Network-operated bots to facilitate registration of nicknames and channels, sending messages for offline users and network operator functions.<br /> * 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 (&quot;cloaking&quot;) to protect from [[denial-of-service attack]]s.{{Citation needed|date=January 2010}}<br /> * 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 [http://www.blitzed.org/proxy 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|date=January 2010}}<br /> * 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|date=January 2010}}<br /> * [[Encryption]]: For the client-to-server leg of the connection [[Secure Sockets Layer|SSL]] might be used (messages cease to be secure once they are relayed to other users on standard connections, but it makes [[Man-in-the-middle attack|eavesdropping]] on or wiretapping an individual's IRC sessions difficult). For client-to-client communication, [[Secure Direct Client-to-Client|SDCC]] (Secure DCC) can be used.{{Citation needed|date=January 2010}}<br /> * 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.<br /> <br /> There is an effort of standardization and adding new features to the IRC protocol by IRCv3 working group.&lt;ref&gt;{{cite web<br /> | url = http://www.ircv3.org/<br /> | title = IRCv3 Working Group<br /> | accessdate = 2014-03-08<br /> }}&lt;/ref&gt;<br /> <br /> ==Character encoding==<br /> IRC still lacks a single globally accepted standard convention for how to transmit characters outside the 7-bit [[ASCII]] repertoire.<br /> IRC servers normally{{Clarify|date=July 2009}} transfer messages from a client to another client just as byte sequences, without any interpretation or recoding of [[character (computing)|characters]]. The IRC protocol (unlike e.g. [[MIME]] or [[HTTP]]) lacks mechanisms for announcing and negotiating 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:<br /> <br /> * '''7-bit era:''' In the early days of IRC, especially among [[North Germanic languages|Scandinavian]] and [[Finnish language]] users, national variants of [[ISO 646]] were the dominant [[character encoding]]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.&lt;ref name=&quot;rfc 1459 2.2 character codes&quot; /&gt; 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.<br /> <br /> * '''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|date=October 2008}}&lt;!-- Some networks offer MacCyrillic under the name «ISO 8859-5». But MacCyrillic has virtually nothing common with ISO 8859-5, this naming confusion just indicates the depth of programmers' ignorance. --Incnis Mrsi --&gt; and [[CP1251]], and since about 2000, modern Russian IRC networks convert between these different commonly used encodings of the [[Cyrillic script]].<br /> <br /> * '''Multi-byte era:''' For a long time, East Asian IRC channels with ideographic scripts in China, Japan, and Korea have been using multi-byte encodings such as [[Extended Unix Code|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ö|Merkistö]] &lt;small&gt;(Finnish)&lt;/small&gt;).<br /> <br /> 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.<br /> <br /> ==File sharing==<br /> Much like conventional [[Peer-to-peer|P2P]] 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.&lt;ref&gt;{{cite web<br /> | url = http://www.zdnet.com/news/pirated-movies-now-playing-on-a-server-near-you/122663<br /> | title = Pirated movies: Now playing on a server near you<br /> | accessdate = 2011-04-10<br /> | last = Vamosi<br /> | first = Robert<br /> | date = 2002-05-08<br /> | publisher = [[ZDNet]]<br /> }}&lt;/ref&gt;<br /> <br /> 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.&lt;ref&gt;{{cite web<br /> | url = http://www.macobserver.com/tip/2002/04/04.1.shtml<br /> | title = IRC 101: What Is It &amp; How Do I Use It?<br /> | accessdate = 2011-04-10<br /> | last = Sasaki<br /> | first = Darla<br /> | date = 2002-04-04<br /> | publisher = Macobserver.com<br /> }}&lt;/ref&gt; 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.<br /> <br /> ==See also==<br /> {{Portal|Internet Relay Chat}}<br /> * [[Chat room]]<br /> * [[Client-to-client protocol]]<br /> * [[Comparison of instant messaging protocols]]<br /> * [[Comparison of IRC clients]]<br /> * [[Comparison of IRC daemons]]<br /> &lt;!-- * [[Comparison of IRC services]] --&gt;<br /> * [[Internet slang]]<br /> * [[List of IRC commands]]<br /> * [[Serving channel]]<br /> * [[The Hamnet Players]]<br /> <br /> ==References==<br /> {{reflist|30em}}<br /> <br /> ==Bibliography==<br /> * {{cite IETF<br /> | title = A Discussion on Computer Network Conferencing<br /> | rfc = 1324<br /> | last = Reed<br /> | first = Darren<br /> | year = 1992<br /> | month = May<br /> | publisher = [[Internet Engineering Task Force|IETF]]<br /> | accessdate = 2009-10-30<br /> | ref = ietf<br /> }}<br /> * {{cite IETF<br /> | title = Internet Relay Chat Protocol<br /> | rfc = 1459<br /> | last1 = Oikarinen<br /> | first1 = Jarkko<br /> | authorlink1 = Jarkko Oikarinen<br /> | last2 = Reed<br /> | first2 = Darren<br /> | year = 1993<br /> | month = May<br /> | publisher = [[Internet Engineering Task Force|IETF]]<br /> | accessdate = 2009-10-30<br /> | ref = ietf<br /> }}<br /> * {{cite IETF<br /> | title = Internet Relay Chat: Architecture<br /> | rfc = 2810<br /> | last = Kalt<br /> | first = Christophe<br /> | year = 2000<br /> | month = April<br /> | publisher = [[Internet Engineering Task Force|IETF]]<br /> | accessdate = 2009-10-30<br /> | ref = ietf<br /> }}<br /> * {{cite IETF<br /> | title = Internet Relay Chat: Channel Management<br /> | rfc = 2811<br /> | last = Kalt<br /> | first = Christophe<br /> | year = 2000<br /> | month = April<br /> | publisher = [[Internet Engineering Task Force|IETF]]<br /> | accessdate = 2009-10-30<br /> | ref = ietf<br /> }}<br /> * {{cite journal<br /> | last = Loesch<br /> | first = Carl<br /> | date = 2003-07-17<br /> | title = Functionality Provided by Systems for Synchronous Conferencing<br /> | publisher = psyc.eu<br /> | url = http://www.psyc.eu/synconf<br /> | accessdate = 2011-04-10<br /> | ref = harv<br /> }}<br /> <br /> ==Further reading==<br /> * {{cite IETF<br /> | title = Internet Relay Chat: Client Protocol<br /> | rfc = 2812<br /> | last = Kalt<br /> | first = Christophe<br /> | year = 2000<br /> | month = April<br /> | publisher = [[Internet Engineering Task Force|IETF]]<br /> | accessdate = 2009-10-30<br /> }}<br /> * {{cite IETF<br /> | title = Internet Relay Chat: Server Protocol<br /> | rfc = 2813<br /> | last = Kalt<br /> | first = Christophe<br /> | year = 2000<br /> | month = April<br /> | publisher = [[Internet Engineering Task Force|IETF]]<br /> | accessdate = 2009-10-30<br /> }}<br /> * {{cite web<br /> | url = http://www.ibiblio.org/pub/academic/communications/logs/<br /> | title = Logs of major events in the online community<br /> | accessdate = 2011-04-08<br /> | publisher = [[ibiblio]]<br /> | location = [[Chapel Hill, North Carolina]]<br /> }}<br /> * {{cite web<br /> | url = http://www.alien.net.au/irc/<br /> | title = IRC technical information<br /> | accessdate = 2011-04-10<br /> | last = Butcher<br /> | first = Simon<br /> | publisher = alien.net.au<br /> }}<br /> <br /> ==External links==<br /> {{Wikibooks|Internet Technologies|IRC}}<br /> {{Commons category|IRC}}<br /> * {{Dmoz|Computers/Internet/Chat/IRC|IRC}}<br /> * [http://www.alien.net.au/irc/irc2numerics.html IRC/2 Numerics List]<br /> * [http://www.irc.org/history.html History of IRC]<br /> * [http://www.irc.org/ IRC.org] – Technical and Historical IRC6 information; Articles on the history of IRC<br /> * [http://www.irchelp.org/ IRChelp.org] – Internet Relay Chat (IRC) help archive; Large archive of IRC-related documents<br /> * [http://www.ircv3.org/ IRCv3] – Working group of developers, who add new features to the protocol and write specs for them<br /> <br /> {{IRC topics}}<br /> {{URI scheme}}<br /> {{Computer-mediated communication}}<br /> <br /> [[Category:Internet Relay Chat| ]]<br /> [[Category:Application layer protocols]]<br /> [[Category:Finnish inventions]]<br /> [[Category:Internet terminology]]<br /> [[Category:Virtual communities]]<br /> [[Category:1988 introductions]]</div> Categorization https://de.wikipedia.org/w/index.php?title=Matrix_(Kommunikationsprotokoll)&diff=177137607 Matrix (Kommunikationsprotokoll) 2015-03-28T00:26:28Z <p>Categorization: Just using IRC as a basic frame and for homage</p> <hr /> <div>&quot;Matrix is an open standard for decentralised communication, providing simple HTTP APIs and open source reference implementations for securely distributing and persisting JSON over an open federation of servers.&quot;<br /> <br /> just using IRC as first draft, editing live<br /> <br /> '''Matrix''' ('''IRC''') is an [[application layer]] protocol that facilitates transfer of messages in the form of text. The chat process works on a client/server model of networking. IRC clients are computer programs that a user can install on their system. These clients are able to communicate with chat servers to transfer messages to other clients.&lt;ref name=&quot;rfc 1459 1 introduction&quot;&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Introduction<br /> | section = 1<br /> | page = 4<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; It is mainly designed for [[Many-to-many|group communication]] in discussion forums, called ''[[#Channels|channels]]'',&lt;ref&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = One-to-many<br /> | section = 3.2<br /> | page = 11<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; but also allows one-to-one communication via [[instant messaging|private message]]&lt;ref&gt;{{cite IETF<br /> | rfc = 2810<br /> | sectionname = One-To-One Communication<br /> | section = 5.1<br /> | page = 5<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; as well as [[Direct Client-to-Client|chat and data transfer]],&lt;ref&gt;{{cite web<br /> | url = http://www.irchelp.org/irchelp/rfc/dccspec.html<br /> | title = A description of the DCC protocol<br /> | accessdate = 2011-04-08<br /> | last = Rollo<br /> | first = Troy<br /> | publisher = irchelp.org<br /> }}&lt;/ref&gt; including [[file sharing]].&lt;ref&gt;{{cite book<br /> | last = Wang<br /> | first = Wallace<br /> | title = Steal this File Sharing Book<br /> | edition = 1st<br /> | date = 2004-10-25<br /> | publisher = [[No Starch Press]]<br /> | location = [[San Francisco, California]]<br /> | isbn = 1-59327-050-X<br /> | pages = 61{{spaced ndash}}67<br /> | chapter = Instant Messaging and Online Chat Rooms: Internet Relay Chat (IRC)<br /> }}&lt;/ref&gt;<br /> <br /> [[Comparison of Internet Relay Chat clients|Client software]] is available for every major operating system that supports Internet access.&lt;ref name=Sage&gt;{{cite web<br /> |title=SAGE IRC Channel<br /> |url=http://www.sage.org/about/irc.html<br /> |publisher=Sage – The USENIX Special Interest Group for Sysadmins<br /> |accessdate=18 April 2011<br /> |archiveurl=http://web.archive.org/web/20120207191923/http://sage.org/about/irc.html|archivedate=7 February 2012}}&lt;/ref&gt; As of April 2011, the top 100 IRC networks served more than half a million users at a time,&lt;ref name=&quot;irc networks top 100&quot;&gt;{{cite web<br /> | url = http://irc.netsplit.de/networks/top100.php<br /> | title = IRC Networks – Top 100<br /> | accessdate = 2011-04-08<br /> | publisher = irc.netsplit.de<br /> }}&lt;/ref&gt; with hundreds of thousands of channels&lt;ref name=&quot;irc networks top 100&quot; /&gt; operating on a total of roughly 1,500 servers&lt;ref name=&quot;irc networks top 100&quot; /&gt; out of roughly 3,200 servers worldwide.&lt;ref&gt;{{cite web<br /> | url = http://irc.netsplit.de/servers/summary.php<br /> | title = IRC Servers – Summary<br /> | accessdate = 2011-04-08<br /> | publisher = irc.netsplit.de<br /> }}&lt;/ref&gt;<br /> <br /> Over the past decade IRC usage has been declining: since 2003 it has lost 60% of its users (from 1 million to about 400,000 in 2014) and half of its channels (from half a million in 2003).&lt;ref&gt;{{cite web<br /> | url = http://royal.pingdom.com/2012/04/24/irc-is-dead-long-live-irc/<br /> | title = IRC is dead, long live IRC<br /> | accessdate = 2014-05-16<br /> }}&lt;/ref&gt;<br /> <br /> {{IPstack}}<br /> <br /> ==History {{anchor|MultiUser Talk}}== &lt;!-- This section is linked from redirect &quot;[[MultiUser Talk]]&quot; --&gt;<br /> IRC was created by [[Jarkko Oikarinen]] in August 1988 to replace a program called MUT (MultiUser Talk) on a [[Bulletin board system|BBS]] called OuluBox in [[Finland]].&lt;ref name=&quot;founding irc&quot;&gt;{{cite web<br /> | url = http://www.mirc.com/jarkko.html<br /> | title = Founding IRC<br /> | accessdate = 2011-04-08<br /> | last = Oikarinen<br /> | first = Jarkko<br /> | authorlink = Jarkko Oikarinen<br /> }}&lt;/ref&gt; Oikarinen found inspiration in a chat system known as [[Bitnet Relay]], which operated on the [[BITNET]].&lt;ref name=&quot;founding irc&quot; /&gt;<br /> <br /> IRC was used to report on the [[1991 Soviet coup d'état attempt]] throughout a [[media blackout]].&lt;ref&gt;{{cite web<br /> | url = http://www.ibiblio.org/pub/academic/communications/logs/report-ussr-gorbatchev<br /> | title = IRC transcripts from the time of the 1991 Soviet coup d'état attempt<br /> | accessdate = 2011-04-08<br /> | publisher = [[ibiblio]]<br /> | location = [[Chapel Hill, North Carolina]]<br /> }}&lt;/ref&gt; It was previously used in a similar fashion during the [[Gulf War]].&lt;ref&gt;{{cite web<br /> | url = http://www.ibiblio.org/pub/academic/communications/logs/Gulf-War/<br /> | title = IRC logs of events of the Gulf War<br /> | accessdate = 2011-04-08<br /> | publisher = [[ibiblio]]<br /> | location = [[Chapel Hill, North Carolina]]<br /> }}&lt;/ref&gt; Logs of these and other events are kept in the [[ibiblio]] archive.&lt;ref&gt;{{cite web<br /> | url = http://www.ibiblio.org/pub/academic/communications/logs/<br /> | title = Logs of major events in the online community<br /> | accessdate = 2011-04-08<br /> | publisher = [[ibiblio]]<br /> | location = [[Chapel Hill, North Carolina]]<br /> }}&lt;/ref&gt;<br /> <br /> ==Technical information==<br /> {{See also|IRCd}}<br /> &lt;!-- Commented out: [[File:MIRC 6.31 Screenshot.png|right|thumb|A Screenshot of [[mIRC]], an IRC client for [[Microsoft Windows|Windows]] versions.]] --&gt;<br /> [[File:Screenshot of HexChat in Windows 8.png|right|thumb|A screenshot of [[HexChat]], an IRC client for [[GTK]] environments.]]<br /> [[File:Xaric screen shot.jpg|right|thumb|Xaric, a text-based IRC client, in use on [[Mac OS X]]. Shown are two IRC channels and a private conversation with the software author.]]<br /> IRC is an open [[Network protocol|protocol]] that uses [[Transmission Control Protocol|TCP]]&lt;ref name=&quot;rfc 1459 1 introduction&quot; /&gt; and, optionally, [[Transport Layer Security|TLS]]. An [[IRC server]] can connect to other IRC servers to expand the IRC network.&lt;ref&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Servers<br /> | section = 1.1<br /> | page = 4<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; Users access IRC networks by connecting a client to a server.&lt;ref&gt;{{cite IETF<br /> | rfc = 2810<br /> | sectionname = Clients<br /> | section = 2.2<br /> | page = 3<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; There are many client implementations, such as [[mIRC]], [[HexChat]] and [[irssi]], 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.&lt;ref&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Clients<br /> | section = 1.2<br /> | page = 5<br /> | idanchor = ietf<br /> }}&lt;/ref&gt;<br /> <br /> IRC was originally a [[Text-based protocol|plain text protocol]] &lt;ref name=&quot;rfc 1459 1 introduction&quot; /&gt; (although later extended), which on request was assigned port [[List of TCP and UDP port numbers|194/TCP]] by [[Internet Assigned Numbers Authority|IANA]].&lt;ref&gt;{{cite web<br /> | url = http://www.iana.org/assignments/port-numbers<br /> | title = Port Numbers<br /> | accessdate = 2011-04-08<br /> | date = 2011-04-06<br /> | publisher = [[Internet Assigned Numbers Authority]]<br /> | location = [[Marina del Rey, California]]<br /> }}&lt;/ref&gt; However, the [[de facto standard|''de facto'' standard]] has always been to run IRC on 6667/TCP&lt;ref&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Connect message<br /> | section = 4.3.5<br /> | page = 29<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; and nearby port numbers (for example TCP ports 6660–6669, 7000)&lt;ref&gt;{{cite book<br /> | last1 = Lucas<br /> | first1 = Mark<br /> | last2 = Singh<br /> | first2 = Abhishek<br /> | last3 = Cantrell<br /> | first3 = Chris<br /> | editor-last = Henmi<br /> | editor-first = Anne<br /> | title = Firewall Policies and VPN Configurations<br /> | date = 2006-10-05<br /> | publisher = [[Syngress Publishing]]<br /> | location = [[Rockland, Massachusetts]]<br /> | isbn = 1-59749-088-1<br /> | page = 93<br /> | chapter = Defining a Firewall<br /> }}&lt;/ref&gt; to avoid having to run the [[IRCd]] software with [[Superuser|root privileges]].<br /> <br /> The protocol specified that characters were 8-bit but did not specify the character encoding the text was supposed to use.&lt;ref name=&quot;rfc 1459 2.2 character codes&quot;&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Character codes<br /> | section = 2.2<br /> | page = 7<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; This can cause problems when users using different clients and/or different platforms want to converse.<br /> <br /> 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|date=July 2007}}<br /> <br /> 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|date=July 2007}}<br /> <br /> Microsoft made an extension for IRC in 1998 via the proprietary [[IRCX]].&lt;ref&gt;{{cite IETF<br /> | title = Extensions to the Internet Relay Chat Protocol (IRCX)<br /> | draft = draft-pfenning-irc-extensions-04<br /> | last = Abraham<br /> | first = Dalen<br /> | year = 1998<br /> | month = June<br /> | publisher = [[Internet Engineering Task Force|IETF]]<br /> | accessdate = 2011-04-08<br /> }}&lt;/ref&gt; They later stopped distributing software supporting IRCX, instead developing the proprietary [[Microsoft Notification Protocol|MSNP]].<br /> <br /> The standard structure of a network of IRC servers is a [[Tree network|tree]].&lt;ref&gt;{{cite IETF<br /> | rfc = 2810<br /> | sectionname = Architecture<br /> | section = 3<br /> | pages = 3{{spaced ndash}}4<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; Messages are routed along only necessary branches of the tree but network state is sent to every server&lt;ref&gt;{{cite IETF<br /> | rfc = 2810<br /> | sectionname = Introduction<br /> | section = 1<br /> | page = 2<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; 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&lt;ref&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Algorithms<br /> | section = 9.3<br /> | page = 64<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; 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&lt;ref&gt;{{cite IETF<br /> | rfc = 2810<br /> | sectionname = Network Congestion<br /> | section = 6.3<br /> | pages = 7{{spaced ndash}}8<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; 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.&lt;ref&gt;{{cite IETF<br /> | rfc = 2810<br /> | sectionname = To A Channel<br /> | section = 5.2.1<br /> | pages = 5{{spaced ndash}}6<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; This is a strength in comparison to non-multicasting protocols such as [[Simple Mail Transfer Protocol]] (SMTP) or [[Extensible Messaging and Presence Protocol]] (XMPP).<br /> <br /> An IRC daemon can also be used on a local area network (LAN). IRC can thus be used to facilitate communication between people of the own network (internal communication).&lt;ref&gt;{{cite web|url=http://computerquestionhelp.com/content/how-guide-setup-your-own-irc-server-using-personal-or-dedicated-system-or-server-top-freewar|title=IRC daemons for LAN|publisher=|accessdate=2 October 2014}}&lt;/ref&gt;&lt;ref&gt;{{cite web|url=http://www.irc-wiki.org/IRC_server|title=Running an own IRC server|publisher=|accessdate=2 October 2014}}&lt;/ref&gt;<br /> <br /> ===Commands and replies===<br /> {{Main|List of Internet Relay Chat commands}}<br /> IRC has a line-based structure with the client sending single-line messages to the server,&lt;ref&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Message format in 'pseudo' BNF<br /> | section = 2.3.1<br /> | page = 8<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; receiving replies to those messages&lt;ref&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Numeric replies<br /> | section = 2.4<br /> | page = 10<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; 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|date=May 2009}}<br /> <br /> 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.&lt;ref&gt;{{cite web<br /> | url = http://www.shanemcc.co.uk/irc/#listmode<br /> | title = IRC List Modes – List mode extension showing pair confusion for lists<br /> | accessdate = 2011-04-08<br /> | date = 2009-11-25<br /> }}&lt;/ref&gt;<br /> <br /> ===Channels===<br /> The basic means of communicating to a group of users in an established IRC session is through a ''[[chat room|channel]]''.&lt;ref name=&quot;rfc 1459 3.2.2 to a group (channel)&quot;&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = To a group (channel)<br /> | section = 3.2.2<br /> | page = 11<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; Channels on a network can be displayed using the IRC command ''LIST'',&lt;ref&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = List message<br /> | section = 4.2.6<br /> | page = 24<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; which lists all currently available channels that do not have the modes +s or +p set, on that particular network.<br /> <br /> Users can ''join'' a channel using the ''JOIN'' command,&lt;ref name=&quot;rfc 1459 4.2.1 join message&quot;&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Join message<br /> | section = 4.2.1<br /> | page = 19<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; in most clients available as ''/join #channelname''. Messages sent to the joined channels are then relayed to all other users.&lt;ref name=&quot;rfc 1459 3.2.2 to a group (channel)&quot; /&gt;<br /> <br /> Channels that are available across an entire IRC network are prefixed with a '#', while those local to a server use '&amp;'.&lt;ref&gt;{{cite IETF<br /> | rfc = 2811<br /> | sectionname = Channel Scope<br /> | section = 2.2<br /> | page2 = 3{{spaced ndash}}4<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; Other less common channel types include '+' channels—'modeless' channels without operators&amp;nbsp;—&lt;ref&gt;{{cite IETF<br /> | rfc = 2811<br /> | sectionname = Channel Properties<br /> | section = 2.3<br /> | page = 4<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; and '!' channels, a form of [[#Nick/channel delay|timestamped]] channel on normally non-timestamped networks.&lt;ref&gt;{{cite IETF<br /> | rfc = 2811<br /> | sectionname = Channel lifetime<br /> | section = 3<br /> | page = 5<br /> | idanchor = ietf<br /> }}&lt;/ref&gt;<br /> <br /> ===Modes===<br /> Users and channels may have ''modes'' that are represented by single case-sensitive letters&lt;ref&gt;{{cite IETF<br /> | rfc = 2811<br /> | sectionname = Channel Modes<br /> | section = 4<br /> | page = 7<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; and are set using the ''MODE'' command.&lt;ref&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Mode message<br /> | section = 4.2.3<br /> | page = 21<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; User modes and channel modes are separate and can use the same letter to mean different things (e.g. usermode &quot;i&quot; is invisible mode whilst channelmode &quot;i&quot; is invite only.&lt;ref&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Channel modes<br /> | section = 4.2.3.1<br /> | pages = 21{{spaced ndash}}22<br /> | idanchor = ietf<br /> }}&lt;/ref&gt;) 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.<br /> <br /> 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.&lt;ref&gt;{{cite IETF<br /> | rfc = 2811<br /> | sectionname = Channel Access Control<br /> | section = 4.3<br /> | pages = 10{{spaced ndash}}11<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; Modes that apply to users on a channel have an associated symbol that is used to represent the mode in names replies&lt;ref name=&quot;rfc 1459 p.51 rpl_namreply&quot;&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Command responses: 353 RPL_NAMREPLY<br /> | page = 51<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; (sent to clients on first joining a channel&lt;ref name=&quot;rfc 1459 4.2.1 join message&quot; /&gt; 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.<br /> <br /> 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.&lt;ref&gt;{{cite web<br /> | url = http://www.irc.org/tech_docs/005.html<br /> | title = The 005 numeric: ISUPPORT<br /> | accessdate = 2011-04-10<br /> | last = Roeckx<br /> | first = Kurt<br /> | date = 2004-10-14<br /> | publisher = irc.org<br /> }}&lt;/ref&gt;&lt;ref&gt;{{cite IETF<br /> | title = IRC RPL_ISUPPORT Numeric Definition<br /> | draft = draft-brocklesby-irc-isupport-03<br /> | last = Brocklesby<br /> | first = Edward<br /> | year = 2002<br /> | month = September<br /> | publisher = [[Internet Engineering Task Force|IETF]]<br /> | accessdate = 2011-04-10<br /> }}&lt;/ref&gt;<br /> <br /> 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,&lt;ref name=&quot;rfc 1459 p.51 rpl_namreply&quot; /&gt; 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.<br /> <br /> ====Standard (RFC 1459) modes====<br /> <br /> {| class=&quot;wikitable&quot;<br /> |+ User modes<br /> |-<br /> ! Letter<br /> ! Symbol<br /> ! Description<br /> |-<br /> | '''i'''<br /> |<br /> | Invisible—cannot be seen without a common channel or knowing the exact name<br /> |-<br /> | '''s'''<br /> |<br /> | Receives server notices<br /> |-<br /> | '''w'''<br /> |<br /> | Receives wallops&lt;ref&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Operwall message<br /> | section = 5.6<br /> | page = 41<br /> | idanchor = ietf<br /> }}&lt;/ref&gt;<br /> |-<br /> | '''o'''<br /> |<br /> | User is an IRC operator (ircop)<br /> |}<br /> <br /> {| class=&quot;wikitable&quot;<br /> |+ Channel modes<br /> |-<br /> ! Letter<br /> ! Symbol<br /> ! Parameter(s)<br /> ! Description<br /> |-<br /> | '''o'''<br /> | @<br /> | Name of affected user<br /> | Channel operator—can change channel modes and kick users out of the channel among other things<br /> |-<br /> | '''s'''<br /> |<br /> |<br /> | Secret channel—not shown in channel list or user whois except to users already on the channel<br /> |-<br /> | '''p'''<br /> |<br /> |<br /> | Private channel—listed in channel list as &quot;prv&quot; according to &lt;nowiki&gt;RFC 1459&lt;/nowiki&gt;<br /> |-<br /> | '''n'''<br /> |<br /> |<br /> | Users cannot send messages to the channel externally<br /> |-<br /> | '''m'''<br /> | <br /> |<br /> | Channel is moderated (only those who hold operator or voice status on the channel can send messages to it)<br /> |-<br /> | '''i'''<br /> |<br /> |<br /> | Only users with invites may enter the channel.<br /> |-<br /> | '''t'''<br /> |<br /> |<br /> | Only operators can change the channel topic.<br /> |-<br /> | '''l'''<br /> |<br /> | Limit number<br /> | Limits number of users able to be on channel (when full, no new users can join)<br /> |-<br /> | '''b'''<br /> |<br /> | Ban mask (nick!user@host with wildcards allowed)<br /> | Bans [[hostmask]]s from channel<br /> |-<br /> | '''v''' &lt;!-- That does belong here with the channel modes. It's not a user mode --&gt;<br /> | +<br /> | Name of affected user<br /> | Gives a user voice status on channel (see +m above)<br /> |-<br /> | '''k'''<br /> | <br /> | New channel key<br /> | Sets a channel key such that only users knowing the key can enter<br /> |}<br /> <br /> Many daemons and networks have added extra modes or modified the behavior of modes in the above list.&lt;ref&gt;{{cite web<br /> | url = http://www.alien.net.au/irc/usermodes.html<br /> | title = IRC User Modes List<br /> | accessdate = 2011-04-10<br /> | last = Butcher<br /> | first = Simon<br /> | date = 2005-01-12<br /> | publisher = alien.net.au<br /> }}&lt;/ref&gt;&lt;ref&gt;{{cite web<br /> | url = http://www.alien.net.au/irc/chanmodes.html<br /> | title = IRC Channel Modes List<br /> | accessdate = 2011-04-10<br /> | last = Butcher<br /> | first = Simon<br /> | date = 2005-01-12<br /> | publisher = alien.net.au<br /> }}&lt;/ref&gt;&lt;ref&gt;{{cite web<br /> | url = http://www.alien.net.au/irc/servermodes.html<br /> | title = IRC Server Modes List<br /> | accessdate = 2011-04-10<br /> | last = Butcher<br /> | first = Simon<br /> | date = 2005-01-12<br /> | publisher = alien.net.au<br /> }}&lt;/ref&gt;&lt;ref&gt;{{cite web<br /> | url = http://webtoman.com/opera/panel/ircdmodes.html<br /> | title = IRCd Modes<br /> | accessdate = 2011-04-10<br /> | last = Olsen<br /> | first = Tommy<br /> | publisher = webtoman.com<br /> }}&lt;/ref&gt;<br /> <br /> ===Channel Operators===<br /> A ''Channel Operator'' is a [[Client (computing)|client]] on an [[IRC channel]] that manages the channel.<br /> IRC Channel Operators can be easily seen by a symbol &quot;@&quot;, or a Latin letter &quot;+o&quot;/&quot;o&quot;.<br /> On most networks, an operator can:<br /> * Kick a user<br /> * Ban a user<br /> * Give another user IRC Channel Operator Status or IRC Channel Voice Status.<br /> * Change the IRC Channel topic.<br /> * Change the IRC Channel Mode locks.<br /> <br /> ===IRC Operators===<br /> {{main|Internet Relay Chat operator}}<br /> There are also users who maintain elevated rights on their local server, or the entire network; these are called IRC operators,&lt;ref name=&quot;rfc 1459 1.2.1 operators&quot;&gt;{{cite IETF<br /> | rfc = 1459<br /> | sectionname = Operators<br /> | section = 1.2.1<br /> | page = 5<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; sometimes shortened to IRCops or Opers (not to be confused with channel operators). As the implementation of the IRCd varies, so do the privileges of the IRC operator on the given IRCd. RFC 1459&lt;ref name=&quot;rfc 1459 1.2.1 operators&quot; /&gt; claims that IRC operators are &quot;a necessary evil&quot; to keep clean state of the network, and 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 are usually allowed to disconnect clients and completely ban IPs or complete subnets. Networks that carry services (Nickserv et al.) usually allow their IRC operators also to handle basic &quot;Ownership&quot; 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.<br /> <br /> ===Hostmasks===<br /> A hostmask is a unique identifier of an IRC [[client (computing)|client]] connected to an IRC [[Server (computing)|server]].&lt;ref name=&quot;thiedeke-2003&quot;&gt;{{cite book<br /> | last = Thiedeke<br /> | first = Udo<br /> | title = Virtuelle Gruppen: Charakteristika und Problemdimensionen<br /> | url = http://books.google.com/?id=aQ74THYRyYsC&amp;lpg=PA314&amp;pg=PA315#v=onepage&amp;q=hostmask<br /> | accessdate = 2010-03-30<br /> | edition = 2nd<br /> | date = 2003-09-23<br /> | publisher = {{Ill|de|Springer VS}}<br /> | language = German<br /> | isbn = 3-531-33372-0<br /> | pages = 314, 337<br /> | chapter = Nicola Döring, Alexander Schestag<br /> }}&lt;/ref&gt;&lt;ref name=&quot;rogers-2005&quot;&gt;{{cite book<br /> | last = Rogers<br /> | first = Russ<br /> | editor-last = Devost<br /> | editor-first = Matthew G.<br /> | title = Hacking a Terror Network: The Silent Threat of Covert Channels<br /> | url = http://books.google.com/books?id=e3ggsGgTzUgC&amp;lpg=PA10&amp;pg=PA10#v=onepage&amp;q=Hostmask%20IRC<br /> | accessdate = 2010-03-30<br /> | edition = 1st<br /> | date = 2004-12-01<br /> | publisher = [[Syngress Publishing]]<br /> | location = [[Rockland, Massachusetts]]<br /> | isbn = 1-928994-98-9<br /> | page = 10<br /> | chapter = The Mind of Terror<br /> }}&lt;/ref&gt; IRC [[IRCd|server]]s, [[Internet Relay Chat services|services]], and other clients including [[Internet Relay Chat bot|bots]] can use it to identify a specific IRC session.<br /> <br /> The format of a hostmask is &lt;code&gt;nick!user@host&lt;/code&gt;. The hostmask looks similar to, but should not be confused with an [[e-mail address]].<br /> <br /> The nick part is the nickname chosen by the user and may be changed while connected.<br /> The user part is the username reported by [[ident protocol|ident]] on the client.&lt;ref name=&quot;petersen-2002&quot;&gt;{{cite book<br /> | editor-last = Petersen<br /> | editor-first = Julie K.<br /> | title = The Telecommunications Illustrated Dictionary<br /> | url = http://books.google.com/books?id=b2mMzS0hCkAC&amp;lpg=PA500&amp;pg=PA500#v=onepage&amp;q=Hostmask<br /> | accessdate = 2010-03-30<br /> | edition = 2nd<br /> | date = 2002-05-29<br /> | publisher = [[CRC Press]]<br /> | isbn = 0-8493-1173-X<br /> | page = 500<br /> | chapter = Internet Relay Chat<br /> }}&lt;/ref&gt; If ident is not available on the client, the username specified when the client connected is used after being prefixed with a [[tilde]].&lt;ref name=&quot;freenode faq&quot;&gt;{{cite web<br /> | url = http://freenode.net/faq.shtml<br /> | title = Frequently-Asked Questions<br /> | accessdate = 2010-03-30<br /> | publisher = [[freenode]]<br /> }}&lt;/ref&gt;<br /> <br /> The host part is the [[hostname]] the client is connecting from. If the [[IP address]] of the client cannot be resolved to a valid [[hostname]] by the server, it is used instead of the hostname.<br /> <br /> Because of the [[privacy]] implications of exposing the IP address or hostname of a client, some [[IRCd|IRC daemons]] also provide privacy features, such as InspIRCD or UnrealIRCD's &quot;+x&quot; mode. This [[Cryptographic hash function|hashes]] a client IP address or masks part of a client's hostname, making it unreadable to users other than [[Internet Relay Chat#IRC Operators|IRCops]]. Users may also have the option of requesting a &quot;virtual host&quot; (or &quot;vhost&quot;), to be displayed in the hostmask to allow further anonymity. Some IRC networks such as [[Freenode]] use these as &quot;cloaks&quot; to indicate that a user is affiliated with a group or project.&lt;ref&gt;{{cite web<br /> | url = http://meta.wikimedia.org/wiki/IRC/Cloaks<br /> | title = IRC/Cloaks<br /> | accessdate = 2011-11-27<br /> | publisher = [[Wikimedia]]<br /> }}&lt;/ref&gt;<br /> <br /> ==Challenges==<br /> Issues in the original design of IRC were the amount of shared state data&lt;ref&gt;{{cite IETF<br /> | rfc = 1324<br /> | sectionname = Size<br /> | section = 2.5.1<br /> | pages = 5{{spaced ndash}}6<br /> | idanchor = ietf<br /> }}&lt;/ref&gt;&lt;ref&gt;{{cite IETF<br /> | rfc = 2810<br /> | sectionname = Scalability<br /> | section = 6.1<br /> | page = 7<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; being a limitation on its scalability,&lt;ref&gt;{{harvnb|Loesch|2003}} 1.2.1 Growth&lt;/ref&gt; the absence of unique user identifications leading to the nickname collision problem,&lt;ref&gt;{{cite IETF<br /> | rfc = 1324<br /> | sectionname = User identification<br /> | section = 5.4.1<br /> | page = 10<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; lack of protection from netsplits by means of cyclic routing,&lt;ref&gt;{{cite IETF<br /> | rfc = 1324<br /> | sectionname = Trees and cycles<br /> | section = 5.4.2<br /> | page = 10<br /> | idanchor = ietf<br /> }}&lt;/ref&gt;&lt;ref&gt;{{harvnb|Loesch|2003}} 1.2.2 Network failures&lt;/ref&gt; the trade-off in scalability for the sake of real-time user presence information,&lt;ref&gt;{{cite IETF<br /> | rfc = 1324<br /> | sectionname = State Information problems<br /> | section = 2.1<br /> | page = 4<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; protocol weaknesses providing a platform for abuse,&lt;ref&gt;{{harvnb|Loesch|2003}} 1.2.3 Sociological and security aspects&lt;/ref&gt; no transparent and optimizable message passing,&lt;ref&gt;{{cite IETF<br /> | rfc = 1324<br /> | sectionname = Message passing<br /> | section = 5.2.1<br /> | page = 7<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; and no encryption.&lt;ref&gt;{{cite IETF<br /> | rfc = 1324<br /> | sectionname = Conference security<br /> | section = 5.2.4<br /> | page = 8<br /> | idanchor = ietf<br /> }}&lt;/ref&gt; Some of these issues have been addressed in ''Modern IRC''.<br /> <br /> ===Attacks===<br /> Because IRC connections are usually unencrypted and typically span long time periods, they are an attractive target for [[Denial-of-service attack|Dos/DDoS attackers]] and [[Hacker (computer security)|hackers]]. Because of this, careful security policy is necessary to ensure that an IRC network is not susceptible to an attack such as a [[Internet Relay Chat takeover|takeover]] war. IRC networks may also [[K-line (IRC)|K-line]] or [[G-line]] users or networks that have a harming effect.<br /> <br /> A small number of IRC servers support [[Transport Layer Security|SSL/TLS]] 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 &lt;code&gt;+S&lt;/code&gt;) to only allow SSL-connected users on the channel, while disallowing operator identification in clear text, to better utilize the advantages that SSL provides.&lt;ref&gt;{{cite web<br /> | url = http://esper.net/help.php<br /> | title = Getting Help on EsperNet<br /> | publisher = The EsperNet IRC Network<br /> | accessdate = 2012-07-31<br /> }}&lt;/ref&gt;&lt;ref&gt;{{cite web<br /> | url = http://www.dal.net/news/shownews.php?id=67<br /> | title = New Feature: SSL For Users<br /> | author = brandon<br /> | date = 2010-05-18<br /> | publisher = DALnet<br /> | accessdate = 2012-07-31<br /> }}&lt;/ref&gt;<br /> <br /> IRC served as an early laboratory for many kinds of Internet attacks, such as using fake [[Internet Control Message Protocol|ICMP]] unreachable messages to break [[Transmission Control Protocol|TCP]]-based IRC connections ([[Nuke (computer)|nuking]]) to annoy users or facilitate [[Internet Relay Chat takeover|takeover]]s.<br /> <br /> ===Abuse prevention===<br /> One of the most contentious technical issues surrounding IRC implementations, which survives to this day, is the merit of &quot;Nick/Channel Delay&quot; vs. &quot;Timestamp&quot; protocols. Both methods exist to solve the problem of [[denial-of-service attack]]s, but take very different approaches.<br /> 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 &quot;split&quot; 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 &quot;combined&quot; 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').<br /> This was often abused to &quot;mass-kill&quot; all users on a channel, thus creating &quot;opless&quot; 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.<br /> <br /> ====Nick/channel delay====<br /> 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, 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.<br /> <br /> ====Timestamping====<br /> The alternative, the timestamp or ''TS'' protocol, took a different approach. Every nickname and channel on the network was assigned a timestamp{{spaced ndash}}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 &quot;losing&quot; side of the split lost their channel operator status.<br /> 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 &quot;desyncs&quot; (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.<br /> 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.<br /> <br /> ====SAVE====<br /> In recent versions of the IRCnet ircd, as well as ircds using the TS6 protocol (including Charybdis), 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 (although some ircds, namely IRCnet and InspIRCd, allow clients to switch to their own UID as the nickname).<br /> <br /> If two clients with the same nickname join from different sides of a netsplit (&quot;nick collision&quot;), the first server to see this collision will force ''both'' clients to change their nick to their UID, thus saving both clients from being disconnected. On IRCnet, the nickname will also be locked for some time (ND) to prevent both clients from changing back to the original nickname, thus colliding again.<br /> <br /> ==Networks==<br /> [[File:Tolsun 2.jpg|thumb|right|The first IRC server, tolsun.oulu.fi, a [[Sun-3]] server on display near the [[University of Oulu]] computer centre. (2001)]]<br /> <br /> There are thousands of running IRC networks in the world. They run various implementations of [[IRC server]]s, and are administered by various groups of [[IRC operator]]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 software implementations.<br /> <br /> The largest IRC networks have traditionally been grouped as the &quot;Big Four&quot;&lt;ref name=&quot;the book of irc&quot;&gt;{{cite book<br /> | last = Charalabidis<br /> | first = Alex<br /> | title = The Book of IRC: The Ultimate Guide to Internet Relay Chat<br /> | edition = 1st<br /> | date = 1999-12-15<br /> | publisher = No Starch Press<br /> | location = [[San Francisco, California]]<br /> | isbn = 1-886411-29-8<br /> | page = 61<br /> | chapter = IRCing On The Macintosh: Ircle<br /> | quote = On large networks such as the Big Four{{mdash}} EFnet, IRCnet, Undernet, and DALnet{{mdash}} 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.<br /> }}&lt;/ref&gt;&lt;ref name=&quot;encyclopedia of new media&quot;&gt;{{cite book<br /> | editor-last = Jones<br /> | editor-first = Steve<br /> | title = Encyclopedia of New Media: An Essential Reference to Communication and Technology<br /> | edition = 1st<br /> | date = 2002-12-10<br /> | publisher = [[SAGE Publications]]<br /> | location = [[Thousand Oaks, California]]<br /> | isbn = 0-7619-2382-9<br /> | page = 257<br /> | chapter = Internet Relay Chat<br /> | quote = Today there are hundreds of independent IRC networks, but the &quot;Big Four&quot; are EFNet, UnderNet, Dalnet, and IRCnet.<br /> }}&lt;/ref&gt;&lt;ref name=&quot;the imac book&quot;&gt;{{cite book<br /> | last = Rittner<br /> | first = Don<br /> | title = The iMac Book<br /> | edition = 1st<br /> | date = 1999-03-03<br /> | publisher = Coriolis Group<br /> | location = [[Scottsdale, Arizona]]<br /> | isbn = 1-57610-429-X<br /> | page = 215<br /> | chapter =<br /> | quote = There are several large networks: EFnet, UnderNET, DALnet, and IRCnet make up the Big Four.<br /> }}&lt;/ref&gt;&lt;ref name=&quot;information technology for management&quot;&gt;{{cite book<br /> | last1 = Turban<br /> | first1 = Efraim<br /> | last2 = Leidner<br /> | first2 = Dorothy<br /> | last3 = McLean<br /> | first3 = Ephraim<br /> | last4 = Wetherbe<br /> | first4 = James<br /> | title = Information Technology for Management: Transforming Organizations in the Digital Economy<br /> | edition = 5th<br /> | date = 2005-02-07<br /> | publisher = [[John Wiley &amp; Sons]]<br /> | location = [[Hoboken, New Jersey]]<br /> | isbn = 0-471-70522-5<br /> | pages = 106{{spaced ndash}}107<br /> | chapter = Communication<br /> | quote = The largest networks have traditionally been grouped as the &quot;Big Four&quot;: EFNet, IrcNet, QuakeNet, and UnderNet.<br /> }}&lt;/ref&gt;{{mdash}} 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.<br /> <br /> Historically the &quot;Big Four&quot; were:&lt;ref name=&quot;the book of irc&quot; /&gt;&lt;ref name=&quot;encyclopedia of new media&quot; /&gt;&lt;ref name=&quot;the imac book&quot; /&gt;<br /> * [[EFnet]]<br /> * [[IRCnet]]<br /> * [[Undernet]]<br /> * [[DALnet]]<br /> <br /> IRC reached 6 million simultaneous users in 2001 and 10 million users in 2003.{{citation needed|date=January 2015}}<br /> <br /> As of March 2015 the largest IRC networks were:<br /> <br /> * [[freenode]] – around 99k users at peak hours<br /> * [[IRCNet]] – around 44k users at peak hours<br /> * [[QuakeNet]] – around 36k users at peak hours<br /> * [[EFnet]] – around 26k users at peak hours<br /> * [[Undernet]] – around 25k users at peak hours<br /> * [[rizon]] – around 25k users at peak hours<br /> <br /> Today, the top 100 IRC networks have around [http://irc.netsplit.de/networks/top100.php 460k users connected at peak hours].<br /> <br /> ===Timeline===<br /> <br /> {{Simple Horizontal timeline<br /> <br /> |from=1990<br /> |to=2014<br /> |inc=2<br /> <br /> |styleDefault-borderbottom=solid 0.1em black;<br /> <br /> |row1=timeline<br /> |row1-style=styleDefault<br /> |row1-bordertop=solid 0.1em black;<br /> |row1-1-color=#ffbb33<br /> |row1-1-from=1990<br /> |row1-1-to=2014<br /> |row1-1-text=[[EFnet]]<br /> <br /> |row2=timeline<br /> |row2-style=styleDefault<br /> |row2-1-from=1990<br /> |row2-1-to=1992<br /> |row2-2-to=2014<br /> |row2-2-text=[[Undernet]]<br /> |row2-2-color=#33b5e5<br /> <br /> |row3=timeline<br /> |row3-style=styleDefault<br /> |row3-1-from=1990<br /> |row3-1-to=1994<br /> |row3-2-color=#cc0000<br /> |row3-2-to=2014<br /> |row3-2-text=[[DALnet]]<br /> <br /> |row4=timeline<br /> |row4-style=styleDefault<br /> |row4-1-from=1990<br /> |row4-1-to=1995<br /> |row4-2-color=#aa66cc<br /> |row4-2-to=2014<br /> |row4-2-text=[[freenode]]<br /> <br /> |row5=timeline<br /> |row5-style=styleDefault<br /> |row5-1-from=1990<br /> |row5-1-to=1997<br /> |row5-2-color=#99cc00<br /> |row5-2-to=2014<br /> |row5-2-text=[[IRCnet]]<br /> <br /> |row6=timeline<br /> |row6-style=styleDefault<br /> |row6-1-from=1990<br /> |row6-1-to=1997<br /> |row6-2-color=#ff4444<br /> |row6-2-to=2014<br /> |row6-2-text=[[QuakeNet]]<br /> <br /> |row7=timeline<br /> |row7-1-from=1990<br /> |row7-1-to=2002<br /> |row7-2-color=#ff44ff<br /> |row7-2-to=2014<br /> |row7-2-text=[[Rizon]]<br /> <br /> |row8=scale<br /> |caption=IRC networks<br /> }}<br /> <br /> ==URI scheme==<br /> There are three recognized [[URI scheme]]s for Internet Relay Chat, irc, irc6, and ircs,&lt;ref&gt;{{cite web<br /> | url = http://www.iana.org/assignments/uri-schemes.html<br /> | title = Uniform Resource Identifier (URI) Schemes<br /> | publisher = Internet Assigned Numbers Authority | accessdate = 2012-10-14<br /> }}&lt;/ref&gt; that (when supported) allows [[hyperlink]]s of various forms, including<br /> &lt;nowiki&gt;irc://&lt;host&gt;[:&lt;port&gt;]/[&lt;channel&gt;[?&lt;channel_keyword&gt;]]&lt;/nowiki&gt;<br /> (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.&lt;ref&gt;{{cite IETF<br /> | title = Uniform Resource Locator Schemes for Internet Relay Chat Entities<br /> | draft = draft-butcher-irc-url-04<br /> | last = Butcher<br /> | first = Simon<br /> | year = 2003<br /> | month = January<br /> | publisher = [[Internet Engineering Task Force|IETF]]<br /> | accessdate = 2011-04-10<br /> }}&lt;/ref&gt; (This can be used within the client itself, or from another application such as a Web browser). irc is the default URI, irc6 specifies a connection to be made using IPv6, and ircs specifies a secure connection.<br /> <br /> Per the specification, the usual [[hash symbol]] (#) will be prepended to channel names that 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.<br /> <br /> Some implementations allow multiple channels to be specified, separated by commas.{{Citation needed|date=April 2011}}<br /> <br /> ==Clients==<br /> <br /> ===Client software===<br /> {{Details|Comparison of Internet Relay Chat clients}}<br /> [[File:Ircnetz-Schema.svg|right|thumb|Scheme of an IRC network with [[Client (computing)|normal clients]] (green), [[IRC bot|bots]] (blue) and [[Bouncer (networking)|bouncers]] (orange)]]<br /> <br /> Client software exists for various operating systems or software packages, as well as web-based or inside games. Many different clients are available for the various [[operating systems]], including [[Microsoft Windows|Windows]], [[Unix]] &amp; [[Linux]], [[Mac OS X]] and mobile operating systems (such as [[iOS]] and [[Android (operating system)|Android]]). On Windows, [[mIRC]] is one of the most popular clients.&lt;ref&gt;{{cite book|last=Smith|first=Roderick W.|title=The Multi-Boot Configuration Handbook| url= http://books.google.com/books?id=OuPtI5fHhBoC|accessdate=2010-07-25|series= Handbook Series| date= 2000-04-08| publisher= [[Que Publishing]]| location= [[Upper Saddle River, New Jersey]]|isbn= 0-7897-2283-6|page=289|chapter=The Internet: Using IRC to Get Help|quote= mIRC is one of the most popular Windows IRC clients.}}&lt;/ref&gt;<br /> <br /> Some programs which are extensible through [[plug-in (computing)|plug-ins]] also serve as platforms for IRC clients. For instance, a client called [[ERC (software)|ERC]], written entirely in [[Emacs Lisp]] is included in v.22.3 of Emacs. Therefore, any platform that can run Emacs can run ERC.<br /> <br /> A number of [[web browser]]s have built in IRC clients, such as [[Opera (Web browser)|Opera]] ([[Features of the Opera web browser#Legacy features|version 12.17 and earlier]])&lt;ref&gt;{{cite web| url=http://operawiki.info/OperaIRC| title = Opera Browser Wiki: IRC Client| accessdate = 2011-04-10}}&lt;/ref&gt; or the [[ChatZilla]] add-on for Mozilla [[Firefox]] (included as a built-in component of [[SeaMonkey]]). Web-based clients, such as [[Mibbit]] and open source [[KiwiIRC]], can run in most browsers.<br /> <br /> Games such as ''[[War§ow]]'',&lt;ref&gt;{{cite web<br /> | url = http://www.warsow.net/wiki/index.php?title=IRC_Module<br /> | title = Warsow Wiki: IRC Module<br /> | accessdate = 2011-04-10<br /> }}&lt;/ref&gt; ''[[Unreal Tournament]]'' (up to [[Unreal Tournament 2004]]),&lt;ref&gt;{{cite web<br /> | url = http://www.bcchardware.com/index.php?option=com_content&amp;task=view&amp;id=35&amp;Itemid=40<br /> | title = UT2004 Review<br /> | accessdate = 2011-04-10<br /> | last = Guenter<br /> | first = Daniel<br /> | date = 2004-06-21<br /> | publisher = BCCHardware<br /> }}&lt;/ref&gt; ''[[Uplink (video game)|Uplink]]'',&lt;ref&gt;{{cite web<br /> | url = http://guide.modlink.net/section11.php<br /> | title = The Ultimate Uplink Guide<br /> | accessdate = 2011-04-10<br /> }}&lt;/ref&gt; ''[[Spring Engine]]''-based games, [[0 A.D. (video game)|0 A.D.]] and ''[[ZDaemon]]'' have included IRC.&lt;ref&gt;{{cite web<br /> | url = http://doomwiki.org/wiki/ZDaemon#Other_utilities<br /> | title = ZDaemon – The Doom Wiki: Other utilities<br /> | accessdate = 2011-04-10<br /> }}&lt;/ref&gt;<br /> <br /> [[Ustream]]'s chat interface is [[IRC]] with custom authentication&lt;ref&gt;{{cite web<br /> | url = http://ustream-helpers.com/how-to/ircclient<br /> | title = How to setup an IRC client to connect and login to Ustream<br /> | accessdate = 2013-04-27<br /> | date = 2012-01-29<br /> | publisher = Ustream-Helpers<br /> }}&lt;/ref&gt; as well as [[Justin.tv]]'s.&lt;ref&gt;{{cite web<br /> | url = http://www.liquidsilver.org/2010/06/ustream-v-justin/<br /> | title = Ustream vs. Justin.tv<br /> | accessdate = 2011-07-13<br /> | date = 2010-06-20<br /> | publisher = LiquidSilver<br /> | author = Mauldor<br /> }}&lt;/ref&gt;<br /> <br /> ===Bots===<br /> {{Main|IRC bot}}<br /> <br /> A typical use of bots in IRC is to provide [[Internet Relay Chat services|IRC services]] or a specific functionality within a channel such as to host a chat-based game or provide notifications of external events.<br /> <br /> ===Bouncer===<br /> {{Main|BNC (software)}}<br /> A program that runs as a [[daemon (computer software)|daemon]] on a [[Server (computing)|server]] and functions as a persistent [[proxy server|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.{{Citation needed|date=April 2011}} 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.&lt;ref&gt;{{cite web<br /> | url = http://www.psybnc.at/readme.txt<br /> | title = psyBNC Readme<br /> | accessdate = 2011-04-10<br /> | publisher = psybnc.at<br /> }}&lt;/ref&gt;<br /> <br /> 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 [[secure shell|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.&lt;ref&gt;{{cite web<br /> | url = http://chriscarey.com/wordpress/2009/07/18/irc-with-irssi-proxy-screen/<br /> | title = IRC with irssi-proxy + screen<br /> | accessdate = 2011-04-10<br /> | last = Carey<br /> | first = Chris<br /> | date = 2009-07-18<br /> | publisher = chriscarey.com<br /> }}&lt;/ref&gt;<br /> <br /> 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.&lt;ref&gt;{{cite web<br /> | url = http://www.smuxi.org/blog/show/Detachable_Frontend_Core_Rewrite__UML__Windows_Port_kicking_Glade<br /> | title = Detachable Frontend (Core Rewrite) / UML / Windows Port (kicking Glade)<br /> | accessdate = 2010-07-25<br /> | date = 2004-12-25<br /> | publisher = smuxi.org<br /> }}&lt;/ref&gt;&lt;ref&gt;{{cite web<br /> | url = http://www.smuxi.org/page/About<br /> | title = About Smuxi<br /> | accessdate = 2011-04-10<br /> | publisher = smuxi.org<br /> }}&lt;/ref&gt;<br /> <br /> ==Search engines==<br /> There are numerous search engines available to aid the user in finding what they are looking for on IRC.&lt;ref&gt;{{cite book<br /> | last = Mutton<br /> | first = Paul<br /> | title = IRC Hacks<br /> | edition = 1st<br /> | date = 2004-07-27<br /> | publisher = [[O'Reilly Media]]<br /> | location = [[Sebastopol, California]]<br /> | isbn = 0-596-00687-X<br /> | pages = 44{{spaced ndash}}46<br /> | chapter = Users and Channels<br /> }}&lt;/ref&gt;&lt;ref&gt;{{cite book<br /> | last = Wang<br /> | first = Wallace<br /> | title = Steal this File Sharing Book<br /> | edition = 1st<br /> | date = 2004-10-25<br /> | publisher = [[No Starch Press]]<br /> | location = [[San Francisco, California]]<br /> | isbn = 1-59327-050-X<br /> | pages = 65{{spaced ndash}}67<br /> | chapter = Instant Messaging and Online Chat Rooms: Internet Relay Chat (IRC)<br /> }}&lt;/ref&gt; Generally the search engine consists of two parts, a &quot;back-end&quot; (or &quot;spider/crawler&quot;) and a front-end &quot;search engine&quot;.<br /> <br /> 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 database|Oracle]].{{Citation needed|date=January 2010}}<br /> <br /> The front-end &quot;search engine&quot; 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.<br /> <br /> Most search engines have their own spider that is a single application responsible for crawling IRC and indexing data itself; however, others are &quot;user based&quot; indexers. The latter rely on users to install their &quot;add-on&quot; 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|date=August 2009}}<br /> <br /> Many users have implemented their own [[ad hoc]] search engines using the logging features built into many IRC clients.<br /> <br /> ==Modern IRC==<br /> IRC has changed much over its life on the Internet. New server software has added a multitude of new features.<br /> * [[IRC services|Services]]: Network-operated bots to facilitate registration of nicknames and channels, sending messages for offline users and network operator functions.<br /> * 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 (&quot;cloaking&quot;) to protect from [[denial-of-service attack]]s.{{Citation needed|date=January 2010}}<br /> * 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 [http://www.blitzed.org/proxy 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|date=January 2010}}<br /> * 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|date=January 2010}}<br /> * [[Encryption]]: For the client-to-server leg of the connection [[Secure Sockets Layer|SSL]] might be used (messages cease to be secure once they are relayed to other users on standard connections, but it makes [[Man-in-the-middle attack|eavesdropping]] on or wiretapping an individual's IRC sessions difficult). For client-to-client communication, [[Secure Direct Client-to-Client|SDCC]] (Secure DCC) can be used.{{Citation needed|date=January 2010}}<br /> * 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.<br /> <br /> There is an effort of standardization and adding new features to the IRC protocol by IRCv3 working group.&lt;ref&gt;{{cite web<br /> | url = http://www.ircv3.org/<br /> | title = IRCv3 Working Group<br /> | accessdate = 2014-03-08<br /> }}&lt;/ref&gt;<br /> <br /> ==Character encoding==<br /> IRC still lacks a single globally accepted standard convention for how to transmit characters outside the 7-bit [[ASCII]] repertoire.<br /> IRC servers normally{{Clarify|date=July 2009}} transfer messages from a client to another client just as byte sequences, without any interpretation or recoding of [[character (computing)|characters]]. The IRC protocol (unlike e.g. [[MIME]] or [[HTTP]]) lacks mechanisms for announcing and negotiating 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:<br /> <br /> * '''7-bit era:''' In the early days of IRC, especially among [[North Germanic languages|Scandinavian]] and [[Finnish language]] users, national variants of [[ISO 646]] were the dominant [[character encoding]]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.&lt;ref name=&quot;rfc 1459 2.2 character codes&quot; /&gt; 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.<br /> <br /> * '''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|date=October 2008}}&lt;!-- Some networks offer MacCyrillic under the name «ISO 8859-5». But MacCyrillic has virtually nothing common with ISO 8859-5, this naming confusion just indicates the depth of programmers' ignorance. --Incnis Mrsi --&gt; and [[CP1251]], and since about 2000, modern Russian IRC networks convert between these different commonly used encodings of the [[Cyrillic script]].<br /> <br /> * '''Multi-byte era:''' For a long time, East Asian IRC channels with ideographic scripts in China, Japan, and Korea have been using multi-byte encodings such as [[Extended Unix Code|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ö|Merkistö]] &lt;small&gt;(Finnish)&lt;/small&gt;).<br /> <br /> 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.<br /> <br /> ==File sharing==<br /> Much like conventional [[Peer-to-peer|P2P]] 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.&lt;ref&gt;{{cite web<br /> | url = http://www.zdnet.com/news/pirated-movies-now-playing-on-a-server-near-you/122663<br /> | title = Pirated movies: Now playing on a server near you<br /> | accessdate = 2011-04-10<br /> | last = Vamosi<br /> | first = Robert<br /> | date = 2002-05-08<br /> | publisher = [[ZDNet]]<br /> }}&lt;/ref&gt;<br /> <br /> 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.&lt;ref&gt;{{cite web<br /> | url = http://www.macobserver.com/tip/2002/04/04.1.shtml<br /> | title = IRC 101: What Is It &amp; How Do I Use It?<br /> | accessdate = 2011-04-10<br /> | last = Sasaki<br /> | first = Darla<br /> | date = 2002-04-04<br /> | publisher = Macobserver.com<br /> }}&lt;/ref&gt; 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.<br /> <br /> ==See also==<br /> {{Portal|Internet Relay Chat}}<br /> * [[Chat room]]<br /> * [[Client-to-client protocol]]<br /> * [[Comparison of instant messaging protocols]]<br /> * [[Comparison of IRC clients]]<br /> * [[Comparison of IRC daemons]]<br /> &lt;!-- * [[Comparison of IRC services]] --&gt;<br /> * [[Internet slang]]<br /> * [[List of IRC commands]]<br /> * [[Serving channel]]<br /> * [[The Hamnet Players]]<br /> <br /> ==References==<br /> {{reflist|30em}}<br /> <br /> ==Bibliography==<br /> * {{cite IETF<br /> | title = A Discussion on Computer Network Conferencing<br /> | rfc = 1324<br /> | last = Reed<br /> | first = Darren<br /> | year = 1992<br /> | month = May<br /> | publisher = [[Internet Engineering Task Force|IETF]]<br /> | accessdate = 2009-10-30<br /> | ref = ietf<br /> }}<br /> * {{cite IETF<br /> | title = Internet Relay Chat Protocol<br /> | rfc = 1459<br /> | last1 = Oikarinen<br /> | first1 = Jarkko<br /> | authorlink1 = Jarkko Oikarinen<br /> | last2 = Reed<br /> | first2 = Darren<br /> | year = 1993<br /> | month = May<br /> | publisher = [[Internet Engineering Task Force|IETF]]<br /> | accessdate = 2009-10-30<br /> | ref = ietf<br /> }}<br /> * {{cite IETF<br /> | title = Internet Relay Chat: Architecture<br /> | rfc = 2810<br /> | last = Kalt<br /> | first = Christophe<br /> | year = 2000<br /> | month = April<br /> | publisher = [[Internet Engineering Task Force|IETF]]<br /> | accessdate = 2009-10-30<br /> | ref = ietf<br /> }}<br /> * {{cite IETF<br /> | title = Internet Relay Chat: Channel Management<br /> | rfc = 2811<br /> | last = Kalt<br /> | first = Christophe<br /> | year = 2000<br /> | month = April<br /> | publisher = [[Internet Engineering Task Force|IETF]]<br /> | accessdate = 2009-10-30<br /> | ref = ietf<br /> }}<br /> * {{cite journal<br /> | last = Loesch<br /> | first = Carl<br /> | date = 2003-07-17<br /> | title = Functionality Provided by Systems for Synchronous Conferencing<br /> | publisher = psyc.eu<br /> | url = http://www.psyc.eu/synconf<br /> | accessdate = 2011-04-10<br /> | ref = harv<br /> }}<br /> <br /> ==Further reading==<br /> * {{cite IETF<br /> | title = Internet Relay Chat: Client Protocol<br /> | rfc = 2812<br /> | last = Kalt<br /> | first = Christophe<br /> | year = 2000<br /> | month = April<br /> | publisher = [[Internet Engineering Task Force|IETF]]<br /> | accessdate = 2009-10-30<br /> }}<br /> * {{cite IETF<br /> | title = Internet Relay Chat: Server Protocol<br /> | rfc = 2813<br /> | last = Kalt<br /> | first = Christophe<br /> | year = 2000<br /> | month = April<br /> | publisher = [[Internet Engineering Task Force|IETF]]<br /> | accessdate = 2009-10-30<br /> }}<br /> * {{cite web<br /> | url = http://www.ibiblio.org/pub/academic/communications/logs/<br /> | title = Logs of major events in the online community<br /> | accessdate = 2011-04-08<br /> | publisher = [[ibiblio]]<br /> | location = [[Chapel Hill, North Carolina]]<br /> }}<br /> * {{cite web<br /> | url = http://www.alien.net.au/irc/<br /> | title = IRC technical information<br /> | accessdate = 2011-04-10<br /> | last = Butcher<br /> | first = Simon<br /> | publisher = alien.net.au<br /> }}<br /> <br /> ==External links==<br /> {{Wikibooks|Internet Technologies|IRC}}<br /> {{Commons category|IRC}}<br /> * {{Dmoz|Computers/Internet/Chat/IRC|IRC}}<br /> * [http://www.alien.net.au/irc/irc2numerics.html IRC/2 Numerics List]<br /> * [http://www.irc.org/history.html History of IRC]<br /> * [http://www.irc.org/ IRC.org] – Technical and Historical IRC6 information; Articles on the history of IRC<br /> * [http://www.irchelp.org/ IRChelp.org] – Internet Relay Chat (IRC) help archive; Large archive of IRC-related documents<br /> * [http://www.ircv3.org/ IRCv3] – Working group of developers, who add new features to the protocol and write specs for them<br /> <br /> {{IRC topics}}<br /> {{URI scheme}}<br /> {{Computer-mediated communication}}<br /> <br /> [[Category:Internet Relay Chat| ]]<br /> [[Category:Application layer protocols]]<br /> [[Category:Finnish inventions]]<br /> [[Category:Internet terminology]]<br /> [[Category:Virtual communities]]<br /> [[Category:1988 introductions]]</div> Categorization