IRCD
An 'IRCd', short for 'Internet Relay Chat daemon', is a computer program to create a server that implements the IRC protocol, enabling people to talk to each other via the Internet (exchanging textual messages in real time).
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 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) around 1989. 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 incarnations, 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 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. More information on this may be found at http://www.ircd-hybrid.com/history.html.
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, and hybrid/ratbox based servers amongst others
★ the P10 protocol, which is used by undernet 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 Comstud
★ 2.8+th, Taner's patchset, which later became
★
★ ircd-hybrid, 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 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 is used by IRCnet and it can be found at ftp://ftp.irc.org/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 ircd-hybrid continue to be used on EFnet, with ircd-ratbox (an offshoot of ircd-hybrid) as of 2004 being the most popular.
More recently, several irc daemons were written from scratch, such as ithildin[1], InspIRCd[2], csircd (also from Comstud), ConferenceRoom[3], Microsoft Exchange Chat Service, or IRCPlus/IRCXPro[4].
These attempts have met with mixed success, and large doses of scepticism from the existing IRC development community. With each new IRCd, a slightly different version of 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 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 have to have superuser privileges in order to open them. For various reasons this is undesirable.
The officially assigned ports for ircu 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.
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 due to the fact that 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 offers this ability in the form of epoll, in kernel series newer than 2.4.x. FreeBSD (since 4.1) offers kqueue. Solaris has had /dev/poll since version 7. The difference made by these new interfaces can be dramatic. IRCU coders have mentioned increases in the practical capacity per server from 10,000 users to 20,000 users.
Some IRCd support SSL, for those who don't, it is still possible to use SSL via Stunnel. The unofficial, but most often used port for SSL IRCd connections is 6697.
All IRC daemons support IPv4, and some also support IPv6.
★ Comparison of IRC daemons
★ irc.org - IRC resources
★ Technical comparison of TS and nickname delay mechanisms
1. Ithildin IRCd
2. Inspire IRCd
3. http://www.conferenceroom.com
4. http://www.ircxpro.com
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 the same name, and this article discusses both uses.
| Contents |
| History |
| Features |
| Ports |
| Numerous connections |
| SSL |
| IP |
| See also |
| External links |
| References |
History
The original IRCd was known as 'ircd', and was authored by Jarkko Oikarinen (WiZ on IRC) around 1989. 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 incarnations, 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 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. More information on this may be found at http://www.ircd-hybrid.com/history.html.
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, and hybrid/ratbox based servers amongst others
★ the P10 protocol, which is used by undernet 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 Comstud
★ 2.8+th, Taner's patchset, which later became
★
★ ircd-hybrid, 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 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 is used by IRCnet and it can be found at ftp://ftp.irc.org/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 ircd-hybrid continue to be used on EFnet, with ircd-ratbox (an offshoot of ircd-hybrid) as of 2004 being the most popular.
More recently, several irc daemons were written from scratch, such as ithildin[1], InspIRCd[2], csircd (also from Comstud), ConferenceRoom[3], Microsoft Exchange Chat Service, or IRCPlus/IRCXPro[4].
These attempts have met with mixed success, and large doses of scepticism from the existing IRC development community. With each new IRCd, a slightly different version of 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 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 system means that the daemon would have to have superuser privileges in order to open them. For various reasons this is undesirable.
The officially assigned ports for ircu 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.
Numerous 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 due to the fact that 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 offers this ability in the form of epoll, in kernel series newer than 2.4.x. FreeBSD (since 4.1) offers kqueue. Solaris has had /dev/poll since version 7. The difference made by these new interfaces can be dramatic. IRCU coders have mentioned increases in the practical capacity per server from 10,000 users to 20,000 users.
SSL
Some IRCd support SSL, for those who don't, it is still possible to use SSL via Stunnel. The unofficial, but most often used port for SSL IRCd connections is 6697.
IP
All IRC daemons support IPv4, and some also support IPv6.
See also
★ Comparison of IRC daemons
External links
★ irc.org - IRC resources
★ Technical comparison of TS and nickname delay mechanisms
References
1. Ithildin IRCd
2. Inspire IRCd
3. http://www.conferenceroom.com
4. http://www.ircxpro.com
This article provided by Wikipedia. To edit the contents of this article, click here for original source.
psst.. try this: add to faves
Featured Companies
| Vacation By V | |
| Golf Holidays International |

العربية
中国
Français
Deutsch
Ελληνική
हिन्दी
Italiano
日本語
Português
Русский
Español



