Irc Server Software
- Freenode Irc Server Software
- Irc Server Software Windows
- Mirc Server Download
- Windows Irc Server Software
IRC or Internet Relay Chat is a protocol that enables real-time text communications between people. To start, a client connects to a server (or more commonly a network of servers) where clients have either one on one conversations or group conversations in channels. Irc server Software - Free Download irc server - Top 4 Download - Top4Download.com offers free software downloads for Windows, Mac, iOS and Android computers and mobile devices. Visit for free, full and secured software’s. IRC Server Software I'm looking into building a personal IRC server - mainly for educational reasons. The first thing I noticed is that there are a ton of options for IRC software.
Internet protocol suite |
---|
Application layer |
Transport layer |
Internet layer |
|
Link layer |
|
Internet Relay Chat (IRC) is an application layer protocol that facilitates communication in the form of text. The chat process works on a client/server networking model. IRC clients are computer programs that users can install on their system or web based applications running either locally in the browser or on a 3rd party server. These clients communicate with chat servers to transfer messages to other clients.[1] IRC is mainly designed for group communication in discussion forums, called channels,[2] but also allows one-on-one communication via private messages[3] as well as chat and data transfer,[4] including file sharing.[5]
Client software is available for every major operating system that supports Internet access.[6] As of April 2011, the top 100 IRC networks served more than half a million users at a time,[7] with hundreds of thousands of channels[7] operating on a total of roughly 1,500 servers[7] out of roughly 3,200 servers worldwide.[8] IRC usage has been declining steadily since 2003, losing 60% of its users (from 1 million to about 400,000 in 2012) and half of its channels (from half a million in 2003).[9]
- 1History
- 2Technical information
- 2.3Modes
- 3Challenges
- 3.2Abuse prevention
- 4Networks
- 6Clients
History[edit]
Beginning[edit]
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 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.[10] Oikarinen found inspiration in a chat system known as Bitnet Relay, which operated on the BITNET.[11]
Jyrki Kuoppala pushed Jarkko 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 was the first 'irc network'. Jarkko got some friends at the Helsinki University and Tampere University to start running IRC servers when his number of users increased and other universities soon followed. At this time Jarkko realized that the rest of the BBS features probably wouldn't fit in his program.[10]
Jarkko got in touch with people at the University of Denver and Oregon State University. They had their own IRC network running and wanted to connect to the Finnish network. They had obtained the program from one of Jarkko'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.[10]
EFnet[edit]
In August 1990, 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 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, EFnet was formed with the non-eris servers. History showed most servers and users went with EFnet. Once ANet disbanded, the name EFnet became meaningless, and once again it was the one and only IRC network.[10]
It is around that time that IRC was used to report on the 1991 Soviet coup d'état attempt throughout a media blackout.[12] It was previously used in a similar fashion during the Gulf War.[13]Chat logs of these and other events are kept in the ibiblio archive.[14]
The Undernet fork[edit]
Another fork effort, the first that really made a big and lasting difference, was initiated by 'Wildthang' in the U.S. October 1992 (it forked off 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'.[10]
The 'undernetters' wanted to take ircd further in an attempt to make it less bandwidth consumptive and to try to sort out the channel chaos (netsplits and takeovers) that EFnet started to suffer from. For the latter purpose, the Undernet implemented timestamps, new routing and offered the CService—a program that allowed users to register channels and then attempted to protect them from troublemakers. The very first server list presented, from February 15, 1993, includes servers from USA, Canada, France, Croatia and Japan. On August 15, the new user count record was set to 57 users.[10]
Standardization[edit]
In May 1993, RFC 1459[1] was published and details a simple protocol for client/server operation, channels, one-to-one and one-to-many conversations.[10] It is notable that a significant number of extensions like CTCP, colors and formats are not included in the protocol specifications, nor is character encoding,[15] which led various implementations of servers and clients to diverge. In fact, software implementation varied significantly from one network to the other, each network implementing their own policies and standards in their own code bases.
The DALnet fork[edit]
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 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'.[10]
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 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.[10]
The IRCnet fork or the Great Split[edit]
In July 1996, after months of flame wars and discussions on the mailing list, there was yet another split due to disagreement in how the development of the ircd should evolve. Most notably, the 'european' (most of those servers were in Europe) side that later named itself IRCnet argued for nick and channel delays where the EFnet side argued for timestamps.[10] 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 the US side.[16]
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.[10]
Present day[edit]
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 more modern social media platforms like Facebook or Twitter,[9] but also to open platforms like XMPP which was developed in 1999. Certain networks like Freenode have not followed the overall trend and have more than quadrupled in size during the same period.[9] As of 2016, Freenode is the largest IRC network with around 90,000 users.[17]
As of 2016, a new standardization effort is under way under a working group called IRCv3, which focuses on more advanced client features like instant notifications, better history support and improved security.[18] As of 2019, no major IRC networks have fully adopted the proposed standard.[19]
Technical information[edit]
IRC is an open protocol that uses TCP[1] and, optionally, TLS. An IRC server can connect to other IRC servers to expand the IRC network.[20] Users access IRC networks by connecting a client to a server.[21] 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 nick (nickname) is required before being connected.[22]
IRC was originally a plain text protocol[1] (although later extended), which on request was assigned port 194/TCP by IANA.[23] However, the de facto standard has always been to run IRC on 6667/TCP[24] and nearby port numbers (for example TCP ports 6660–6669, 7000)[25] 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.[15] 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 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]
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]
Microsoft made an extension for IRC in 1998 via the proprietary IRCX.[26] They later stopped distributing software supporting IRCX, instead developing the proprietary MSNP.
The standard structure of a network of IRC servers is a tree.[27] Messages are routed along only necessary branches of the tree but network state is sent to every server[28] 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[29] 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[30] 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.[31] 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 also be used on a local area network (LAN). IRC can thus be used to facilitate communication between people within the local area network (internal communication).[32][33]
Commands and replies[edit]
IRC has a line-based structure. Clients send single-line messages to the server,[34] receive replies to those messages[35] 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 the client does not recognize) passed directly to the server, possibly with some modification.[citation needed]
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.[36]
Channels[edit]
The basic means of communicating to a group of users in an established IRC session is through a channel.[37] Channels on a network can be displayed using the IRC command LIST,[38] 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,[39] in most clients available as /join #channelname. Messages sent to the joined channels are then relayed to all other users.[37]
Channels that are available across an entire IRC network are prefixed with a '#', while those local to a server use '&'.[40] Other less common channel types include '+' channels—'modeless' channels without operators[41]—and '!' channels, a form of timestamped channel on normally non-timestamped networks.[42]
Modes[edit]
Users and channels may have modes that are represented by single case-sensitive letters[43] and are set using the MODE command.[44] User modes and channel modes are separate and can use the same letter to mean different things (e.g. user mode 'i' is invisible mode while channel mode 'i' is invite only.[45]) 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 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.[46] Modes that apply to users on a channel have an associated symbol that is used to represent the mode in names replies[47] (sent to clients on first joining a channel[39] 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 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.[48][49]
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,[47] 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 but none are widely implemented.
Standard (RFC 1459) modes[edit]
Letter | Symbol | Description |
---|---|---|
i | Invisible—cannot be seen without a common channel or knowing the exact name | |
s | Receives server notices | |
w | Receives wallops[50] | |
o | User is an IRC operator (ircop) |
Letter | Symbol | Parameter(s) | Description |
---|---|---|---|
o | @ | Name of affected user | Channel operator—can change channel modes and kick users out of the channel among other things |
s | Secret channel—not shown in channel list or user whois except to users already on the channel | ||
p | Private channel—listed in channel list as 'prv' according to RFC 1459 | ||
n | Users cannot send messages to the channel externally | ||
m | Channel is moderated (only those who hold channel operator or voice status on the channel can send messages to it) | ||
i | Only users with invites may enter the channel. | ||
t | Only channel operators can change the channel topic. | ||
l | Limit number | Limits number of users able to be on channel (when full, no new users can join) | |
b | Ban mask (nick!user@host with wildcards allowed) | Bans hostmasks from channel | |
v | + | Name of affected user | Gives a user voice status on channel (see +m above) |
k | New channel key | Sets a channel key such that only users knowing the key can enter |
Many daemons and networks have added extra modes or modified the behavior of modes in the above list.[51][52][53][54]
Channel Operators[edit]
A Channel Operator is a client on an IRC channel that manages the channel.IRC Channel Operators can be easily seen by the a symbol or icon next to their name (varies by client implementation, commonly a '@' symbol prefix, a green circle, or a Latin letter '+o'/'o').On most networks, an operator can:
- Kick a user
- Ban a user
- Give another user IRC Channel Operator Status or IRC Channel Voice Status.
- Change the IRC Channel topic while channel mode +t is set.
- Change the IRC Channel Mode locks.
IRC operators[edit]
There are also users who maintain elevated rights on their local server, or the entire network; these are called IRC operators,[55] 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[55] claims that IRC operators are 'a necessary evil' 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 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.
Hostmasks[edit]
A hostmask is a unique identifier of an IRC client connected to an IRC server.[56][57] 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 is the username reported by ident on the client.[58] If ident is not available on the client, the username specified when the client connected is used after being prefixed with a tilde.[59]
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 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 Freenode use these as 'cloaks' to indicate that a user is affiliated with a group or project.[60]
Challenges[edit]
Issues in the original design of IRC were the amount of shared state data[61][62] being a limitation on its scalability,[63] the absence of unique user identifications leading to the nickname collision problem,[64] lack of protection from netsplits by means of cyclic routing,[65][66] the trade-off in scalability for the sake of real-time user presence information,[67] protocol weaknesses providing a platform for abuse,[68] no transparent and optimizable message passing,[69] and no encryption.[70] Some of these issues have been addressed in Modern IRC.
Attacks[edit]
Because IRC connections are usually unencrypted and typically span long time periods, they are an attractive target for DoS/DDoS attackers and hackers. Because of this, careful security policy is necessary to ensure that an IRC network is not susceptible to an attack such as a takeover war. IRC networks may also K-line or G-line users or servers that have a harming effect.
Some IRC servers support 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 +S
) to only allow SSL-connected users on the channel, while disallowing operator identification in clear text, to better utilize the advantages that SSL provides.[71][72]
IRC served as an early laboratory for many kinds of Internet attacks, such as using fake ICMP unreachable messages to break TCP-based IRC connections (nuking) to annoy users or facilitate takeovers.
Abuse prevention[edit]
One of the most contentious technical issues surrounding IRC implementations, which survives to this day, is the merit of 'Nick/Channel Delay' vs. 'Timestamp' protocols. Both methods exist to solve the problem of denial-of-service attacks, but take very different approaches.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 'split' 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 'combined' 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').This was often abused to 'mass-kill' all users on a channel, thus creating 'opless' 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 netsplits, which they would then abuse.
Nick/channel delay[edit]
The nick/channel delay (abbreviated ND/CD) solution to this problem is very simple. After a user signs off and the nickname becomes available, or a channel ceases to exist because all its users parted (as often happens during a netsplit), the server will not allow any user to use that nickname or join that channel, until a certain period of time (the delay) has passed. The idea behind this is that even if a netsplit occurs, it is useless to an abuser because they cannot take the nickname or gain operator status on a channel, and thus no collision of a nickname or 'merging' of a channel can occur. To some extent, this inconveniences legitimate users, who might be forced to briefly use a different name after rejoining (appending an underscore is popular).
Timestamping[edit]
The alternative, the timestamp or TS protocol, takes a different approach. Every nickname and channel on the network is assigned a timestamp – the date and time when it was created. When a netsplit occurs, two users on each side are free to use the same nickname or channel, but when the two sides are joined, only one can survive. In the case of nicknames, the newer user, according to their TS, is killed; when a channel collides, the members (users on the channel) are merged, but the channel operators on the 'losing' side of the split lose their channel operator status.
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 'desyncs' (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.
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.
SAVE[edit]
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 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).
Shop our best selection of Manual Woodworkers & Weavers Throw Pillows & Decorative Accents to reflect your style and inspire your home. Find the perfect decorative accents at Hayneedle, where you can buy online while you explore our room designs and curated looks for tips, ideas &. Manual woodworkers and weavers pillows. Manual Woodworkers & Weavers Longhorn - Dye Lumbar Pillow SHLNGH Manual Woodworkers & Weavers Unique fun gift for all ages. This accent pillow is perfect for living areas, bedrooms, game rooms or offices. Great gift for the upcoming holidays. Manual Woodworkers & Weavers MWW Inc. (Manual Woodworkers & Weavers) is the nation’s leading supplier, manufacturer and distributor of textile based products – both printed and woven. Centrally located on the Eastern Seaboard of the United States and headquartered in Hendersonville, North Carolina, MWW is positioned to quickly. Manual Woodworkers & Weavers Throw Pillow No Dogs allowed on this sofa. 3.9 out of 5 stars 17. Get it as soon as Tue, Jul 30. FREE Shipping on orders over $25 shipped by Amazon. Only 1 left in stock - order soon. Amazon's Choice for manual woodworkers and weavers pillows. You've come to the right place to shop for Manual Woodworkers & Weavers throw pillows online. If you know you are looking for Manual Woodworkers & Weavers products, your search is refined and almost ready! At Wayfair, you will find the best prices for all the major brand names you can choose from.
If two clients with the same nickname join from different sides of a netsplit ('nick collision'), 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.
Networks[edit]
There are thousands of running IRC networks in the world. They run various implementations of IRC servers, and are administered by various groups of IRC operators, 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.
The largest IRC networks have traditionally been grouped as the 'Big Four'[73][74][75][76]—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.
Freenode Irc Server Software
Historically the 'Big Four' were:[73][74][75]
IRC reached 6 million simultaneous users in 2001 and 10 million users in 2003, dropping to 371k in 2018.[citation needed]
As of October 2018, the largest IRC networks are:
- freenode – around 90k users at peak hours
- IRCnet – around 30k users at peak hours
- EFnet – around 18k users at peak hours
- Undernet – around 17k users at peak hours
- QuakeNet – around 15k users at peak hours
- Rizon – around 14k users at peak hours
- OFTC – around 13k users at peak hours
- DALnet – around 8k users at peak hours
Today, the top 100 IRC networks have around 370k users connected at peak hours.[77]
Timeline[edit]
IRC networks
URI scheme[edit]
There are three recognized uniform resource identifier (URI) schemes for Internet Relay Chat: irc
, ircs
, and irc6
.[78] When supported, they allow hyperlinks of various forms, including
(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.[79] (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.
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.
Some implementations allow multiple channels to be specified, separated by commas.[1]
Clients[edit]
Client software[edit]
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 Windows, Unix and Linux, Mac OS X and mobile operating systems (such as iOS and Android). On Windows, mIRC is one of the most popular clients.[80]
Some programs which are extensible through plug-ins also serve as platforms for IRC clients. For instance, a client called ERC, written entirely in Emacs Lisp, is included in v.22.3 of Emacs. Therefore, any platform that can run Emacs can run ERC.
A number of web browsers have built-in IRC clients, such as Opera (version 12.18 and earlier)[81] and 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.
Games such as War§ow,[82]Unreal Tournament (up to Unreal Tournament 2004),[83]Uplink,[84]Spring Engine-based games, 0 A.D. and ZDaemon have included IRC.[85]
Ustream's chat interface is IRC with custom authentication[86] as well as Twitch.tv's (formerly Justin.tv).[87][88]
Bots[edit]
A typical use of bots in IRC is to provide IRC services or specific functionality within a channel such as to host a chat-based game or provide notifications of external events. However some IRC bots are used to launch malicious attacks such as denial of service, spamming, or exploitation.[89]
Bouncer[edit]
A program that runs as a daemon on a server and functions as a persistent 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] Should the client lose network connectivity, the BNC may stay connected and archive all traffic for later delivery, allowing the user to resume their IRC session without disrupting their connection to the server.[90]
Furthermore, as a way of obtaining a bouncer-like effect, an IRC client (typically text-based, for example Irssi) may be run on an always-on server to which the user connects via ssh. 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.[91]
To keep the IRC client from quitting when the ssh connection closes, the client can be run inside a terminal multiplexer such as GNU Screen or tmux, thus staying connected to the IRC network(s) constantly and able to log conversation in channels that the user is interested in, or to maintain a channel's presence on the network. Modelled after this setup, in 2004 an IRC client following the client-server model, called Smuxi, was launched.[92][93]
Search engines[edit]
There are numerous search engines available to aid the user in finding what they are looking for on IRC.[94][95] Generally the search engine consists of two parts, a 'back-end' (or 'spider/crawler') and a front-end 'search engine'.
The back-end (spider/webcrawler) 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.[citation needed]
The front-end 'search engine' 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.
Most search engines have their own spider that is a single application responsible for crawling IRC and indexing data itself; however, others are 'user based' indexers. The latter rely on users to install their 'add-on' 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]
Many users have implemented their own ad hoc search engines using the logging features built into many IRC clients. These search engines are usually implemented as bots and dedicated to a particular channel or group of associated channels.
Modern IRC[edit]
IRC has changed much over its life on the Internet. New server software has added a multitude of new features.
- Services: Network-operated bots to facilitate registration of nicknames and channels, sending messages for offline users and network operator functions.
- Extra modes: While the original IRC system used a set of standard user and channel modes, new servers add many new modes for features such as removing color codes from text,[96] or obscuring a user's hostmask ('cloaking') to protect from denial-of-service attacks.[97]
- 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. This proxy detection software is used by several networks, although that real time list of proxies is defunct since early 2006.[98]
- 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]
- Encryption: For the client-to-server leg of the connection SSL might be used (messages cease to be secure once they are relayed to other users on standard connections, but it makes eavesdropping on or wiretapping an individual's IRC sessions difficult). For client-to-client communication, SDCC (Secure DCC) can be used.[citation needed]
- Connection protocol: IRC can be connected to via IPv4, the old version of the Internet Protocol, or by IPv6, the current standard of the protocol.
There is an effort of standardization and adding new features to the IRC protocol by IRCv3 working group.[18]
Character encoding[edit]
IRC still lacks a single globally accepted standard convention for how to transmit characters outside the 7-bit ASCII repertoire.IRC servers normally[clarification needed] transfer messages from a client to another client just as byte sequences, without any interpretation or recoding of 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:
- 7-bit era: In the early days of IRC, especially among Scandinavian and Finnish language users, national variants of ISO 646 were the dominant character encodings. 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.[15] 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.
- 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] and CP1251, and since about 2000, modern Russian IRC networks convert between these different commonly used encodings of the Cyrillic script.
- 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 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 (Merkistö(Finnish)).
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-byte message size restriction. UTF-8 is ASCII compatible and covers the superset of all other commonly used coded character set standards.
File sharing[edit]
Much like conventional P2P file sharing, users can create file servers that allow them to share files with each other by using customised IRC bots or scripts for their IRC client. Often users will group together to distribute warez via a network of IRC bots.[99]
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.[100] 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.
See also[edit]
References[edit]
- ^ abcd'Introduction'. Internet Relay Chat Protocol. p. 4. sec. 1. doi:10.17487/RFC1459. RFC 1459.
- ^'One-to-many'. Internet Relay Chat Protocol. p. 11. sec. 3.2. doi:10.17487/RFC1459. RFC 1459.
- ^'One-To-One Communication'. Internet Relay Chat: Architecture. p. 5. sec. 5.1. doi:10.17487/RFC2810. RFC 2810.
- ^Rollo, Troy. 'A description of the DCC protocol'. irchelp.org. Retrieved 2011-04-08.
- ^Wang, Wallace (2004-10-25). 'Instant Messaging and Online Chat Rooms: Internet Relay Chat (IRC)'. Steal this File Sharing Book (1st ed.). San Francisco, California: No Starch Press. pp. 61–67. ISBN978-1-59327-050-6.
- ^'SAGE IRC Channel'. Sage – The USENIX Special Interest Group for Sysadmins. Archived from the original on 7 February 2012. Retrieved 18 April 2011.
- ^ abc'IRC Networks – Top 100'. irc.netsplit.de. Retrieved 2011-04-08.
- ^'IRC Servers – Summary'. irc.netsplit.de. Retrieved 2011-04-08.
- ^ abc'IRC is dead, long live IRC'. Pingdom. 24 April 2012. Retrieved 25 April 2016.
- ^ abcdefghijkStenberg, Daniel (29 March 2011). 'History of IRC (Internet Relay Chat)'. Retrieved 25 April 2016.
I did not experience all of this. I found information on various places and I received information from various people in order to write this. People that have helped me with this include: Greg 'wumpus' Lindahl, Vesa 'vesa' Ruokonen, James Ng, Tuomas Heino, Richard (eagle`s on undernet), Ari Lemmke
- ^Oikarinen, Jarkko. 'Founding IRC'. Retrieved 2011-04-08.
- ^'IRC transcripts from the time of the 1991 Soviet coup d'état attempt'. Chapel Hill, North Carolina: ibiblio. Archived from the original on 2009-06-28. Retrieved 2011-04-08.
- ^'IRC logs of events of the Gulf War'. Chapel Hill, North Carolina: ibiblio. Retrieved 2011-04-08.
- ^'Logs of major events in the online community'. Chapel Hill, North Carolina: ibiblio. Retrieved 2011-04-08.
- ^ abc'Character codes'. Internet Relay Chat Protocol. p. 7. sec. 2.2. doi:10.17487/RFC1459. RFC 1459.
- ^Engen, Vegard (May 2000). 'The Great Split'. IRC.org. Retrieved 2016-04-25.
- ^'netsplit.de top 10'. Retrieved 25 April 2016.
- ^ ab'IRCv3'. IRCv3 Working Group. 2016. Retrieved 25 April 2016.
The IRCv3 Working Group is a collection of IRC client and server software authors working to enhance, maintain and standardize the IRC protocol using backwards-compatible extensions.
- ^'Networks - IRCv3'. 2019. Retrieved 9 August 2019.
- ^'Servers'. Internet Relay Chat Protocol. p. 4. sec. 1.1. doi:10.17487/RFC1459. RFC 1459.
- ^'Clients'. Internet Relay Chat: Architecture. p. 3. sec. 2.2. doi:10.17487/RFC2810. RFC 2810.
- ^'Clients'. Internet Relay Chat Protocol. p. 5. sec. 1.2. doi:10.17487/RFC1459. RFC 1459.
- ^'Port Numbers'. Marina del Rey, California: Internet Assigned Numbers Authority. 2011-04-06. Retrieved 2011-04-08.
- ^'Connect message'. Internet Relay Chat Protocol. p. 29. sec. 4.3.5. doi:10.17487/RFC1459. RFC 1459.
- ^Lucas, Mark; Singh, Abhishek; Cantrell, Chris (2006-10-05). 'Defining a Firewall'. In Henmi, Anne (ed.). Firewall Policies and VPN Configurations. Rockland, Massachusetts: Syngress Publishing. p. 93. ISBN978-1-59749-088-7.
- ^Abraham, Dalen (June 1998). Extensions to the Internet Relay Chat Protocol (IRCX). IETF. I-D draft-pfenning-irc-extensions-04. Retrieved 2011-04-08.
- ^'Architecture'. Internet Relay Chat: Architecture. pp. 3 – 4. sec. 3. doi:10.17487/RFC2810. RFC 2810.
- ^'Introduction'. Internet Relay Chat: Architecture. p. 2. sec. 1. doi:10.17487/RFC2810. RFC 2810.
- ^'Algorithms'. Internet Relay Chat Protocol. p. 64. sec. 9.3. doi:10.17487/RFC1459. RFC 1459.
- ^'Network Congestion'. Internet Relay Chat: Architecture. pp. 7 – 8. sec. 6.3. doi:10.17487/RFC2810. RFC 2810.
- ^'To A Channel'. Internet Relay Chat: Architecture. pp. 5 – 6. sec. 5.2.1. doi:10.17487/RFC2810. RFC 2810.
- ^'IRC daemons for LAN'. Retrieved 2 October 2014.
- ^'Running an own IRC server'. Retrieved 2 October 2014.
- ^'Message format in 'pseudo' BNF'. Internet Relay Chat Protocol. p. 8. sec. 2.3.1. doi:10.17487/RFC1459. RFC 1459.
- ^'Numeric replies'. Internet Relay Chat Protocol. p. 10. sec. 2.4. doi:10.17487/RFC1459. RFC 1459.
- ^'IRC List Modes – List mode extension showing pair confusion for lists'. 2009-11-25. Retrieved 2011-04-08.
- ^ ab'To a group (channel)'. Internet Relay Chat Protocol. p. 11. sec. 3.2.2. doi:10.17487/RFC1459. RFC 1459.
- ^'List message'. Internet Relay Chat Protocol. p. 24. sec. 4.2.6. doi:10.17487/RFC1459. RFC 1459.
- ^ ab'Join message'. Internet Relay Chat Protocol. p. 19. sec. 4.2.1. doi:10.17487/RFC1459. RFC 1459.
- ^'Channel Scope'. Internet Relay Chat: Channel Management. pp. 3 – 4. sec. 2.2. doi:10.17487/RFC2811. RFC 2811.
- ^'Channel Properties'. Internet Relay Chat: Channel Management. p. 4. sec. 2.3. doi:10.17487/RFC2811. RFC 2811.
- ^'Channel lifetime'. Internet Relay Chat: Channel Management. p. 5. sec. 3. doi:10.17487/RFC2811. RFC 2811.
- ^'Channel Modes'. Internet Relay Chat: Channel Management. p. 7. sec. 4. doi:10.17487/RFC2811. RFC 2811.
- ^'Mode message'. Internet Relay Chat Protocol. p. 21. sec. 4.2.3. doi:10.17487/RFC1459. RFC 1459.
- ^'Channel modes'. Internet Relay Chat Protocol. pp. 21 – 22. sec. 4.2.3.1. doi:10.17487/RFC1459. RFC 1459.
- ^'Channel Access Control'. Internet Relay Chat: Channel Management. pp. 10 – 11. sec. 4.3. doi:10.17487/RFC2811. RFC 2811.
- ^ ab'Command responses: 353 RPL_NAMREPLY'. Internet Relay Chat Protocol. p. 51. doi:10.17487/RFC1459. RFC 1459.
- ^Roeckx, Kurt (2004-10-14). 'The 005 numeric: ISUPPORT'. irc.org. Retrieved 2011-04-10.
- ^Brocklesby, Edward (September 2002). IRC RPL_ISUPPORT Numeric Definition. IETF. I-D draft-brocklesby-irc-isupport-03. Retrieved 2011-04-10.
- ^'Operwall message'. Internet Relay Chat Protocol. p. 41. sec. 5.6. doi:10.17487/RFC1459. RFC 1459.
- ^Butcher, Simon (2005-01-12). 'IRC User Modes List'. alien.net.au. Retrieved 2011-04-10.
- ^Butcher, Simon (2005-01-12). 'IRC Channel Modes List'. alien.net.au. Retrieved 2011-04-10.
- ^Butcher, Simon (2005-01-12). 'IRC Server Modes List'. alien.net.au. Retrieved 2011-04-10.
- ^Olsen, Tommy. 'IRCd Modes'. webtoman.com. Retrieved 2011-04-10.
- ^ ab'Operators'. Internet Relay Chat Protocol. p. 5. sec. 1.2.1. doi:10.17487/RFC1459. RFC 1459.
- ^Thiedeke, Udo (2003-09-23). 'Nicola Döring, Alexander Schestag'. Virtuelle Gruppen: Charakteristika und Problemdimensionen (in German) (2nd ed.). Springer VS [de]. pp. 314, 337. ISBN978-3-531-33372-4. Retrieved 2010-03-30.
- ^Rogers, Russ (2004-12-01). 'The Mind of Terror'. In Devost, Matthew G. (ed.). Hacking a Terror Network: The Silent Threat of Covert Channels (1st ed.). Rockland, Massachusetts: Syngress Publishing. p. 10. ISBN978-1-928994-98-5. Retrieved 2010-03-30.
- ^Petersen, Julie K., ed. (2002-05-29). 'Internet Relay Chat'. The Telecommunications Illustrated Dictionary (2nd ed.). CRC Press. p. 500. ISBN978-0-8493-1173-4. Retrieved 2010-03-30.
- ^'Frequently-Asked Questions'. freenode. Retrieved 2010-03-30.
- ^'IRC/Cloaks'. Meta-wiki. Retrieved 2011-11-27.
- ^'Size'. A Discussion on Computer Network Conferencing. pp. 5 – 6. sec. 2.5.1. doi:10.17487/RFC1324. RFC 1324.
- ^'Scalability'. Internet Relay Chat: Architecture. p. 7. sec. 6.1. doi:10.17487/RFC2810. RFC 2810.
- ^Loesch 2003 1.2.1 Growth
- ^'User identification'. A Discussion on Computer Network Conferencing. p. 10. sec. 5.4.1. doi:10.17487/RFC1324. RFC 1324.
- ^'Trees and cycles'. A Discussion on Computer Network Conferencing. p. 10. sec. 5.4.2. doi:10.17487/RFC1324. RFC 1324.
- ^Loesch 2003 1.2.2 Network failures
- ^'State Information problems'. A Discussion on Computer Network Conferencing. p. 4. sec. 2.1. doi:10.17487/RFC1324. RFC 1324.
- ^Loesch 2003 1.2.3 Sociological and security aspects
- ^'Message passing'. A Discussion on Computer Network Conferencing. p. 7. sec. 5.2.1. doi:10.17487/RFC1324. RFC 1324.
- ^'Conference security'. A Discussion on Computer Network Conferencing. p. 8. sec. 5.2.4. doi:10.17487/RFC1324. RFC 1324.
- ^'Getting Help on EsperNet'. The EsperNet IRC Network. Retrieved 2012-07-31.
- ^brandon (2010-05-18). 'New Feature: SSL For Users'. DALnet. Retrieved 2012-07-31.
- ^ abCharalabidis, Alex (1999-12-15). 'IRCing On The Macintosh: Ircle'. The Book of IRC: The Ultimate Guide to Internet Relay Chat (1st ed.). San Francisco, California: No Starch Press. p. 61. ISBN978-1-886411-29-6.
On large networks such as the Big Four— EFnet, IRCnet, Undernet, and DALnet— 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.
- ^ abJones, Steve, ed. (2002-12-10). 'Internet Relay Chat'. Encyclopedia of New Media: An Essential Reference to Communication and Technology (1st ed.). Thousand Oaks, California: SAGE Publications. p. 257. ISBN978-0-7619-2382-4.
Today there are hundreds of independent IRC networks, but the 'Big Four' are EFNet, UnderNet, Dalnet, and IRCnet.
- ^ abRittner, Don (1999-03-03). The iMac Book (1st ed.). Scottsdale, Arizona: Coriolis Group. p. 215. ISBN978-1-57610-429-3.
There are several large networks: EFnet, UnderNET, DALnet, and IRCnet make up the Big Four.
- ^Turban, Efraim; Leidner, Dorothy; McLean, Ephraim; Wetherbe, James (2005-02-07). 'Communication'. Information Technology for Management: Transforming Organizations in the Digital Economy (5th ed.). Hoboken, New Jersey: John Wiley & Sons. pp. 106 , – 107. ISBN978-0-471-70522-2.
The largest networks have traditionally been grouped as the 'Big Four': EFNet, IrcNet, QuakeNet, and UnderNet.
- ^'IRC Networks – Top 100'. irc.netsplit.de. netsplit.de. Retrieved 29 October 2018.
- ^'Uniform Resource Identifier (URI) Schemes'. Internet Assigned Numbers Authority. Retrieved 2012-10-14.
- ^Butcher, Simon (January 2003). Uniform Resource Locator Schemes for Internet Relay Chat Entities. IETF. I-D draft-butcher-irc-url-04. Retrieved 2011-04-10.
- ^Smith, Roderick W. (2000-04-08). 'The Internet: Using IRC to Get Help'. The Multi-Boot Configuration Handbook. Handbook Series. Upper Saddle River, New Jersey: Que Publishing. p. 289. ISBN978-0-7897-2283-6. Retrieved 2010-07-25.
mIRC is one of the most popular Windows IRC clients.
- ^'Opera Browser Wiki: IRC Client'. Retrieved 2011-04-10.
- ^'Warsow Wiki: IRC Module'. Retrieved 2011-04-10.
- ^Guenter, Daniel (2004-06-21). 'UT2004 Review'. BCCHardware. Retrieved 2011-04-10.
- ^'The Ultimate Uplink Guide'. Retrieved 2011-04-10.
- ^'ZDaemon – The Doom Wiki: Other utilities'. Retrieved 2011-04-10.
- ^'How to setup [sic] an IRC client to connect and login [sic] to Ustream'. Ustream-Helpers. 2012-01-29. Retrieved 2013-04-27.
- ^Mauldor (2010-06-20). 'Ustream vs. Justin.tv'. LiquidSilver. Retrieved 2011-07-13.
- ^'Twitch IRC'. Twitch Help Center. 7 April 2017. Retrieved 30 October 2017.
- ^Canavan, John. 'The Evolution of Malicious IRC Bots'(PDF). www.symantec.com. Symantec Security Response.
- ^'psyBNC Readme'. psybnc.at. Retrieved 2011-04-10.
- ^Carey, Chris (2009-07-18). 'IRC with irssi-proxy + screen'. chriscarey.com. Retrieved 2011-04-10.
- ^'Detachable Frontend (Core Rewrite) / UML / Windows Port (kicking Glade)'. smuxi.org. 2004-12-25. Retrieved 2010-07-25.
- ^'About Smuxi'. smuxi.org. Retrieved 2011-04-10.
- ^Mutton, Paul (2004-07-27). 'Users and Channels'. IRC Hacks (1st ed.). Sebastopol, California: O'Reilly Media. pp. 44–46. ISBN978-0-596-00687-7.
- ^Wang, Wallace (2004-10-25). 'Instant Messaging and Online Chat Rooms: Internet Relay Chat (IRC)'. Steal this File Sharing Book (1st ed.). San Francisco, California: No Starch Press. pp. 65–67. ISBN978-1-59327-050-6.
- ^'Channel Modes'. UnrealIRCd documentation wiki. Retrieved 6 January 2018.
- ^'Cloaking'. UnrealIRCd documentation wiki. Retrieved 6 January 2018.
- ^'Blitzed Open Proxy Monitor Shuts Down'.
The Open Proxy Monitor which has been provided by the Blitzed IRC network has been shut down..The database was so large that it is near to impossible for the team to backup, or find a new location to continue the service. Added to that, most of the team members do not possess the time anymore to keep the service running.
- ^Vamosi, Robert (2002-05-08). 'Pirated movies: Now playing on a server near you'. ZDNet. Retrieved 2011-04-10.
- ^Sasaki, Darla (2002-04-04). 'IRC 101: What Is It & How Do I Use It?'. Macobserver.com. Retrieved 2011-04-10.
Bibliography[edit]
- Reed, Darren (May 1992). A Discussion on Computer Network Conferencing. IETF. doi:10.17487/RFC1324. RFC 1324. Retrieved 2009-10-30.
- Oikarinen, Jarkko; Reed, Darren (May 1993). Internet Relay Chat Protocol. IETF. doi:10.17487/RFC1459. RFC 1459. Retrieved 2009-10-30.
- Kalt, Christophe (April 2000). Internet Relay Chat: Architecture. IETF. doi:10.17487/RFC2810. RFC 2810. Retrieved 2009-10-30.
- Kalt, Christophe (April 2000). Internet Relay Chat: Channel Management. IETF. doi:10.17487/RFC2811. RFC 2811. Retrieved 2009-10-30.
- Loesch, Carl (2003-07-17). 'Functionality Provided by Systems for Synchronous Conferencing'. psyc.eu. Retrieved 2011-04-10.Cite journal requires
journal=
(help)
Further reading[edit]
- Kalt, Christophe (April 2000). Internet Relay Chat: Client Protocol. IETF. doi:10.17487/RFC2812. RFC 2812. Retrieved 2009-10-30.
- Kalt, Christophe (April 2000). Internet Relay Chat: Server Protocol. IETF. doi:10.17487/RFC2813. RFC 2813. Retrieved 2009-10-30.
- 'Logs of major events in the online community'. Chapel Hill, North Carolina: ibiblio. Retrieved 2011-04-08.
- Butcher, Simon. 'IRC technical information'. alien.net.au. Retrieved 2011-04-10.
External links[edit]
The Wikibook Internet Technologies has a page on the topic of: IRC |
Wikimedia Commons has media related to IRC. |
- IRC at Curlie
- IRC.org – Technical and Historical IRC6 information; Articles on the history of IRC
- IRChelp.org – Internet Relay Chat (IRC) help archive; Large archive of IRC-related documents
- IRCv3 – Working group of developers, who add new features to the protocol and write specs for them
- IRC-Source – Internet Relay Chat (IRC) network and channel search engine with historical data
- irc.netsplit.de – Internet Relay Chat (IRC) network listing with historical data
An IRCd, short for Internet Relay Chat daemon, is server software that implements the IRCprotocol, enabling people to talk to each other via the Internet (exchanging textual messages in real time).[1][2] It is distinct from an IRC bot that connects outbound to an IRC channel.
The server listens to connections from IRC clients[3] on a set of TCP ports.[4] When the server is part of an IRC network, it also keeps one or more established connections to other servers/daemons.[5]
The term ircd originally referred to only one single piece of software,[6] but it eventually became a generic reference to any implementation of an IRC daemon.[7][8] However, the original version is still distributed under the same name,[9] and this article discusses both uses.
- 1History
- 2Features
- 2.5Clustering
- 3Configuration
History[edit]
The original IRCd was known as 'ircd', and was authored by Jarkko Oikarinen (WiZ on IRC) in 1988.[10][11] 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[clarification needed], 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 and 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 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 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 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 the most popular.
Sidestream versions[edit]
Irc Server Software Windows
More recently, several irc daemons were written from scratch, such as ithildin,[12] InspIRCd,[13] csircd (also written by Chris Behrens), ConferenceRoom,[14] Microsoft Exchange Chat Service, WeIRCd,[15] or IRCPlus/IRCXPro.[16]
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,[17][18] 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.[19] 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[edit]
Ports[edit]
The officially assigned port numbers are 194 ('irc'), 529 ('irc-serv'), and 994 ('ircs').[20] 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 the historical default.[21] These ports can be opened by a non-superuser process, and they became widely used.
Connections[edit]
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 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 coders have mentioned increases in the practical capacity per server from 10,000 users to 20,000 users.
SSL[edit]
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. More recently, as a security enhancement and usability enhancement, various client and server authors have begun drafting a standard known as the STARTTLS standard[22] which allows for SSL and plain text connections to co-exist on the same TCP port.
IPv4 and IPv6[edit]
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.
Clustering[edit]
Large IRC networks consist of multiple servers for horizontal scaling purposes. There are several IRC protocol extensions for these purposes.[23]
IRCX[edit]
IRCX (Internet Relay Chat eXtensions) is an extension to the IRC protocol developed by Microsoft
P10[edit]
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.[23][24][25]
TS6[edit]
The TS6 protocol 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.
Configuration[edit]
Jupe[edit]
Juping a server, a channel, or a nickname refers to the practice of blocking said channel or nickname on 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.[26][citation needed] 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.[27] 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 [edit]
An O-line (frequently also spelled as O:line[citation needed]; on IRCds that support local operators, the O-lines of those are called o:lines with a lower-case O[citation needed]), 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 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.[28]
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.[4] 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 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[edit]
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 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, e.g. freenode, 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.
Mirc Server Download
G-line[edit]
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 a similar concept known as an AKill was used.[citation needed]
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 a message explaining the reasoning behind the ban.
Windows Irc Server Software
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 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 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 [edit]
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 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), 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[edit]
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 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[edit]
References[edit]
- ^'RFC 2810 - Internet Relay Chat: Architecture'. Tools.ietf.org. Retrieved 2010-03-03.
- ^IRC Server Request FAQArchived 2009-04-22 at the Wayback Machine
- ^'RFC 2810 – Internet Relay Chat: Architecture'. Tools.ietf.org. Retrieved 2010-03-03.
- ^ ab'RFC 1459 – Internet Relay Chat Protocol'. Tools.ietf.org. Retrieved 2010-03-03.
- ^'RFC 1459 – Internet Relay Chat Protocol'. Tools.ietf.org. Retrieved 2010-03-03.
- ^IRCD FAQ on irc.org
- ^'Search IRC, IRCD version overview'. Searchirc.com. Retrieved 2010-03-03.
- ^'Open Directory – Computers: Software: Internet: Servers: Chat: IRC'. Dmoz.org. 2010-02-26. Retrieved 2010-03-03.
- ^'IRCD – the server'. Funet.fi. Retrieved 2010-03-03.
- ^IRC History on IRC.org
- ^History of IRC, Daniel Stenberg
- ^Ithildin IRCd
- ^Inspire IRCd
- ^WebMaster Inc.
- ^WeIRCd
- ^OfficeIRC – IRC Server Software, Web Chat, Internal Communications and Instant Messaging (IM)
- ^Blog entry mentioning RFC violations
- ^Numerics diversity of different IRC daemons
- ^Client source (DMDirc) showing conditions for different servers (e.g. in function starting at line 1523)
- ^IANA.org
- ^'RFC 1459 – Internet Relay Chat Protocol'. Tools.ietf.org. Retrieved 2010-03-03.
- ^STARTTLS standard
- ^ abPaul Mutton, IRC hacks, O'Reilly Media, 2004, ISBN0-596-00687-X, pp. 371
- ^beware's P10 documentation
- ^ircu P10 documentation
- ^'Reply to thread 'K-lined for attemting [sic] to join juped channel ?' on EFnet forums'. Retrieved 2013-03-13.
- ^'Freenode, Using the network'. Archived from the original on 2007-02-26. Retrieved 2007-02-25.
- ^IRC Operator Version 1.1.2
External links[edit]
- Undernet K-Line and G-Line FAQ with reasons for them, amongst other things
- EFnet FAQ with several -line terms explained
- Quakenet General FAQ G/K-Line