| The Awesome IRC Article, Part 1: The Basics |
| Written by Despair | |
| Tuesday, 07 November 2006 | |
|
In this article, I will be discussing IRC, but I will not be giving a how-to guide. If I do create such a guide (again, for I have written such guides many, many times), it will be a seperate article. While this is not a guide, much of the information might well be informative if you only know the basic IRC commands. Given what I believe to be my current reader base, most of this will probably not be new to my readers. Despite that, I'm hoping to present it in a vaguely entertaining manner, or at least one that doesn't bring new heights of boredom, nay, horror, upon people. If people actually like this article, I may add further ones in an attempt to explain a whole host of IRC terms and concepts. By terms, I don't mean slang or hideous distortions of English, but concepts such as net riding, timestamp protocols, username registration (as opposed to nickname), channel mode types, bouncers, :lines / conf lines, and so on. Also, it is worth noting that I almost exclusively use NetGamers, so I will be referring to its particular settings and environment. NetGamers uses a modified version of ircu and a modified version of GNUworld services. IRC is short for Internet Relay Chat. While this may bring some form of archaic physical punishment (or sport) to mind, it is not related, for this is a computer activity. The reason for the name is because unlike Instant Messaging (IM) networks such as MSN, IRC does not have a peer-to-peer relationship between users. Instead, clients (users) are connected to a server, and messages are sent by a client to the server, and then to the other client(s). Hence, there is a relay of chat. But wait, there's more! If you are connected to a server on a network and not just a lone server, the message may first pass between different servers before it reaches the target user(s). In reality, almost all IRC servers are on networks, if simply because IRC services, which will be discussed below, normally require their own server.
In the real world IRC servers are programs running on servers (computers, generally stable and with good routing and internet connections), called IRC daemons (daemons are background processes, not monsters or mystical guardians), or ircds. Most ircds need to be run on unix servers, and the more users they host, the better bandwidth and computer specifications they require (especially bandwidth). Most servers rarely hold more than a few thousand to a dozen thousand users. Some have held up to fifty thousand in the past, although this is rarely sensible as it means if one server goes down, all the users go down also. Don't keep all your eggs on one basket, don't keep all your users on a sinking ship, and so on.
IRC networks are constructed in a tree organisation, whereby there are a number of user carrying servers (leafs) connected to servers that exist solely to keep the network together (hubs). There are no loops in an IRC network, and each step to another server is called a hop. The more hops between you and another user, the greater lag (time length of time it takes to get a bit between you and another entity and back) between the two of you. Networks also have services servers, which are servers which only have services connected to them, and do not accept users. Services will be discussed later.
Interesting fact: clients can refer to both clients on a network, which are users, bots, services and the like connected to the network (basically anything that's not a server) and to IRC clients, which are the programs that are used by people to connect to a network.
Users on a network can be identified be identified by the /whois command, which will show the following:
<nickname> is ~<ident>@<hostmask> * <real name> <nickname> on <channels> <nickname> using <server> <description>
Networks hide some details, such as the hostmask, the specific server a user is on, and any private or secret channels.
For instance:
Despair is ~ This e-mail address is being protected from spam bots, you need JavaScript enabled to view it * Despair Despair on #cservice Despair using *.netgamers.org The NetGamers IRC Network
Interesting fact: the /lusers command gives statistics of all users currently connected to the network and server. In some ircd code, lusers are distinguished from users, as users are only those who are IRC Operators.
Also unlike IM networks, users do not just nebulously exist independent of each other, but are usually congregated in channels. Channels are essentially chatrooms, usually identifiable by the # prefix. Some networks support channels with different prefixes; & channels are unique to a specific server and every server on the network can have a &help channel which would be unique on every server; + channels are modeless channels (see below). A list of all (public) channels can be found using the /list command.
Channel names are normally self-explanatory, such as the #help channel normally being orientated around help of some kind, although some users enjoy having bizarre channel names, such as #TacoDinner, which was a channel completely unrelated to tacos or dinner. Channels many have a specific area of discussion, or are simply there for general chat. Channels possess topics, which are messages shown to users when they join, which many give some insight as to the nature of the channel. Again, this is not necessarily the case, as the following examples may show:
*** Now talking in #175 *** Topic is 'GET YOUR CYBERSEX HERE. JUST PM DESPAIR'
*** Now talking in #PHP *** Topic is '(a-v0id) ::Welcome to #PHP :: Where MacGyver still rocks our world, and anything can be achieved with wire and a penknife!! MacGyver for President:'
*** Now talking in #tacodinner *** Topic is 'Bored. JOIN OUR SISTER CHANNEL #PIE (DINNER) ! (Please note that pie is good.)# | biology class now in session, please take your seat'
Users need not need use channels however, and may communicate privately, via Private Message (PM). Again, these messages are sent to the server, and then passed on to the topic. "But wait," you say, "is there more? I don't want to be spied one!" Almost all IRC networks do not spy on their users, although it is possible, and some software does support it. Ultimately, it's not good practice, sensible, and probably quite wasteful in terms of disk space to spy on chats. I don't personally know of any networks that do have such a feature, and many networks have publically viewable code for their servers, so it is possible to find out.
Interesting fact: originally, there weren't channel names, only numbers. The channel #0 was the no-channel, the channel that meant a client wasn't in any channels. This is why joining #0 causes you to part all channels that you are in.
Channels on networks aren't completely anarchic. Channels possess operators (also called ops or chanops), who are identifiable by the @ prefix. Operators have the power to change the topic, kick and ban users from the channel, and change channel modes. A network itself isn't a haven of evil and debauchery either (this is a minority view). The network itself has its own operators, termed IRC Operators, IRCops, or opers, who are responsible for maintaining network stability, as well as removing troublesome users from the network. Sometimes opers are erroneously called IRC Cops. These will be explained during or after the mode descriptions.
Services are special clients (bots, in fact) on networks which are designed to help users. Services come in many forms and types; many networks have a unique bot with the -Serv prefix for each of their various services (eg. ChanServ, MemoServ, NickServ, OperServ), but NetGamers uses the bot P for all of its user purposes, and a separate one for IRCops. A list of services I'm familiar with are:
Channel Services; which maintain channels on behalf of users, allowing them to preserve control over them, even when they're not online. I could register #despair, for instance, and make sure that I always have control over the channel, even if I go offline. Channel Services sit in all registered channels, and it is likely that most channels on a network will be registered with Channel Services.
Memo Services; which allow the sending of messages to other users.
Nickname Services; which allow control over a nickname to be enforced, allowing users to have a permanent name that is recognisably them and make sure that no-one can impersonate them.
Oper Services; which are for opers eyes only. They allow them to have greater control over the network and its users.
On NetGamers, the bot named P is primarily the Channel Services, but also contains a note command that mimics the primary function of MemoServ as well as a module which functions as a NickServ.
Interesting fact: I hate services with discreet and individual -Serv bots. That isn't a comment on their coding or such-like, simply the fact that I prefer having a single port of call. This may well be the last time I refer to them in my articles without mockery.
On IRC networks, users and channels have things called modes. Modes are settings on a user or channel, which do various things, and are case sensitive. A list of modes I have had experience with is below, although they may have different meanings (or none at all) on different servers. Modes with a * at the beginning are not on NetGamers.
User modes *+! - Zombie, the mode for really naughty people. This mode prevents people from talking, or sending messages anywhere. It's a pretty unnecessary mode in many respects, as one might as well just ban someone from the network (g:line). +d - Deaf, the mode who don't like people. This mode prevents the client from receiving messages in channels, although private messages are received normally. This mode is normally only used by services who have no need to see what happens in channels, and may actually suffer lag if they were forced to receive all the messages in all of their channels. +g - Server debug messages, very deprecated. This is an oper only mode that allows the oper to receive server debug messages. +i - Invisible, the mode for both the highly paranoid and solitary. This mode prevents a user from being visible on /who or /whois commands containing wildcards. +k - Services, the mode for services. Can't touch this! +o - Oper, the mode for IRC Operators. This mode is only given to those who perform a special command with a 1337 oper password. +r - Registered, the mode for the registered. This mode cannot be set except by username/nickname services, and cannot be seen in fact, but tells the services that you're logged in. *+R - Registered users only, the mode for spam-averse people. This prevents users who aren't logged in from sending private messages to you. +s - Server notices, the mode for receiving messages from servers. Only for opers. +w - Wallops, the mode for the curious. This mode allows normal users to view wallusers messages, which are nifty messages that are sent by opers and arrive in the status/network window. These messages almost never carry anything useful, meaningful or beneficial to the lives of men or puppies, but they might amuse you if you read one. For opers, it allows the viewing of wall<i>ops</i>, which are like wallops but can only be seen by opers, and are often sent by servers to tell them there is a problem. +x - Cloak/hidden, the mode for the slightly paranoid and the very sensible. This mode cloaks/hides the hostmask of the user, and cannot be removed once set. For those unfamiliar with the term, a hostmask is basically an address from which your IP address can be easily derived. On NetGamers, the +x usermode has no effect to people not logged into P; when logged into P, the hostmask is changed into <nick>.users.netgamers.org.
Channel modes *+a - Admin, the mode for channel admins. This mode is basically like +o, only it prevents other users from kicking them from the channel. +a users have their nick prefixed with a ~ or a *. +b - Ban, the mode for bad boys and girls. A ban is set on a hostmask, and prevents a user from joining the channel. If they're already in a channel, it prevents them from speaking in the channel. Normally a kick is applied along with a ban, so they are removed and cannot rejoin. +c - No colour codes, the mode for people who don't like the pretties. There are particular font and colour codes on some IRC clients, that can make things bold or red, for instance. Some people find this disruptive and distracting, and so want to ban them. This mode prevents lines of text containing these codes from being sent to the channel. Is mutually exclusive to +S. +C - No CTCPs, the mode for people who don't want CTCPs sent to the channel. CTCPs (Client To Client Protocol) are messages normally used for pings (to check if a user is still connected to the internet on a reasonable connection), and show up as a bright colour and other such annoying things. *+h - Half-ops, the mode for those imbued with but a fraction of divinity. This mode allows a user to kick users (typically not +o users) and change the topic, by granting them half-op status. +h users are normally prefixed in the nicklist with a %. +i - Invite only, the mode for those who are cult-like. This mode prevents people who are not invited from joining the channel. Networks with channel services typically have feature that allows users to request invitations from the bot. +k - Keyed, the mode for passwords. This mode prevents a user from joining the channel unless they know the key/password, or have received an invite. Yes, I know that's poor grammar, but the term is actually invite. +l - Limited, the mode for crowded channels. This most sets a certain number (such as 42), and prevents users from joining the channel once this limit is reached. This mode is useful if the channel is being spammed by random people, or if people are starting to be disconnected from the network for receiving too much information as there are too many users in the channel. Again, invited users can ignore this mode. +m - Moderated, the mode for tranquillity. This mode prevents normal users (who are not * / % / @ / +) from speaking. Often done for announcements. +n - No external messages, the mode for no interruptions. This mode prevents people who are not in the channel from sending messages to the channel. When a user talks in a channel, they are actually sending a message with the channel as the target/recipient, and this mode makes sure only people in the channel can talk there. Having both +m and +n is superfluous, since only users in a channel can receive special modes anyway. +N - No notices, the mode for <adjective> people. This mode prevents /notice being targetted at the channel. A notice is a special type of message, and if sent to a channel often causes the message to appear in all of an IRC client's windows, so it is useful for receiving attention or being an idiot. This mode prevents that. +o - Channel operator, the mode for ops. This mode gives real ultimate power within the channel, giving access to mode changes, topic changes and kicks. An op's nickname is prefixed with a @ in the nicklist. *+O - Oper only, the mode for uber secret chans. This mode prevents non-opers from joining the channel, and is really, really silly. +p - Private, the useless mode. This mode prevents the channel from showing up on a /whois of a user in the channel, but is now pretty outdated given the existence of +s. Is mutually exclusive to +s. +r - Registered users only, the randomless channel. This prevents users who aren't logged into services from joining the channel, which is especially useful to keep out random spam bots which join networks. +s - Secret, the secretive mode. This mode prevents the channel from showing up on a /whois of a user in the channel, and prevents the channel from showing up in a /list. Is mutually exclusive to +p. +S - Strip codes, the mode for people who don't like the pretties, but still want to read. This strips colour codes from all text sent to the channel, but allows the rest of the text to be sent. Is mutually exclusive to +c. +t - Only ops may set topics, for people who want non-snappy channel modes. This prevents people who aren't +o (or +h / +a, for that matter) from changing the topic. +T - No multi-target messages, for people who don't want non-specific stuff. This prevents the channel from receiving messages that are sent to more than one channel at once, which is useful to prevent people who use a script to send messages to all channels they are in from cluttering up a channel. *+u - Auditorium, for announcement channels. This prevents users without funky flags (i.e. normal users) from showing up in names lists, allowing only the important people to be shown. Extremely useful to prevent clients from being flooded with nicklists in big channels. +v - Voice, for mute people. This allows users to speak in a +m channel, and is also used as a sign of membership or officialness in the channel.
Interesting fact: many of these modes (mainly ones such as +C ant +T) are impractical on large networks, as they'd cause large amounts of lag if every message had to be checked for umpteen modes before being allowed to go through. Interesting fact 2: there are loads of possible modes on different networks. Don't even think of telling me I've "missed" one.
Now that you've read and forgotten this fascinating list, I'll tell my lovely readers about IRC Operators. IRC Operators primary job is to make sure the network stays together. They have a variety of commands to link servers together and the like, and are also capable of removing users from the network and banning them. This doesn't mean it's their job to do so, nor to help users to be friendly. They may seem to be arses, and they may be impossible to find on IRC. This doesn't mean that they're not good opers, only that they are found to be arses or impossible to find on IRC; by users. Some opers enjoy and are good at helping people, but some others are simply there to preserve the network. In addition to opers, each server also has at least one admin. An admin is generally an oper on IRC (although this isn't necessarily so), but the major thing is that he or she has access to the server itself. This means that the admin is responsible for maintaining the server / box itself, and probably pays for it.
On many networks, especially ones with -Serv fetishes, the opers are also in charge of the services. In some service packages (svrx and GNUworld spring to mind), being an oper is not a requirement for being a services administrator, and it may not be uniquely useful to be both.
While I said that I wasn't going to give a how-to guide, basic commands are:
/join #channel [key] - joins a channel [with a password] /part #channel - parts a channel /quit - disconnects from a server /mode <target> <modes> - changes modes on the specified user (probably you) or channel (requiring +o) /msg <target> <text> - sends a message to the target nickname or channel /server <server> - connects to a server
Common IRC clients are mIRC, irssi, BitchX and XChat. I use mIRC, partly because I'm lazy; it was the first client I downloaded and I have loads of scripts on it, so I don't want to move.
I am Despair, and this was my article. Hands off, it's mine! |
|
| Last Updated ( Tuesday, 07 November 2006 ) |