HOME

TheInfoList



OR:

An IRCd, short for Internet Relay Chat
daemon Daimon or Daemon (Ancient Greek: , "god", "godlike", "power", "fate") originally referred to a lesser deity or guiding spirit such as the daimons of ancient Greek religion and mythology and of later Hellenistic religion and philosophy. The wo ...
, is server software that implements the IRC protocol, enabling people to talk to each other via the
Internet The Internet (or internet) is the global system of interconnected computer networks that uses the Internet protocol suite (TCP/IP) to communicate between networks and devices. It is a ''internetworking, network of networks'' that consists ...
(exchanging
textual In literary theory, textuality comprises all of the attributes that distinguish the communicative content under analysis as an object of study. It is associated with structuralism and post-structuralism. Explanation Textuality is not just abo ...
messages in real time). It is distinct from an
IRC bot 409px, An IRC bot performing a simple task.An IRC bot is a set of scripts or an independent program that connects to Internet Relay Chat as a client, and so appears to other IRC users as another user. An IRC bot differs from a regular client in t ...
that connects outbound to an IRC channel. The server listens to connections from
IRC client Internet Relay Chat (IRC) 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 a ...
s on a set of
TCP ports This is a list of TCP and UDP port numbers used by protocols for operation of network applications. The Transmission Control Protocol (TCP) and the User Datagram Protocol (UDP) only need one port for duplex, bidirectional traffic. They usually u ...
. 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 the same name, and this article discusses both uses.


History

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 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 was a small but notable dispute, which led to ircu – the
Undernet The Undernet is the third largest publicly monitored Internet Relay Chat (IRC) network, c. 2022, with about 36 client servers serving 47,444 users in ~6000 channels at any given time. IRC clients can connect to Undernet via the global round ro ...
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 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 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: * the TS6 protocol, which is used by
EFnet EFnet or Eris-Free network is a major Internet Relay Chat (IRC) network, with more than 35,000 users. It is the modern-day descendant of the original IRC network. History Initially, most IRC servers formed a single IRC network, to which new ser ...
, and Hybrid and Ratbox based servers amongst others * the P10 protocol, which is used by
Undernet The Undernet is the third largest publicly monitored Internet Relay Chat (IRC) network, c. 2022, with about 36 client servers serving 47,444 users in ~6000 channels at any given time. IRC clients can connect to Undernet via the global round ro ...
and ircu based servers. 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 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: * 2.8.21+CS, developed by Chris Behrens (Comstud) * 2.8+th, Taner Halicioglu's patchset, which later became ** Hybrid IRCd, originally developed by Jon Lusky (Rodder) and Diane Bruce (Dianora) as 2.8/hybrid, later joined by a large development team. * 2.9, 2.10, 2.11, ... continue the development of the original codebase, The original code base continued to be developed mainly for use on the
IRCnet IRCnet is currently the third largest IRC network with around 25,000 users using it daily. An early 2005 record had approximately 123,110 users simultaneously connected to the network. History Initially, most IRC servers formed a single IRC net ...
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 . This daemon is used by
IRCnet IRCnet is currently the third largest IRC network with around 25,000 users using it daily. An early 2005 record had approximately 123,110 users simultaneously connected to the network. History Initially, most IRC servers formed a single IRC net ...
and it can be found at http://www.irc.org/ftp/irc/server/ The original ircd is
free software Free software or libre software is computer software distributed under terms that allow users to run the software for any purpose as well as to study, change, and distribute it and any adapted versions. Free software is a matter of liberty, ...
, licensed under the
GNU General Public License The GNU General Public License (GNU GPL or simply GPL) is a series of widely used free software licenses that guarantee end user In product development, an end user (sometimes end-user) is a person who ultimately uses or is intended to ulti ...
. 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 EFnet or Eris-Free network is a major Internet Relay Chat (IRC) network, with more than 35,000 users. It is the modern-day descendant of the original IRC network. History Initially, most IRC servers formed a single IRC network, to which new ser ...
, with ircd-ratbox (an offshoot of ircd-hybrid) being the most popular.


Sidestream versions

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 the IRC protocol is used, and many
IRC client Internet Relay Chat (IRC) 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 a ...
s and
bots The British Overseas Territories (BOTs), also known as the United Kingdom Overseas Territories (UKOTs), are fourteen territories with a constitutional and historical link with the United Kingdom. They are the last remnants of the former Br ...
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 the half-op channel operator status (which is not a requirement of the RFCs).


Features


Ports

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 A Unix-like (sometimes referred to as UN*X or *nix) operating system is one that behaves in a manner similar to a Unix system, although not necessarily conforming to or being certified to any version of the Single UNIX Specification. A Unix-li ...
system means that the daemon would historically have to have
superuser In computing, the superuser is a special user account used for system administration. Depending on the operating system (OS), the actual name of this account might be root, administrator, admin or supervisor. In some cases, the actual name of th ...
privileges in order to open them. For various
security" \n\n\nsecurity.txt is a proposed standard for websites' security information that is meant to allow security researchers to easily report security vulnerabilities. The standard prescribes a text file called \"security.txt\" in the well known locat ...
reasons this used to be undesirable. The common ports for an IRCd process are 6665 to 6669, with 6667 being the historical default. These ports can be opened by a non-superuser process, and they became widely used.


Connections

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 is that the best platforms for ircds are those that offer efficient mechanisms for handling huge numbers of connections in a single thread.
Linux Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, which i ...
offers this ability in the form of epoll, in kernel series newer than 2.4.x.
FreeBSD FreeBSD is a free and open-source Unix-like operating system descended from the Berkeley Software Distribution (BSD), which was based on Research Unix. The first version of FreeBSD was released in 1993. In 2005, FreeBSD was the most popular ...
(since 4.1) and OpenBSD (since 2.9) offers kqueue. Solaris has ha
/dev/poll
since version 7, and from version 10 onwards has
IOCP Input/output completion port (IOCP) is an API for performing multiple simultaneous asynchronous input/output operations in Windows NT versions 3.5 and later, AIX and on Solaris 10 and later. An input/output completion port object is created and as ...
(I/O Completion Ports).
Windows Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for ...
has supported
IOCP Input/output completion port (IOCP) is an API for performing multiple simultaneous asynchronous input/output operations in Windows NT versions 3.5 and later, AIX and on Solaris 10 and later. An input/output completion port object is created and as ...
since Windows NT 3.5. The difference made by these new interfaces can be dramatic. IRCU developers have mentioned increases in the practical capacity per server from 10,000 users to 20,000 users.


TLS (Transport Layer Security)

Some IRCd support
Transport Layer Security Transport Layer Security (TLS) is a cryptographic protocol designed to provide communications security over a computer network. The protocol is widely used in applications such as email, instant messaging, and voice over IP, but its use in secu ...
, 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 the STARTTLS standard which allows for TLS and plain text connections to co-exist on the same TCP port.


IPv4 and IPv6

IRC daemons support
IPv4 Internet Protocol version 4 (IPv4) is the fourth version of the Internet Protocol (IP). It is one of the core protocols of standards-based internetworking methods in the Internet and other packet-switched networks. IPv4 was the first version d ...
, and some also support
IPv6 Internet Protocol version 6 (IPv6) is the most recent version of the Internet Protocol (IP), the communications protocol that provides an identification and location system for computers on networks and routes traffic across the Internet. I ...
. 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.


Clustering

Large IRC networks consist of multiple servers for horizontal scaling purposes. There are several IRC protocol extensions for these purposes.Paul Mutton, ''IRC hacks'',
O'Reilly Media O'Reilly Media (formerly O'Reilly & Associates) is an American learning company established by Tim O'Reilly that publishes books, produces tech conferences, and provides an online learning platform. Its distinctive brand features a woodcut of ...
, 2004, , pp. 371


IRCX

IRCX (Internet Relay Chat eXtensions) is an extension to the IRC protocol developed by Microsoft


P10

The P10 protocol is an extension to the
Internet Relay Chat Internet Relay Chat (IRC) 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 a ...
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.


TS6

The TS6 protocol is an extension to the
Internet Relay Chat Internet Relay Chat (IRC) 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 a ...
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.


Configuration


Jupe

Juping a server, a channel, or a nickname refers to the practice of blocking said channel or nickname on the server or
network Network, networking and networked may refer to: Science and technology * Network theory, the study of graphs as a representation of relations between discrete objects * Network science, an academic field that studies complex networks Mathematics ...
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 or Eris-Free network is a major Internet Relay Chat (IRC) network, with more than 35,000 users. It is the modern-day descendant of the original IRC network. History Initially, most IRC servers formed a single IRC network, to which new ser ...
. 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 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 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.


O-line

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 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 An IRC operator (often abbreviated as IRCop or oper) is a user on an Internet Relay Chat network who has privileged access. IRC operators are charged with the task of enforcing the network's rules, and in many cases, improving the network in vari ...
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 the administrative needs of the server and network.IRC Operator Version 1.1.2
/ref> 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 a certain hostmask or
IP address An Internet Protocol address (IP address) is a numerical label such as that is connected to a computer network that uses the Internet Protocol for communication.. Updated by . An IP address serves two main functions: network interface ident ...
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.


K-line

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 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 the client or the user it is issued against. ; User behavior : K-lines can be given due to inappropriate behavior on the part of the user, such as "nickname colliding", mode "hacking", multiple channel flooding, harassing other users via private messaging features, "
spamming Spamming is the use of messaging systems to send multiple unsolicited messages (spam) to large numbers of recipients for the purpose of commercial advertising, for the purpose of non-commercial proselytizing, for any prohibited purpose (especia ...
" etc., or in the case of older networks without timestamping, split riding, which cannot be corrected through use of channel operator privileges alone. ; Client software : Some IRC daemons can be configured to scan for viruses or other vulnerabilities in clients connecting to them, and will react in various ways according to the result. Outdated and insecure client software might be blocked to protect other network users from vulnerabilities, for instance. Some networks will disconnect clients operating on/via open proxies, or running an insecure web server. ; Geographic location : An IRC network operating multiple servers in different locales will attempt to reduce the distance between a client and a server. This is often achieved by disconnecting (and/or banning) clients from distant locales in favour of local ones. 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.


G-line

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 The Undernet is the third largest publicly monitored Internet Relay Chat (IRC) network, c. 2022, with about 36 client servers serving 47,444 users in ~6000 channels at any given time. IRC clients can connect to Undernet via the global round ro ...
but on DALnet a similar concept known as an AKill was used. G-lines are sometimes stored in the
configuration file In computing, configuration files (commonly known simply as config files) are files used to configure the parameters and initial settings for some computer programs. They are used for user applications, server processes and operating system ...
of the IRCd, although some networks, who handle K-lines through the
IRC services Internet Relay Chat services (usually called IRC services) is a name for a set of features implemented on many modern Internet Relay Chat networks. Services are automated bots with special status which are generally used to provide users with ac ...
, 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 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 the offending user. Therefore, especially on larger networks, often only very high ranking global
IRC operator An IRC operator (often abbreviated as IRCop or oper) is a user on an Internet Relay Chat network who has privileged access. IRC operators are charged with the task of enforcing the network's rules, and in many cases, improving the network in vari ...
s 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 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.


Z-line

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 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 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 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 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 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 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 The Domain Name System (DNS) is a hierarchical and distributed naming system for computers, services, and other resources in the Internet or other Internet Protocol (IP) networks. It associates various information with domain names assigned to ...
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 An Internet Protocol address (IP address) is a numerical label such as that is connected to a computer network that uses the Internet Protocol for communication.. Updated by . An IP address serves two main functions: network interface ident ...
ranges of 68.0.0.0 – 68.255.255.255 and 37.0.0.0 – 38.255.255.255), 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.


Q-line

On some IRCds, such as UnrealIRCd, 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 An IRC operator (often abbreviated as IRCop or oper) is a user on an Internet Relay Chat network who has privileged access. IRC operators are charged with the task of enforcing the network's rules, and in many cases, improving the network in vari ...
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 the "RESV" ("reserve") command instead, with the stats letter remaining as Q. The "RESV" command can also forbid a channel from being used.


See also

*
Internet Relay Chat Internet Relay Chat (IRC) 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 a ...
*
Internet Relay Chat services Internet Relay Chat services (usually called IRC services) is a name for a set of features implemented on many modern Internet Relay Chat networks. Services are automated bots with special status which are generally used to provide users with ac ...


References


External links


irc.org – IRC resources



DarkFire IRC Manual (network specific)

Undernet K-Line and G-Line FAQ
with reasons for them, amongst other things

with several -line terms explained
Quakenet General FAQ
G/K-Line
GLine, KLine, QLine and ELine syntax
{{IRC daemons Internet Relay Chat