Misplaced Pages

IRCd

Article snapshot taken from Wikipedia with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.

An IRCd , short for Internet Relay Chat daemon , is server software that implements the IRC protocol , enabling people to talk to each other via the Internet (exchanging textual messages in real time). It is distinct from an IRC bot that connects outbound to an IRC channel.

#588411

90-414: The server listens to connections from IRC clients on a set of TCP ports . When the server is part of an IRC network, it also keeps one or more established connections to other servers/daemons. The term ircd originally referred to only one single piece of software, but it eventually became a generic reference to any implementation of an IRC daemon. However, the original version is still distributed under

180-490: A Q-line forbids a nickname, or any nickname matching a given pattern. This is most often used to forbid use of services nicknames (such as "X", or NickServ ) or forbid use of IRC operator nicknames by non-operators. Some IRC daemons may disconnect users when initially applying the Q-line, whilst others will force a nickname change, or do nothing until the user covered by the Q-line reconnects. Other IRCds, like ircd-hybrid, use

270-445: A ChanServ bot; some other services use other names, such as CS . The exact commands and features available depend on the service implementation and the network in question. OperServ is a component of most IRC services packages used to help administer an Internet Relay Chat network. It provides IRC operators with functions to help monitor and maintain the network, manage the other services, and deal with problematic users. Some of

360-422: A G-line could use *@*example.com, whereas Z-line would require *@37.*.*.*, *@38.*.*.*, and *@68.*.*.* to accomplish the same thing. Z-lines can also be global, in which case they are called GZ-lines . GZ-lines work in the same manner as Z-lines, except that they propagate to every server on the network. Some IRC daemons may also be configured to share Z-lines with other servers. On some IRCds, such as UnrealIRCd,

450-544: A Latin letter "+o"/"o"). On most networks, an operator can: There are also users who maintain elevated rights on their local server, or the entire network; these are called IRC operators, sometimes shortened to IRCops 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 claims that IRC operators are "a necessary evil" to keep

540-408: A Z-line does not have to check usernames (identd) or resolved hostnames, it can be applied to a user before they send any data at all upon connection. Therefore, a Z-line is more efficient and uses fewer resources than a K-line or G-line when banning large numbers of users. In some IRC daemons such as ircd-hybrid, this is called a D-line (deny line) or an X-line . Z-lines are sometimes stored in

630-492: A Z-line, and therefore some IRCd programs will not allow anything other than *@IP, with wildcards (?,*) or CIDR prefix lengths ( e.g. /8) allowed in the IP section to block entire subnets. Another difference from K-lines (which affect only IRC clients) is if an IP is banned, nothing, not even other servers, can connect from this IP (or IP range, depending on the banmask). One advantage to using Z-lines over K-lines and G-lines, from

720-481: A certain hostmask or IP address can gain IRC operator status using that O-line. Using hostmasks and IP addresses in the O-line requires the IP address to remain the same but provides additional security. When a user is k-lined (short for kill line ), the user is banned from a certain server, either for a certain amount of time or permanently. Once the user is banned, they are not allowed back onto that server. This

810-732: A 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 IP addresses or complete subnets. Networks that carry services (NickServ et al.) usually allow their IRC operators also to handle basic "ownership" matters. Further privileged rights may include overriding channel bans (being able to join channels they would not be allowed to join, if they were not opered), being able to op themselves on channels where they would not be able without being opered, being auto-opped on channels always and so forth. A hostmask

900-416: A common solution is to use IRCv3 "multi-prefix" extension. Many daemons and networks have added extra modes or modified the behavior of modes in the above list. A channel operator is a client on an IRC channel that manages the channel. IRC channel operators can be easily seen by the symbol or icon next to their name (varies by client implementation, commonly a "@" symbol prefix, a green circle, or

990-487: A message explaining the reasoning behind the ban. G-lines are a variant of K-lines, which work in much the same way, except K-lines only disconnect clients on one server of the network. G-lines are normally applied to a user who has received a K-line on one server but continues to abuse the network by connecting via a different server. G-lines are often regarded as an extreme measure, only to be used in cases of repeated abuse when extensive attempts have been made to reason with

SECTION 10

#1732772485589

1080-420: A network of IRC servers is a tree . Messages are routed along only necessary branches of the tree but network state is sent to every server and there is generally a high degree of implicit trust between servers. However, this architecture has a number of problems. A misbehaving or malicious server can cause major damage to the network and any changes in structure, whether intentional or a result of conditions on

1170-578: A number of fake clients whose names end in "Serv". The four below are nearly always seen in services of this style. Some others are also seen following this naming convention in some services packages including: Other commonly used services bots: The original NickServ was written by Armin Gruner at the Technical University of Munich in 1990. The original intention was to give out friendly warnings that somebody else already likes to use

1260-410: A public debate over the usefulness and safety of services and the discontinuation of NickServ on EFnet, and EFnet 's current Nicknames are not owned policy arose. In 1995 DALnet invented ChanServ , then re-implemented NickServ and MemoServ . Today, EFnet and IRCnet are the last large IRC networks which stick to their policy of living without identity protection. Some debate still remains over

1350-528: A server or network administrator's perspective, a Z-line uses less bandwidth than a K-line, mainly because it doesn't wait for an ident response or DNS lookup. A disadvantage to using Z-line over K-line or G-line is that it becomes more difficult to ban entire ISPs and very dynamic IP addresses, common with some dialup and DSL connections. For example, if a network administrator wants to ban all of ISP example.com (with hypothetical IP address ranges of 68.0.0.0 – 68.255.255.255 and 37.0.0.0 – 38.255.255.255),

1440-412: A server or the entire network), IRCop only communications: GlobOps, +H mode showing that an IRCop is a "helpop" etc. Much of DALnet's new functions were written in early 1995 by Brian "Morpher" Smith and allow users to own nicknames, control channels, send memos, and more. In July 1996, after months of flame wars and discussions on the mailing list, there was yet another split due to disagreement in how

1530-495: A server specific ban of a channel, which means that a specific channel cannot be joined when connected to a certain server, but other servers may allow a user to join the channel. This is a way of banning access to problematic channels. An O-line (frequently also spelled as O:line ; on IRCds that support local operators, the O-lines of those are called o:lines with a lower-case O), shortened from Operator Line and derived from

1620-504: A server use '&'. Other less common channel types include '+' channels—'modeless' channels without operators —and '!' channels, a form of timestamped channel on normally non-timestamped networks. Users and channels may have modes that are represented by individual case-sensitive letters and are set using the MODE command. User modes and channel modes are separate and can use the same letter to mean different things (e.g. user mode "i"

1710-468: A similar concept known as an AKill was used. G-lines are sometimes stored in the configuration file of the IRCd, although some networks, who handle K-lines through the IRC services , prefer to have them stored in their service's configuration files. Whenever a G-lined person attempts to connect to the IRC network, either the services or the IRC daemon will automatically disconnect the client, often displaying

1800-494: A specific nickname , since the IRC protocol has no built-in provision to protect electronic identities. NoteServ and MsgServ followed up soon after the introduction of NickServ, and had a similar job to today's MemoServ . It was considered acceptable behavior simply to /ignore NickServ's notices, but an operator decided to /kill NickServ and use the nickname NickServ himself, subsequently collecting all identify passwords from users and being amused by that. This led to

1890-469: A user is affiliated with a group or project. IRC services IRC services is a set of features implemented on many Internet Relay Chat networks. Services are automated bots with special status which are generally used to provide users with access with certain privileges and protection. They usually implement some sort of login system so that only people on the access control list can obtain these services. The most popular style of services uses

SECTION 20

#1732772485589

1980-419: Is a unique identifier of an IRC client connected to an IRC server . IRC servers , services , and other clients, including bots , can use it to identify a specific IRC session. The format of a hostmask is nick!user@host . The hostmask looks similar to, but should not be confused with an e-mail address . The nick part is the nickname chosen by the user and may be changed while connected. The user part

2070-506: Is an extension to the Internet Relay Chat protocol for server to server communications developed initially by the developers of ircd-ratbox. It has been extended by various IRC software and has the feature that proper implementations of TS6 can link to each other by using feature negotiation—even if features are disparate. Juping a server, a channel, or a nickname refers to the practice of blocking said channel or nickname on

2160-602: Is an extension to the IRC protocol developed by Microsoft The P10 protocol is an extension to the Internet Relay Chat protocol for server to server communications developed by the Undernet Coder Committee to use in their ircu server software. It is similar in purpose to IRCX and EFnet TS5/TS6 protocols and implements nick and channel timestamping for handling nick collisions and netsplit channel riding, respectively. Other IRCd's that utilize this protocol extension include beware ircd . The TS6 protocol

2250-406: Is delivered in a fashion similar to multicast , meaning each message travels a network link exactly once. This is a strength in comparison to non-multicasting protocols such as Simple Mail Transfer Protocol (SMTP) or Extensible Messaging and Presence Protocol (XMPP) . An IRC daemon can be used on a local area network (LAN). IRC can thus be used to facilitate communication between people within

2340-541: Is implemented as an application layer protocol to facilitate communication in the form of text. The chat process works on a client–server networking model . Users connect, using a client—which may be a web app , a standalone desktop program , or embedded into part of a larger program—to an IRC server, which may be part of a larger IRC network. Examples of programs used to connect include Mibbit , IRCCloud , KiwiIRC , and mIRC . IRC usage has been declining steadily since 2003, losing 60 percent of its users. In April 2011,

2430-422: Is invisible mode while channel mode "i" is invite only. ) Modes are usually set and unset using the mode command that takes a target (user or channel), a set of modes to set (+) or unset (-) and any parameters the modes need. Some channel modes take parameters and other 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

2520-451: Is recorded as a line in the server's IRC daemon configuration file prefixed with the letter "K", hence "K-line". Some IRC daemons, including ircd-hybrid and its descendants, can be configured to propagate K-lines to some or all other servers on a network. In such a configuration, K-lines are effectively global bans similar to G-lines. While the precise reason for the disconnection varies from case to case, usual reasons involve some aspect of

2610-557: Is that the best platforms for ircds are those that offer efficient mechanisms for handling huge numbers of connections in a single thread. Linux offers this ability in the form of epoll , in kernel series newer than 2.4.x. FreeBSD (since 4.1) and OpenBSD (since 2.9) offers kqueue . Solaris has had /dev/poll since version 7, and from version 10 onwards has IOCP (I/O Completion Ports). Windows has supported IOCP since Windows NT 3.5. The difference made by these new interfaces can be dramatic. IRCU developers have mentioned increases in

2700-477: Is the username reported by ident on the client. If ident is not available on the client, the username specified when the client connected is used after being prefixed with a tilde . 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. Because of the privacy implications of exposing

2790-488: Is used by IRCnet and it can be found at http://www.irc.org/ftp/irc/server/ The original ircd is free software , licensed under the GNU General Public License . This development line produced the 4 IRC RFCs released after RFC 1459, which document this server protocol exclusively. 2.8.21+CS and Hybrid IRCd continue to be used on EFnet , with ircd-ratbox (an offshoot of ircd-hybrid) as of 2004 being

IRCd - Misplaced Pages Continue

2880-505: The server or network or said server on the network. One possible explanation of how this term came about is that it is named after the oper named Jupiter, who gained control of the nickname NickServ on EFnet . EFnet does not offer services such as NickServ; Jupiter gained control of the nickname as he (among other operators) did not believe nicknames should be owned. Today, EFnet opers jupe nicknames that are used as services on other networks. A nickname or server jupe takes advantage of

2970-486: The "RESV" ("reserve") command instead, with the stats letter remaining as Q. The "RESV" command can also forbid a channel from being used. IRC client IRC ( Internet Relay Chat ) is a text-based chat system for instant messaging . IRC is designed for group communication in discussion forums, called channels , but also allows one-on-one communication via private messages as well as chat and data transfer , including file sharing . Internet Relay Chat

3060-544: The *@host option is used, the server must conduct a reverse DNS lookup on the user and then compare the returned host to the hosts in the G-line list. This results in delay, and, if the DNS doesn't return correct results, the banned user may still get on the network. A Z-line or zap line (also written Z:line ) is similar to a K-line, but applied to a client's IP address range, and is considered to be used in extreme cases. Because

3150-825: The EFnet ircd version 2.8.10). It was meant to be just a test network to develop bots on but it quickly grew to a network "for friends and their friends". In Europe and Canada a separate new network was being worked on and in December the French servers connected to the Canadian ones, and by the end of the month, the French and Canadian network was connected to the US one, forming the network that later came to be called "The Undernet ". The "undernetters" wanted to take ircd further in an attempt to make it use less bandwidth and to try to sort out

3240-607: The Finnish network. They had obtained the program from one of Oikarinen's friends, Vijay Subramaniam—the first non-Finnish person to use IRC. IRC then grew larger and got used on the entire Finnish national network— FUNET —and then connected to Nordunet , the Scandinavian branch of the Internet. In November 1988, IRC had spread across the Internet and in the middle of 1989, there were some 40 servers worldwide. In August 1990,

3330-487: The IP address or hostname of a client, some IRC daemons also provide privacy features, such as InspIRCd or UnrealIRCd's "+x" mode. This hashes a client IP address or masks part of a client's hostname, making it unreadable to users other than IRCops . Users may also have the option of requesting a "virtual host" (or "vhost"), to be displayed in the hostmask to allow further anonymity. Some IRC networks, such as Libera Chat or Freenode , use these as "cloaks" to indicate that

3420-475: The IRC command LIST , which lists all currently available channels that do not have the modes +s or +p set, on that particular network. Users can join a channel using the JOIN command, in most clients available as /join #channelname . Messages sent to the joined channels are then relayed to all other users. Channels that are available across an entire IRC network are prefixed with a '#', while those local to

3510-417: The IRC network. Users access IRC networks by connecting a client to a server. 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 nickname is required before being connected. IRC was originally a plain text protocol (although later extended), which on request

3600-401: The IRC protocol have been published, there is no official specification, as the protocol remains dynamic. Virtually no clients and very few servers rely strictly on the above RFCs as a reference. Microsoft made an extension for IRC in 1998 via the proprietary IRCX . They later stopped distributing software supporting IRCX, instead developing the proprietary MSNP . The standard structure of

3690-403: The IRC protocol is used, and many IRC clients and bots are forced to compromise on features or vary their implementation based on the server to which they are connected. These are often implemented for the purpose of improving usability, security, separation of powers, or ease of integration with services . Possibly one of the most common and visible differences is the inclusion or exclusion of

IRCd - Misplaced Pages Continue

3780-578: The IRC server. Some "bridge" servers do exist, to allow linking of, for example, 2.10 servers to TS5 servers, but these are often accompanied with restrictions of which parts of each protocol may be used, and are not widely deployed. Significant releases based on 2.8 included: The original code base continued to be developed mainly for use on the IRCnet network. New server-to-server protocols were introduced in version 2.10, released in 1998, and in 2.11, first released in 2004, and current as of 2007. This daemon

3870-501: The IRC services would automatically "kill" (disconnect) the user remotely upon login, rather than the individual servers simply denying the connection. On OpenNap networks, OperServ is a pseudo-user which allows users above a specific permission level to execute server administration commands. Although primarily intended to supplement clients without built-in support for such actions, there are no restrictions on its use. There are several software packages that implement services. Some of

3960-463: The Internet. New server software has added a multitude of new features. As of 2016 , a new standardization effort is under way under a working group called IRCv3, which focuses on more advanced client features such as instant notifications, better history support and improved security. As of 2019 , no major IRC networks have fully adopted the proposed standard. As of June 2021, there are 481 different IRC networks known to be operating, of which

4050-568: The STARTTLS standard which allows for TLS and plain text connections to co-exist on the same TCP port. IRC daemons support IPv4 , and some also support IPv6 . In general, the difference between IPv6 and IPv4 connections to IRC is purely academic and the service operates in much the same manner through either protocol. Large IRC networks consist of multiple servers for horizontal scaling purposes. There are several IRC protocol extensions for these purposes. IRCX (Internet Relay Chat eXtensions)

4140-508: The US side. Most (not all) of the IRCnet servers were in Europe, while most of the EFnet servers were in the US. This event is also known as "The Great Split" in many IRC societies. EFnet has since (as of August 1998) grown and passed the number of users it had then. In the (northern) autumn of the year 2000, EFnet had some 50,000 users and IRCnet 70,000. IRC has changed much over its life on

4230-534: The administrative needs of the server and network. Operator flags are used to describe the permissions an operator is granted. While some IRC operators may be in charge of network routing, others may be in charge of network abuse, making their need for certain permissions different. Operator flags available vary widely depending on which IRC daemon is in use. Generally, more feature rich IRC daemons tend to have more operator flags, and more traditional IRC daemons have fewer. An O-line may also be set so that only users of

4320-539: The channel topic described the kind of conversation that took place in the channel. One holdover of this is that joining channel 0 causes a client to leave all the channels it is presently on: "CHANNEL 0" being the original command to leave the current channel. The first major change to IRC, in version 2.5, was to add named channels – "+channels". "+channels" were later replaced with "#channels" in version 2.7, numeric channels were removed entirely and channel bans (mode +b) were implemented. Around version 2.7, there

4410-444: The channel as a whole. Modes that apply to users on a channel have an associated symbol that is used to represent the mode in names replies (sent to clients on first joining a channel and use of the names command) and in many clients also used to represent it in the client's displayed list of users in a channel or to display an own indicator for a user's modes. In order to correctly parse incoming mode messages and track channel state

4500-531: The channel chaos ( netsplits and takeovers ) that EFnet started to suffer from. For the latter purpose, the Undernet implemented timestamps, new routing and offered the CService—a program that allowed users to register channels and then attempted to protect them from troublemakers. The first server list presented, from 15 February 1993, includes servers from the U.S., Canada, France, Croatia and Japan. On 15 August,

4590-453: The channel, gaining channel operator privileges. Most channel service bots also allow other sorts of channel management options, such as topic locks (in addition to +t), mode locks, and providing users automatically with operator status, half-operator status, voice, or other access, as designated by the channel owners. They may also provide some form of automated ban-list management. There are several implementations of IRC services which have

SECTION 50

#1732772485589

4680-418: The client does not recognize) passed directly to the server, possibly with some modification. Due to the nature of the protocol, automated systems cannot always correctly pair a sent command with its reply with full reliability and are subject to guessing. The basic means of communicating to a group of users in an established IRC session is through a channel . Channels on a network can be displayed using

4770-455: The client must know which mode is of which type and for the modes that apply to a user on a channel which symbol goes with which letter. In early implementations of IRC this had to be hard-coded in the client but there is now a de facto standard extension to the protocol called ISUPPORT that sends this information to the client at connect time using numeric 005. There is a small design fault in IRC regarding modes that apply to users on channels:

4860-479: The client or the user it is issued against. There are a number of other network "lines" relating to the K-line. Modern IRC daemons will also allow IRC operators to set these lines during normal operation, where access to the server configuration file is not routinely needed. A G-line or global kill line (also written G:line ) is a global network ban applied to a user; the term comes from Undernet but on DALnet

4950-488: The community nature of IRC there are a large number of other networks for users to choose from. Historically the "Big Four" were: IRC reached 6 million simultaneous users in 2001 and 10 million users in 2004–2005, dropping to around 350k in 2021. The top 100 IRC networks have around 230k users connected at peak hours. Timeline of major servers: IRC is an open protocol that uses TCP and, optionally, TLS . An IRC server can connect to other IRC servers to expand

5040-401: The concept of nick and channel delay, a system designed to help curb abusive practices such as takeovers and split riding. This was not agreed on by the majority of modern IRC (EFnet, DALnet, Undernet, etc.) – and thus, 2.8 was forked into a number of different daemons using an opposing theory known as TS – or time stamping, which stored a unique time stamp with each channel or nickname on

5130-438: The configuration file of the IRCd, although some networks, who handle lines through the IRC services, prefer to have them stored in their service's configuration files. Whenever a Z-lined person attempts to connect to the IRC network, either the services or the IRC daemon will automatically disconnect the client, often displaying a message explaining the reasoning behind the ban. Z-lines are a variant of K-lines, which work in much

5220-516: The development of the ircd should evolve. Most notably, the "European" (most of those servers were in Europe) side that later named itself IRCnet argued for nick and channel delays whereas the EFnet side argued for timestamps. There were also disagreements about policies: the European side had started to establish a set of rules directing what IRCops could and could not do, a point of view opposed by

5310-481: The fact that certain identifiers are unique; by using an identifier, one acquires an exclusive lock that prevents other users from making use of it. Officially sanctioned jupes may also utilize services or server configuration options to enforce the jupe, such as when a compromised server is juped to prevent it from harming the network. In practice IRC operators now use jupe configurations to administratively make channel or nicknames unavailable. A channel jupe refers to

5400-399: The first major disagreement took place in the IRC world. The "A-net" (Anarchy net) included a server named eris.berkeley.edu. It was all open, required no passwords and had no limit on the number of connects. As Greg "wumpus" Lindahl explains: "it had a wildcard server line, so people were hooking up servers and nick-colliding everyone". The "Eris Free Network", EFnet , made the eris machine

5490-451: The first to be Q-lined (Q for quarantine) from IRC. In wumpus' words again: "Eris refused to remove that line, so I formed EFnet. It wasn't much of a fight; I got all the hubs to join, and almost everyone else got carried along." A-net was formed with the eris servers, while EFnet was formed with the non-eris servers. History showed most servers and users went with EFnet. Once A-net disbanded, the name EFnet became meaningless, and once again it

SECTION 60

#1732772485589

5580-546: The half-op channel operator status (which is not a requirement of the RFCs). The officially assigned port numbers are 194 ("irc"), 529 ("irc-serv"), and 994 ("ircs"). However, these ports are in the privileged range (0–1024), which on a Unix-like system means that the daemon would historically have to have superuser privileges in order to open them. For various security reasons this used to be undesirable. The common ports for an IRCd process are 6665 to 6669, with 6667 being

5670-416: The historical default. These ports can be opened by a non-superuser process, and they became widely used. Running a large IRC server, one that has more than a few thousand simultaneous users, requires keeping a very large number of TCP connections open for long periods. Very few ircds are multithreaded as nearly every action needs to access (at least read and possibly modify) the global state. The result

5760-454: The line-based configuration file of the original IRCd, is a line of code in an IRC daemon configuration file that determines which users can become an IRC operator and which permissions they get upon doing so. The name comes from the prefix used for the line in the original IRCd, a capital O. The O-line specifies the username, password, operator flags, and hostmask restrictions for a particular operator. A server may have many O-lines depending on

5850-405: The local area network (internal communication). IRC has a line-based structure. Clients send single-line messages to the server, receive replies to those messages and receive 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

5940-512: The more infamous functions of OperServ are the "lines", such as the K-line and G-line . These are used to discipline troublesome network users, however, other network lines are available for use. The exact features available depend upon a particular operator's permissions, and the specific implementation in use. On DALnet a similar concept known as an "AKill" was used instead of a G-line. The term AKill comes from an earlier implementation in which

6030-399: The most popular. More recently, several irc daemons were written from scratch, such as ithildin, InspIRCd, csircd (also written by Chris Behrens), ConferenceRoom, Microsoft Exchange Chat Service, WeIRCd, or IRCPlus/IRCXPro. These attempts have met with mixed success, and large doses of skepticism from the existing IRC development community. With each new IRCd, a slightly different version of

6120-402: The names message used to establish initial channel state can only send one such mode per user on the channel, but multiple such modes can be set on a single user. For example, if a user holds both operator status (+o) and voice status (+v) on a channel, a new client will be unable to see the mode with less priority (i.e. voice). Workarounds for this are possible on both the client and server side;

6210-433: The network to decide which was the 'correct' one to keep. Time stamping itself has been revised several times to fix various issues in its design. The latest versions of such protocols are: While the client-to-server protocols are at least functionally similar, server-to-server protocols differ widely (TS5, P10, and ND/CD server protocols are incompatible), making it very difficult to "link" two separate implementations of

6300-474: The new user count record was set to 57 users. In May 1993, RFC 1459 was published and details a simple protocol for client/server operation, channels, one-to-one and one-to-many conversations. A significant number of extensions like CTCP, colors and formats are not included in the protocol specifications, nor is character encoding, which led various implementations of servers and clients to diverge. Software implementation varied significantly from one network to

6390-419: The offending user. Therefore, especially on larger networks, often only very high ranking global IRC operators are permitted to set them, while K-lines, which are mostly regarded as a local affair, are left to the operators of the individual server in the network. G-lines also work slightly differently from K-lines. G-lines are typically set as *@IPaddress or *@host, with the first being the better option. If

6480-577: The open source Libera Chat , founded in May 2021, has the most users, with 20,374 channels on 26 servers; between them, the top 100 IRC networks share over 100 thousand channels operating on about one thousand servers. After its golden era during the 1990s and early 2000s (240,000 users on QuakeNet in 2004), IRC has seen a significant decline, losing around 60% of users between 2003 and 2012, with users moving to social media platforms such as Facebook or Twitter , but also to open platforms such as XMPP which

6570-538: The other, each network implementing their own policies and standards in their own code bases. During the summer of 1994, the Undernet was itself forked. The new network was called DALnet (named after its founder: dalvenjah), formed for better user service and more user and channel protections. One of the more significant changes in DALnet was use of longer nicknames (the original ircd limit being 9 letters). DALnet ircd modifications were made by Alexei "Lefler" Kosut. DALnet

6660-467: The popular ones include srvx , Atheme , DalekIRC Services , ChatServices , Hybserv (developed for use with the Hybrid IRCd software), Epona , Anope , and IRC Services 5 (supporting a wide range of IRC daemons, considered the "original" IRC Services). While some of these packages provide excellent features in the eyes of many users, some network operators decide to write their own services, with

6750-411: The practical capacity per server from 10,000 users to 20,000 users. Some IRCd support Transport Layer Security , or TLS, for those who don't, it is still possible to use SSL via Stunnel . The unofficial, but most often used port for TLS IRCd connections is 6697 . More recently, as a security enhancement and usability enhancement, various client and server authors have begun drafting a standard known as

6840-504: The protocol implemented in the irc2.4.0 version of the IRC2 server, and documented in RFC 1459. Since RFC 1459 was published, the new features in the irc2.10 implementation led to the publication of several revised protocol documents (RFC 2810, RFC 2811, RFC 2812 and RFC 2813); however, these protocol changes have not been widely adopted among other implementations. Although many specifications on

6930-494: The same name, and this article discusses both uses. The original IRCd was known as 'ircd', and was authored by Jarkko Oikarinen (WiZ on IRC) in 1988. He received help from a number of others, such as Markku Savela (msa on IRC), who helped with the 2.2+msa release, etc. In its first revisions, IRC did not have many features that are taken for granted today, such as named channels and channel operators . Channels were numbered – channel 4 and channel 57, for example – and

7020-409: The same way. Most Z-lines are "awarded" to people who abuse the network as a whole (on smaller networks, these are more frequently issued for isolated incidents). Z-lines also work slightly differently from K-lines. Z-lines are typically set as *@IP or *@host, with the first being the better option. Z-lines do not wait for an ident response from the connecting user, but immediately close the socket once

7110-813: The top 100 IRC networks served more than 200,000 users at a time. IRC was created by Jarkko Oikarinen in August 1988 to replace a program called MUT (MultiUser Talk) on a BBS called OuluBox at the University of Oulu in Finland , where he was working at the Department of Information Processing Science. Jarkko intended to extend the BBS software he administered, to allow news in the Usenet style, real time discussions and similar BBS features. The first part he implemented

7200-403: The underlying network, require a net-split and net-join. This results in a lot of network traffic and spurious quit/join messages to users and temporary loss of communication to users on the splitting servers. Adding a server to a large network means a large background bandwidth load on the network and a large memory load on the server. Once established, however, each message to multiple recipients

7290-464: The user's IP is compared to the Z-line list and a match is found. If the *@host option is used, the server must conduct a reverse DNS lookup on the user and then compare the returned host to the hosts in the Z-line list. This can result in delays, or if the DNS doesn't return correctly, banned users could still get on the network. In actuality, the *@host option is completely against the intentions of using

7380-426: The value and benefits of Services on IRC, although they are generally considered essential to providing a pleasant chatting experience. This is proven in the fact that most service-less networks have died out. Many variants of services have been implemented over time, so each IRC network speaks a different service dialect, making it close to impossible for client developers to implement unified graphical interfaces to

7470-434: The various registration procedures. Still, most of them are inspired by DALnet's and Armin's original works, only Undernet and QuakeNet stick out with a completely different approach. ChanServ , on many IRC networks, is an IRC service which maintains channel registration and access information. If a channel is registered with ChanServ, its owners (and those they have designated) can use ChanServ to obtain control over

7560-504: Was a small but notable dispute, which led to ircu – the Undernet fork of ircd. irc2.8 added "&channels" (those that exist only on the current server, rather than the entire network) and "!channels" (those that are theoretically safe from suffering from the many ways that a user could exploit a channel by " riding a netsplit "), and is the baseline release from which nearly all current implementations are derived. Around 2.8 came

7650-595: Was assigned port 194/TCP by IANA . However, the de facto standard has always been to run IRC on 6667/TCP and nearby port numbers (for example TCP ports 6660–6669, 7000) to avoid having to run the IRCd software with root privileges . The protocol specified that characters were 8-bit but did not specify the character encoding the text was supposed to use. This can cause problems when users using different clients and/or different platforms want to converse. All client-to-server IRC protocols in use today are descended from

7740-444: Was developed in 1999. Certain networks such as Freenode have not followed the overall trend and have more than quadrupled in size during the same period. However, Freenode, which in 2016 had around 90,000 users, has since declined to about 9,300 users. The largest IRC networks have traditionally been grouped as the "Big Four" —a designation for networks that top the statistics. The Big Four networks change periodically, but due to

7830-558: Was the chat part, which he did with borrowed parts written by his friends Jyrki Kuoppala and Jukka Pihl. The first IRC network was running on a single server named tolsun.oulu.fi. Oikarinen found inspiration in a chat system known as Bitnet Relay , which operated on the BITNET . Jyrki Kuoppala pushed Oikarinen to ask Oulu University to free the IRC code so that it also could be run outside of Oulu, and after they finally got it released, Jyrki Kuoppala immediately installed another server. This

7920-570: Was the first "IRC network". Oikarinen got some friends at the Helsinki University of Technology and Tampere University of Technology to start running IRC servers when his number of users increased and other universities soon followed. At this time Oikarinen realized that the rest of the BBS features probably would not fit in his program. Oikarinen contacted people at the University of Denver and Oregon State University . They had their own IRC network running and wanted to connect to

8010-611: Was the one and only IRC network. Around that time IRC was used to report on the 1991 Soviet coup d'état attempt throughout a media blackout . It was previously used in a similar fashion during the Gulf War . Chat logs of these and other events are kept in the ibiblio archive. Another fork effort, the first that made a lasting difference, was initiated by "Wildthang" in the United States in October 1992. (It forked off

8100-499: Was thus based on the Undernet ircd server, although the DALnet pioneers were EFnet abandoners. According to James Ng, the initial DALnet people were "ops in #StarTrek sick from the constant splits/lags/takeovers/etc". DALnet quickly offered global WallOps (IRCop messages that can be seen by users who are +w (/mode NickName +w)), longer nicknames, Q:Lined nicknames (nicknames that cannot be used i.e. ChanServ, IRCop, NickServ, etc.), global K:Lines (ban of one person or an entire domain from

#588411