IRC (Internet Relay Chat) is a widely used Internet service that allows anyone to exchange typed lines of text in real time with other users all over the world by connecting to an IRC server. Messages may be sent privately (to one user) or to a channel (which may have several users).
This introduction will focus on "vanilla IRC", mostly as defined in RFC 1459 and/or implemented on IRCnet. I'm going to avoid aspects specific to other networks, such as channel services or exotic modes; in my opinion that stuff (*** umodes available oiwsabjgrchytxkmnpeAEGFSLX, channel modes available +abceiklmnoprstvMNL - good grief) causes a lot more confusion and other problems than it prevents anyway. Even if you prefer a network that runs a modified version of ircd (the original IRC server software), you'll probably recognize the core IRC functionality described in this document.
Purely for the sake of convenience I will write as if any
IRC user or other person I refer to is male
(he
). Please feel free to parse that as she or
he/she.
Jarkko Oikarinen started developing the IRC protocol in the summer of 1988. The original goal was to provide a means for users on OuluBox, a BBS (bulletin board system), to chat amongst themselves, but only a few months later IRC servers were running in Finland and the U.S., forming the basis for a global network.
In 1993, RFC 1459 was published, defining
the protocol. Three years later, the main
IRC network
mentioned in
RFC 1459 split into IRCnet and EFnet.
A computer, a network connection and an IRC client.
There are quite a few different IRC clients around, but if you're unsure of which one to choose, I suggest starting with mIRC (if you run Windows) or Ircle (if you run Mac OS). If you're on a Unix-type system, you may already have ircII installed (try typing irc at the shell prompt). All these clients can be freely downloaded on the net.
From a user interface viewpoint, many IRC clients implement a single text area, which is used both for issuing commands (to be executed by the client or server) and for entering actual conversation (to be sent to a user or a channel). In these cases, any input that starts with a special command prefix character (usually /), is interpreted as a command. Typing text without that prefix sends the text to the selected channel or user instead.
In order for you to connect to a specific IRC server, the host you are running the IRC client on (or the firewall or proxy you may be connecting through) must have been granted access to that server. In the case of major IRC networks, such as IRCnet, access should not be a problem since those networks are intended for public use and have servers worldwide. You won't need a password for this kind of public IRC servers.
If your client doesn't come with a list of networks and servers, look here for a list of IRCnet servers.
The IRC server is the software that runs on a server machine, accepting connections from end users' IRC clients such as yours, and then handles traffic so that the clients can chat together.
An IRC network is formed when two or more servers are connected together. When you chat on a server that is part of an IRC network, you will be able to talk not only to other users on the same server, but also to any user on any other server on the same network. However, users on different networks, e.g. A on IRCnet and B on EFnet, will not be able to chat with each other using normal IRC functionality. (Two servers will not form a network by merely being on the Internet together; they must be explicitly interconnected by their respective operators.)
Occasionally, on an IRC network, a routing server will reboot, a network connection will fail, or some other problem will sever a connection and cut the network in two. This is known as a netsplit. Until the problem is fixed and the network connected together again, the two "split" network portions will not communicate. All the users on the opposite side of the split will seem to suddenly quit, and their quit comment will show the two servers the split is between, e.g. [04:36] *** psyjaZz has quit IRC (irc.cs.hut.fi *.oamk.fi). If all the users on a given channel are on the same side of the split, the channel will be empty, i.e. cease to exist, on the other side of the split.
You may need to set one up, as some IRC servers may otherwise refuse to accept your connection. Ident was developed at a time when normal users didn't run computers, just connected their "dumb" terminals to big Unix-type machines. In fact, if you're on a Unix system, you (or your system administrator) may already be running Ident.
The protocol is very simple - basically, an Internet host (such as the IRC server you're attempting to connect to) may contact the Ident server on your machine and say "the person using port so-and-so on your system wants to use a service I run; would you please tell me his user name and the kind of operating system you're running". Your Ident server then replies with that information. Many IRC clients include Ident servers and instructions on how to set them up.
As anyone can now run an Ident server on his workstation and send any response he pleases, Ident has become rather useless for identification purposes. Many users set their servers to send a fictitious user name, and it's also common to reply UNIX for the operating system even though the system really is e.g. WIN32).
Are you wondering how your little desktop computer suddenly turned into a server? Let me explain: the party that initiates a connection is the client, and the party that listens for incoming connections is the server. Thus, in order to be able to contact other servers, even large and powerful servers need to also run client software.
Let's take a simplified look at a series of typical network transactions that might take place when you connect to an IRC server:
Don't be intimidated by the above "nice to know" stuff - often all you need to do is check a box in your IRC client options menu.
Before logging on, you'll need to decide on a nickname, such as ImANewbie or Chatter69. Your nickname is what other IRC users primarily will know you as; it will show up whenever you join or part a channel, send a private message, and so on. It can be up to nine characters long.
Unless your real first name is reasonably exotic it will probably already be taken, so try to make up something unique instead. Nicknames on IRC are not owned, but trying to use the same nick as someone else will still cause grief such as server kills and misplaced private messages.
When you're done configuring your client, connect to the IRC server of your choice.
IRC servers usually listen at least to port 6667, but if you know that the server you will connect to listens to a different port number, you can tell your client to connect there instead.
In addition to simple nicknames, a more versatile way of referring to user identities on IRC is the usermask, sometimes referred to as user@host or banmask. Usermasks are used e.g. when placing channel bans on the IRC server, and chances are that your IRC client uses them locally as well for specifying who should be ignored, automatically given channel operator status etc.
The mask is constructed as follows:
Wildcards are allowed, e.g. *!*@* would cover anyone on IRC.
Since IRC servers "kill" (i.e. disconnect) duplicate nicknames on sight, the nickname is often enough to specify a user. Nicknames can, however, be changed at will, so they're not useful for control purposes; if you decide to e.g. have your IRC client ignore someone who's flooding you with unwanted messages, you don't want him to be able to just change his nickname and continue harrassing you.
The user name will be either the name your IRC client provides at logon, or the user name part of your Ident server's response. It may be preceded by a special character indicating whether the IRC server received an Ident response from your host (~ indicates missing Ident) and whether your connection is restricted.
Your host name will be the DNS (Domain Name System) name for the IP address you're connecting from. If your network's DNS is broken or some other problem prevents the lookup from succeeding, your usermask will contain your IP address instead.
Let's assume my nick is thor, my user name is tkottelin, and the host I run my IRC client on is m15m5hel.dial.kolumbus.fi. This can be expressed as "thor!tkottelin@m15m5hel.dial.kolumbus.fi". If my reverse DNS wouldn't work, the usermask would be something like "thor!tkottelin@193.229.113.15" instead.
Due to the @ character, the user@host part of the usermask looks similar to a mail address, but nevertheless it isn't one. Mail sent to IRC user@host addresses on Unix systems have a certain chance of finding its way to the intended recipient since the user name probably exists and the host machine may happen to run a mail server. For the most part, however, this cannot be counted on; e.g. tkottelin@eris.terranova.fi or thor@m15m5hel.dial.kolumbus.fi will certainly not work, since the first host is a workstation and the latter a dynamic dial-up line, neither of which host mail servers.
One way of chatting is joining one or more channels. A channel is a group of users chatting (or idling) together. Channels are usually formed by people with something in common - teenagers living in the same city, fans of the same rock group, Linux enthousiasts... Any text you send to a channel will be visible to all the users on that channel (unless they have set their clients to ignore you).
Your IRC client may come with a pre-loaded list of channels, but there's no guarantee that those channels happen to be in use on your particular server or network at any given time. You can have your client download the current list of channels, but if the list is long, the server may disconnect you for flooding the connection. You may want to view a reasonably current channel list on the Web instead.
The channel listing generated by your IRC server will show the channel name, the topic if one exists, and the number of users currently on that channel. Channels where new users are welcome often have an informative topic line in the language of the channel.
When you have found a suitable channel, use the command JOIN to enter it, e.g. /JOIN #mychannel or /JOIN &another. You're not restricted to sitting on one channel at a time; you may join several if you want to. I usually idle on two or three different channels.
They exist so that channel names will be distinguished from user nicknames. If the server isn't connected to an IRC network, it doesn't matter which prefix - # or & - it has been created with. However, if the server is connected to another server (i.e. an IRC network), only # channels will work globally, across the network; & channels will be local and work only on the local server.
The channel operators (chops or chanops) are the hosts and rulers of their channel. You can recognize them by the @ prefix added to their nickname whenever it's listed in the context of that channel.
Chanops can set modes and kick and ban users as they please. There is basically no one you can complain to about having been treated unfairly by a channel operator, e.g. kickbanned for no good reason; instead, you can create a channel of your own and run that channel as you see fit.
Asking for ops is one of the most counter-productive things you can do; you will look like a clueless newbie who's interested only in gaining channel operator status.
If you're prevented from joining the channel of your choice, chances are that one or more of the following circumstances exist:
If the channel is moderated (channel mode +m), you will not be able to send text to the channel unless you have been "voiced" (channel mode +v).
Also, if you are banned from a channel while on that channel, you won't be able to talk on that channel any more. Note that merely setting a ban doesn't remove anyone from the channel; that's what the KICK command is for.
The TOPIC command may be used to associate a channel with a topic (typically displayed in conjunction with the channel), e.g. /TOPIC #mychannel This channel is all about me. If the channel mode +t is on, only channel operators may set the topic.
When you want to leave the channel, issue the PART command, as in /PART #mychannel.
You can chat privately with another user on the same server or network, regardless of whether either of you is on a channel or not.
You will need to know the nickname of the person you want to chat with. Most IRC users nowadays make themselves "invisible" by setting user mode +i, so unless you know what channel the person you're looking for is on, you may find it very difficult to use IRC server functionality to find out what his nickname is.
When you have the nickname, do a WHOIS on it (e.g. /WHOIS MyFriend) just to be sure; then start talking. On many clients, you would be able to type e.g. /MSG MyFriend Hi there! (to simply send the message) or /QUERY MyFriend Hi there! (to open a dedicated window for chatting with MyFriend).
Btw., the native IRC command for sending a message - to a nickname or to a channel - is PRIVMSG. A related command is NOTICE; the difference between notices and normal messages is that notices never may be replied to with an automatic message. The logic behind this is preventing software components such as IRC servers from wasting resources on perhaps endless loops of automatic replies to automatic messages.
Wrong.
IRC is supposed to be an enjoyable experience, so it's a good idea to behave as you would like for other users to behave towards you. Just log on, join a channel or two, idle for a moment so you'll learn the name of the game, and then chat as you would in real life; this should keep you out of trouble.
Remember that different rules apply on different channels (group chats). Some channels encourage idling, others will kick you for it; many channels allow only certain languages, some outlaw anything but plain text, etc. Unfortunately you may not be able to find out the rules of a specific channel before you find yourself kicked for breaking them, but hey, better late than never; unless you're banned as well, you can re-join the channel and try not to repeat whatever behavior got you kicked.
For some channels, a web page or some other kind of written information about the channel may be available. The channel topic may tell you how to retrieve it, or one of the nicknames (maybe a "bot", an automatic IRC client) on the channel may send you a welcome message with information.
| Don't... | as... |
|---|---|
| type in ALL CAPS | it's considered shouting |
| send the same line of text several times, or hit Enter after every few words | the conversation will scroll off the screen prematurely |
| send or accept unsolicited files | a Trojan may do nasty things to your computer |
| mass-invite strangers to your channel | it's annoying; you will be ignored, kicked, banned, killed and/or K-lined |
| output junk such as the Microsoft Chat Appears as lines, the lame Showdown advertisements or the large trout in mIRC | nobody likes it; you may be kicked and/or banned |
| pester other users for personal information such as age, sex or location | it's an invasion of privacy; use the WHOIS command instead. Of course, you may introduce yourself if you want to, and the other person will do the same if he wants to |
Why would you want to do a stupid thing like that? - Just kidding...
Use the command QUIT, followed by an optional goodbye message, e.g. /QUIT See you all tomorrow.
Sometimes a server may forcibly disconnect you from IRC, i.e. "kill" your connection. IRC operators and server administrators can issue kill messages to get rid of abusive users. Most kills, however, are automatically generated server kills, due to nickname collisions or similar network problems.
The kill notice should explain the reason for the kill. If the kill is generated by a human, the reason is usually spelled out quite clearly. Server kills tend to be more cryptic, but are explained here.
Not nearly all unvoluntary disconnections are due to kills. Unless your client shows you a kill message, the disconnection was probably due to some other reason, such as flooding, not responding to a PING, or a network problem.
PING is the IRC server making sure that your client is still there. When a PING message is received, the client needs to reply with a PONG message, otherwise the server will end the connection.
A PING may occur immediately when you connect to IRC; the idea behind this is checking that you're not forging ("spoofing") your IP address; the PING message is sent to the address that you claim to connect from, and it includes a random string that must be sent back together with the PONG reply.
During the connection, the server sends PING messages at constant intervals, e.g. every 180 seconds.
The DCC protocol allows two IRC clients to connect with each other directly (as explained earlier, normal IRC chat takes place through one or more IRC servers instead). DCC can be used for private chatting (DCC CHAT) and also for sending and receiving files (the sender uses DCC SEND, after which the recipient accepts the file using DCC GET).
Typing is slower than talking, so when your IRC pal says something really funny, instead of saying "I'm rolling on the floor laughing my ass off", you could simply type "ROTFLMAO".
Here's a compilation of more or less well known acronyms:
There are a couple of user modes that you can set to customize your client:
| mode | mnemonic | property | example | comments |
|---|---|---|---|---|
| i | invisible | you will not be included in WHO listings (unless the user issuing the command is on the same channel) | /MODE Chatter69 +i | Many IRC servers will automatically set this mode for you when you connect |
| o | operator | IRC operator status | /MODE Chatter69 -o | This mode can be set only using the OPER command |
| s | server notices | receive server notices | /MODE Chatter69 +s | |
| w | wallops | receive WALLOPS (messages sent to all operators) | /MODE Chatter69 +w |
Another flag you can set for yourself is the AWAY property: say you have to take a break from IRC because your dog needs a walk. Type /AWAY Walking the dog, and anyone who sends you a private message or sends your server a WHOIS query for you will receive a notice similar to Chatter69 is away: Walking the dog. When you and your dog return, just type /AWAY, and you will be considered "here" again.
You can set user modes and away messages only for yourself, not for other users.
ISON will simply tell you whether certain nicknames are online or not: /ISON Per Marie Elvis.
NAMES will list nicknames and channels, or nicknames on one or more specified channels.
The WHO command was designed to list users, but nowadays it has very limited use since most users (explicitly or automatically) set user mode +i, making them "invisible" to the WHO command.
WHOIS will return information about a particular user, e.g. /WHOIS MyFriend. On an IRC network, the best source of information will often be the server that user is connected to. A convenient shortcut to specifying that server is using the nickname for this as well, as in /WHOIS MyFriend MyFriend.
WHOWAS may find similar information about a user who already has signed off IRC or changed his nickname.
If you become the target of abusive behavior such as flooding, don't waste time looking for someone to ask for help. Instead, protect yourself. You can block private messages, CTCP messages and DCC requests using the ignore functionality of your client software. If the abuser disrupts a channel you're on, notify one of the channel operators (or kick/ban the user yourself if you're a chanop).
The STATS command is used to read configuration information and statistics from a certain server (from the server you are connected to, if none is specified). For example, /STATS i would return the I and i lines (a list of users and hosts that will be allowed to connect) from your current server's configuration file, and /STATS k irc.funet.fi would list the K lines (a list of users and hosts that are banned even though they may have an I or i line) in force on that server. There are other options as well, not all of which simply retrieve static information; try c, h, l, m, o (for O lines, or operator host masks) ,u and y!
Other commands that will provide you with server-related information include ADMIN, INFO, LINKS, TIME, TRACE and VERSION. All of these will accept a server name for a parameter, e.g. /ADMIN irc.funet.fi.
An "IRC admin", a server administrator, is a person who is in charge of running an IRC server. He has access to the server configuration files and therefore complete control over how the server runs; who is allowed to connect, etc.
IRCops (IRC operators, not "IRC Cops"!) help admins run the IRC service and are also expected to assist users. Ops are able to connect and disconnect servers, and disconnect ("kill") and ban ("K-line") users from the server.
IRC operators should not be confused with channel operators. Although RFC 1459 states otherwise, IRCops nowadays typically take no part in channel conflicts, so you should not ask one to kill off a bad person so you can get "your" channel back.
For probably most organizations running IRC servers, IRC is not a lucrative business; you can't sell stuff on IRC or place advertisements there as you can on the Web. Therefore ISP executives often couldn't care less about whether IRC stays or goes. Instead, IRC servers - no matter what the organization - are run largely on a volunteer basis, and it's often reasonably easy to annoy those overworked volunteer IRC admins and ops enough to convince them that your network or domain - or even your top level domain, such as everyone in your country - doesn't deserve access any more.
Remember, access to IRC is a privilege, not a right.
If you attempt to JOIN a channel that doesn't exist, it will be created for you, and you will be given operator status ("ops") on that channel. Subsequent users who join the same channel will not be given operator status (as long as the channel isn't empty at the time they join).
Just as you can use the MODE command to adjust your own user properties, you - as a channel operator - can set certain channel modes that affect your channel:
| mode | mnemonic | property | example | comments |
|---|---|---|---|---|
| b | ban | users matching this usermask cannot join the channel nor talk on the channel | /MODE #mychannel +b *!*@*saunalahti.fi | You would typically ban someone if he acted in an abusive fashion and kicking him didn't keep him from coming back and repeating the offense. A user can usually change his nickname right away, and can often obtain a new IP address by hanging up and redialing, so you'll probably want to ban whole domains, or in the absence of reverse DNS, C class networks (e.g. /MODE #mychannel +b *!*@195.165.8.*) |
| i | invite-only | only invited users may join the channel | /MODE #mychannel +i | |
| k | key | only users who enter this password may join the channel | /MODE #mychannel +k secret | Users will need to enter the password as a parameter to the JOIN command, e.g. /JOIN #mychannel secret |
| l | limit | maximum user limit | /MODE #mychannel +l 10 | |
| m | moderation | only "voiced" users will be able to talk on the channel | /MODE #mychannel +m | |
| n | no external messages | only users on the same channel will be able to send messages into the channel | /MODE #mychannel +n | Otherwise users will be able to use PRIVMSG to send to the channel even if they're not on it |
| o | operator | give someone channel operator status | /MODE #mychannel +o MyFriend | You should be careful when giving ops, because you're basically giving away the channel. Never op someone you wouldn't trust the channel to, and never op someone without being certain he really is who you think he is (it's easy to modify one's nickname and "real name" so that they match someone else's). On the other hand your channel should have enough ops, otherwise it may easily become stuck in an opless status |
| p | private | make the channel "private" | /MODE #mychannel +p | A private channel will not be included in a reply to NAMES command, unless the user issuing the command is on that channel |
| s | secret | make the channel "secret" | /MODE #mychannel +s | A secret channel will not be included in a reply to a LIST or NAMES command, unless the user issuing the command is on that channel |
| t | topic | prevent normal users (i.e. non-chanops) from setting the channel topic | /MODE #mychannel +t | |
| v | voice | give someone a voice, i.e. allow him to speak on the channel | /MODE #mychannel +v MyFriend | Technically, this is relevant only if the channel is moderated (mode +m). However, some non-moderated channels use this voice flag to denote loyal and trusted non-chanop users |
The above examples illustrate setting modes using the + sign. Modes can be removed by using the - sign instead. Mode changes can also be stacked on the same command line, as in /MODE #mychannel +im.
The following commands are available only to channel operators:
| command | action | example | comments |
|---|---|---|---|
| INVITE | invite someone to the channel | /INVITE MyFriend #mychannel | |
| KICK | remove someone from the channel | /KICK #mychannel Jeff Abusive language | The comment is optional |
Also, if the channel mode +t is set, only channel operators may change the channel topic (done using the TOPIC command).
Normal IRC functionality doesn't allow for servers to "remember" channel operators; if you leave the channel, you'll lose ops. If you're the last user to leave the channel it will cease to exist, and the next person to join it will get ops. If you're the last op but not the last user to leave, the channel will become "opless", and the only way for someone to receive ops will be joining the channel at a moment when it's empty.
If your channel has a lot of users (or even a few users who idle constantly), you could give operator status to a few persons that you trust, and require them to op you (and each other) when necessary. This approach seems easy, but it is very insecure since no reliable authentication takes place; anyone with access to the same host or dynamic IP address scope could join the channel using your nickname and username, and receive ops. (Sooner or later some idiot chanop would probably even op an attacker on nickname alone.) Instead, I'm going to suggest two more secure options.
The first option is the easier one. It involves running the screen program or a similar utility on a host that's constantly connected to the net; most people I know use a Unix-type server located at work, at school or at their ISP.
Basically, you start screen, join IRC, and obtain channel operator status in one way or another. When it's time to log off you "detach" the screen, leaving it to "idle" in the background (if you don't explicitly detach the session, it will be automatically terminated when you log off). The next time you log on you restart screen, reconnecting to your detached session, and your IRC session will be there waiting for you just as if you never would have logged off in the first place.
The second option is running one or more IRC robots, usually called bots. This approach is much more versatile, but also a little more complicated. You still need a constantly-connected host to run your bot on, but after installation you don't need to log onto that machine (except for performing maintenance work). The bot sits on your channel 24/7, and when you join the channel and require ops, you just start a private chat with the bot, provide a password, and the bot will op you. You may not even need to request ops from the bot since you can perform channel maintenance, such as setting bans, through the bot instead.
Not all IRC servers allow bots; check the Message Of The Day, displayed automatically when you connect, for details on that server's bot policy and/or contact details (some servers require you to obtain authorization prior to running a bot). You can also view the MOTD for another server on the same network using the MOTD command (e.g. /MOTD irc.domain.com).
In real life bots do crash or become disconnected, so you may want to run several instead of just one. I find three eggdrop bots, connected together to form a botnet, are enough to nicely take care of the channels I help operating.
Everywhere in life, certain people will try to destroy stuff that's valuable to you, steal stuff that would be valuable to them, or wreak havoc just for the hell of it. On IRC, normal users will find themselves attacked over nicknames, channels and opinions.
The easiest way to take over a nickname or a channel is getting rid of their current user(s), and killing you off IRC may be the only way for an opponent to avoid losing the argument you two are having. Therefore many tactics strive to break the connection between your client and the server it's connected to. Certain TCP/IP stacks have been known to suffer from security-related bugs that allow anyone on the Internet to crash your network connection, or even your whole system.
You should make sure that your operating system has any necessary security patches installed, and you may also want to put some kind of firewall between your system and the Internet.
"Security by obscurity" may offer some additional help by hiding you and your channels from attackers; make yourself invisible (user mode +i) and make your channels secret (channel mode +s). You may also want to restrict access to your channels using one or more of the channel modes mentioned above.
Another popular attack tactic involves netsplits.
Let's look at how an an attacker who wants control of your channel might operate:
First he might recon for IRC servers that are on the same network but usually have no local users on your channel, e.g. if you and the other people from your channel were from Finland, the attacker might select a public access server located in the U.S. He might connect to that server right away, or maybe wait until - for some reason - a split occurred between that server and the part of the network you and your friends are connected to. A particularly nasty and impatient person might even attack IRC servers or networking devices such as routers, in order to actively cause a netsplit.
When the attacker would notice a suitable split, he would attempt to join your channel, which by then would be empty on his side of the split. On IRCnet, your channel name wouldn't be available right away, but unless the split was very short, the attacker would still after a while be able to join your channel, which he naturally would receive ops on.
When the split would be over and the two parts of the network would reconnect, both the "legal" ops on your side of the split and the "attacking" op would have operator status on your channel. From your point of view, the server at the split point would give ops to the attacker, while from his viewpoint a server would op you and any other chanops coming from your side of the split. Since a channel operator always can demote other operators on the same channel, our "bad guy" would very quickly "deop" the "good guys". Having done this, he would have full control of the channel and be able to kick, ban, set channel modes etc. - the takeover would be a fact.
Another way to use a split to take over a channel would be to load up the attacker's side of the split with clients with nicknames matching those of the "legal" ops. At reconnection, the resulting nick collisions would kill all the conflicting nicknames off IRC, leaving the channel empty and ready to be taken over.
You might think that all this is an awful lot of trouble to go through, but actually it's not. Even "law-abiding" IRC users use netsplits as an easy fix for channel problems - after all, channels become "opless" from time to time and therefore need to be "taken over" from behind a split. Also, there are IRC "war scripts" around that don't even require the rogue user to understand how they work; a couple of mouse clicks is all it takes to start looking for a suitable split, or load IRC with clonebots that overload the victims with so much junk traffic that they become disconnected.
Fortunately, there are software (e.g. eggdrop bots) available for the good guys as well, and even normal IRC clients often include limited anti-takeover functionality, such as automatic deopping of server ops (when the newly-opped attacker joins your channel from behind a recent netsplit).
Remember, IRC operators or server admins do not fix channel problems. If you're being hit by clonebots or floodbots, which are outlawed on pretty much any IRC server, an operator might get rid of them for you, but if your channel already has been taken over, don't expect the people who run the servers to give it back to you. A better approach is to simply not care - after all, neither nicknames nor channels are owned, nor are either going to be exhausted in the near future.
When someone snatches my nickname, my client simply switches to another one; when the "thief" quits IRC, my clients changes back to my primary nickname. Once in a while someone also manages to take over a channel I run. Big deal - we just use another channel until our bots regain control. The takeover crew can have the channel for all that we care, and when they notice this, they usually lose interest in a matter of hours. From my point of view, temporarily losing a nickname or a channel isn't a big deal; I might not even have the time to notice it...
Often the easiest way of taking over a channel is having
a channel operator give you ops. This may be done by
simply asking; you probably wouldn't believe how many
clue-deficient ops will give in to a little Pleez op
me??!!
pestering. Even reasonably experienced
IRC users often fall for an attacker who changes
his nickname and maybe his user and "real"
names to match those of a "legal" op.
Never op anyone on nickname alone. The only scenarios in which you might use WHOIS information (user name and host name) to identify someone for ops would be if you know that the user in question is the only one who is able to use that host, or if he is on a multi-user system with reliable Ident. Personally, on public IRC networks, I never op anyone myself; the bots are there to take care of that.
Together with Internet mail and Usenet news, IRC is one of the most common environments for spreading Trojan horses (files that appear innocent but are harmful) and other dangerous files.
While connected, you may be offered program files or scripts to run. This can be very dangerous; the file you are offered might contain code designed to attack your computer, e.g. by installing a program that mails sensitive data to the attacker or even allows him to remotely control your computer. Such programs also often automatically and unnnoticedly spread themselves further, for instance by mailing themselves to people in the address book of your mail client.
Don't accept file offers from strangers; never agree to receive a file unless you have identified the sender to be a person you trust. Do not allow your client to automatically accept DCC file offers.
Never run any kind of script or program without knowing for certain what it is, even though you may have received it from a trusted person. If you're unsure about how to proceed with a file you have been sent, contact whomever you turn to for computer support.
Unfortunately, it's realistic to assume that criminals or perverts will be found on IRC as well as in normal life. It's much easier to hide one's true identity on IRC than in real life, and for most practical purposes it's impossible to be sure that a new IRC acquaintance really is e.g. a 12-year-old girl instead of a 50-year-old male. This makes the Internet a dream come true for anyone with twisted or otherwise shady intentions.
The seeming anonymity on IRC also tends to make people candidly talk about subjects they wouldn't dream of discussing e.g. in a bar. If I was in the business of performing industrial espionage one of my favorite tactics would probably be chatting with employees of the target organization on IRC...
Laws apply on the Internet just as in real life, although it may not always be crystal clear which countries' legislation apply. If a crime is committed, it may be possible for the authorities to afterwards trace an user, although you cannot count on it; it would be relatively easy for a determined person to use the Internet without leaving a trace.
Don't give out any personal information about yourself or anyone else, such as about a friend or a member of your family. Don't give out any confidential information about e.g. your employer, either.
If you decide to meet (in real life) with someone you have become acquainted with on IRC, make sure you'll be able to do so in safety. Meet in a public place, maybe together with a real life friend of yours. Make sure you'll be able to get away if you don't feel comfortable.
When you need help with an IRC-related problem, please check out the following sources: