Worf's IRC Tutorial

(Version 1.01)

This text is © 1996, 1997by the author.


IRC, or Internet Relay Chat, is perhaps the one of the most underpublicized Internet "resources" that is availiable. Everywhere you go, you hear of "Go to our home page!" or "FTP the files from xxx!" etc. etc. Well, IRC is probably underpublicized because it is the least glamorous of all the Net applications. It has little graphics-it is primarily a text-based system.

Because it is all text, little bandwidth is required to join IRC. If you're like the 90% of us out there with a SLIP/PPP connection, being on IRC should hardly affect your Web browsing speed. In fact, I myself has managed to connect via PPP over a 2400 link (browsing was painful, yes, but my IRC session was as fast as it would be over a 33.6K link.).

IRC is a VERY addictive activity. I strongly recommend you do not get into IRC unless you have pretty much bored yourself with browsing the Web, USENET (aka news), and FTP. IRC sessions of 5, 8, 12+ hours, while not exactly common, have been known to occur. I myself has been involved in an 8 hour straight IRC session - within the first two weeks that I got started. Once on IRC, there are lots of "hobbyist" groups, whether you're into Star Trek, Star Wars, or whatever. There is usually a channel with people who share the same interests as you.

* My record is now around 12+ hours (straight). With the dominance of unlimited accounts, it is not uncommon to see people who literally stay on IRC for days at a time.

Getting Started

To get involved in IRC requires a few things, the most important being an IRC client. Some clients that I recommend are: mIRC for Windows 3.1/95 (get it at http://www.mirc.co.uk) Ircle for the Macintosh (get it at http://www.xs4all.nl/~ircle) ircII for UNIX (link unavailiable) Next, you'll need an Internet connection... If you're browsing this the way that I think you are, you already have it - I am publishing this copyrighted document on the Web.

Finally, you'll need a server list. Depending on which network you go to (EFNet, DALnet, etc). Here are some servers to try:

With this small list, you can get on one server, and join #new2irc or #ircnewbies etc and obtain more comprehensive IRC server lists.

A Small Introduction to IRC Topology

IRC is based on a CLIENT-SERVER type of connection. The user uses a CLIENT to connect to a SERVER providing IRC services. However, clients are not the only ones that connect to a server. A server may connect to another server, and so on, creating a network. EFNet is one example of a network, and so is DALnet.

The connection diagram of an IRC network is best described as a "tree" network, having "hub" servers and "leaf" servers. Hub servers have at least 2 other servers connected to it: one to other hubs, and another to maybe a hub or leaf server. A "leaf" server is connected to one other server, acting as a hub. A highly simplified diagram is below.

C--------LEAF SERVER---------------HUB---------------LEAF-------------C
          /  |   \                  |                /  \
         C   C    C                HUB---C          C   C
                                   / \
                                 HUB  LEAF--C
                                 / \
                                /  C

LEAF - Leaf servers   HUB - Hub servers    C - Clients

One thing that CAN NOT happen on an IRC network is a "loop." Any error in hooking up hub servers together can result in this loop. The reason behind it is because of the way IRC servers pass messages. A message from a client to another client is passed from server to server until it reaches all the appropriate client. However, there are certain messages that are sent to ALL servers - from perhaps a leaf, where it goes to a hub, where the hub dilligently sends it to each of the servers it's connected to, and so on. It takes a finite time for each message to be sent. If there is a loop, the same message (maybe 1 second later, or more) is sent back to the same server again, which sends it out again...

There is a general policy regarding this: if you run a server, until you know how to connect two servers properly (/connect server1 server2), leave the server as a leaf server.

Let's Get On!

Ok, we have got our client, we know how IRC works (sort of), then lets get connected! The first thing we do after we start up our client, is to configure it. Set the following things (varies with clients): Nickname, Real Name [as you will see later, this field is filled with all sorts of messages], email address. Nickname is what other people will see (this is limited normally to 9 characters), like the following:

     JOINS: Rytak (~Rytak@Rytak.com)

Real name is what people will see on a /whois, it is usually filled with things like people's names, an expansion of their nickname, etc. Also, the email address field, or sometimes called the User ID or uid, the portion before the @ is significant. Most people put something there (within 10 characters), but note that there *may* be policies against using fake email addresses.

Now that we've set up our client, let's connect. We do this by the following command:

      /connect server [port]       E.g.: /server irc.portal.com 6665

/CONNECT is the connection command, server is the server to connect to, and optionally, port is which port to connect to (all servers on EFNet use 6667, and a few other support other ports, usually in the 6665-6668 region for faster access. DALnet, OTOH [on the other hand], normally uses port 7000).

During the connection progress, you may see things like "Connecting to server..." "Connected, sending IDENTD info" etc. These just state the progress of the connection (which can take several seconds on a badly overloaded server). After connecting, and after the client has sent login info, you will automatically be sent the MOTD [message of the day] of that server. Typically, the MOTD states some server rules, who are the "IRC gods" aka IRCops [IRC operators] of that server, etc. Also, you would be sent a brief summary of the state of IRC - how many people are online, how many IRCops their are on the network, etc.

After connecting, the first thing a person would do is join a channel. The command for that is:

     /join channel [key]             E.g. /join #new2irc 

/JOIN is the join a channel command, and channel has a very special format. It's #channel_name or &channel_name. 99.99% of the channels begin with the # in front of it. The # or & prefix is what identifies to the server that it is a channel (IRC makes little, if any, distinctions about nicks or channels). The optional KEY is sometimes required if someone passworded a channel. If you did type /join and you got a message similar to the following, you know you need a key: "Unable to join channel (incorrect key)"

Let's Chat!

Now we're online and ready to go! Proper netiquette states that you should keep quiet until you understand the current thread of discussion, but it never hurts to say "Hi" in a channel, especially one of the #new2irc type channels. To say something, just type away. As long as what you say doesn't start with a "/" (the / is a command character that separates the commands from the speech).

Please note that in some channels, 2 or even 3 different threads of discussion may be taking place, so if you're replying to someone's question, it helps to abbreviate their nick and place your response. For example:

   [Worf]: Hi
   [Doc] : Worf, what's up?

That was preconcieved situation, partly because I'm known in all the channels I'm in, but yes, that's a good way to answer someone's question.

Sometimes, you'll see things like:

    * Worf orders a large glass of prune juice               (OR)
   ACTION: Worf orders a large glass of prune juice

This was created using a command called /me. The syntax is:


Note two things: 1) "/me" will be replaced with your nick and 2) If you want to say something like "I reach in my pocket", the effects of a /me will put it in third person, so use the appropriate pronoun to refer to yourself. An example of 2: "Worf reaches in my pocket to get some money." It looked right when it was typed: /me reaches in my pocket to get some money, but it's confusing (most people will understand automatically, but it is awkward, and you never know who's on IRC).

Occaisionally, you might get what's called a private message from someone. In Ircle, it's highlighted with asterisks like *Worf*: how are ya?, while in the default config of mIRC it pops up a window that has the person's nick for the title. To do these, do the following:

     /msg nick message here             (OR)
     /privmsg nick message here

Nick is the nickname of the person you want to send the message to, and the message after it gets sent as a whole.

It was bound to happen: you made a typo. Don't worry, most people can guess the meaning of it. Most people simply correct the error by typing out the word/phrase again with "even" appended at the end. Others just correct the error by retyping it out (or pressing up arrow to get the previous text/commands) and correcting the error.

More Commands

Here are some more commands that are in common use, but not so often.





/NICK New_Nick /NICK AmbWorf Allows you to change your nick
/TOPIC channel New_Topic /TOPIC #StarTrek+ ST+ Changes the "topic" header of a channel. Changing topics doesn't really do much for anyone.
/WHO mask /WHO *.wco.com Lists most of the people from the specified host mask. Lists last channel joined, nick, "real name" and user@host
/LIST [optional list parameters] /LIST Returns the list of the current current channels on the network. *NOTE* This generates a lot of data on most networks. In fact, most of the time, you will get disconnected for generating too much traffic, aka 'flooding.'
/WHOIS nick /WHOIS Worf Returns some info about a user, like their "Real Name", Nick, Quote, which servers they're on, and sometimes, which channel they're on.
/PART channel /PART #new2irc Leaves a channel

These commands, are the most commonly used commands, and I suggest you learn these by heart.

Leaving IRC

While it is normally very easy to leave IRC, there is a way that most people would appreciate in leaving IRC. Because IRC is a network, and a fairly large network, there are various quit messages. You may get messages like:

    Quits: Rytak (Connection reset by peer)
    Quits: Rytak (irc.gate.net *.stealth.net)
    Quits: Rytak (Ping timeout)

These are error messages, produced by the server. Normally, if a person just leaves suddenly, the other members will assume that it was due to a fault in the connection, and expect a return within a few minutes.

The way that you'll see most people leaving is a message like, "Well, I gotta go..." and such, then you'll see a quit message. Leaving suddenly also may make life more difficult for other members, if say you were the only operator on the channel.

After deciding to quit IRC, the command to leave is:

    /QUIT                 E.g. /QUIT Bye!

Depending on the client, issuing a /quit may also quit the client.

The Most Confusing Command: /MODE

The /MODE command is a very confusing command, learning the various modes, mode parameters, etc. The command is:

    /MODE target mode_changes mode_parameters
                     E.g. /MODE #new2irc +tn+o Worf

The target is either a nick (mostly yours), or a channel. The mode changes are specified with a + to enable, a - to disable. Some mode changes require parameters to be specified, which comes after the mode changes. If you are familiar with UNIX, the parameters can combined, in the way that to enable a group, you can put the group together with one + prefixing it.

Channel Modes - affecting users o [user]- gives/takes OPs from a user (max 4 people per /mode) v [user] - gives/takes VOICE from a user (applicable to a +m channel only) b [mask] - sets/removes a ban to prevent a user matching the mask from joining

Some User Modes


A /MODE can only affect a channel or a user per mode command. Some /MODEs are really complex, like the following:

Rarely would the /MODE be so long, as it is normally broken up into separate /MODES. Note: a channel mode change and a personal (nick) mode change CANNOT happen in one /MODE (Opping is a channel mode change).

If the mode change requires a user as a parameter, the parameter should be a nick. If the mode requires a mask, the mask format (on IRC) is: nick!userid@domain. Wildcards may be placed anywhere in the mask, like *!*@*.domain.com. Most of the time now, you cannot ban using the "all-out" ban mask *!*@*. You can try /MODE #channel +b *!*@* but nothing will happen.

This mode command is very important, but one of the most confusing. Also another thing - to affect any channel modes, you have to be a Channel Operator (aka ChanOP or simply OP). However, you may /mode yourself, to, for example, make yourself "invisible."

Channel Operators

Channel Operators, the second level in a three level network (The first level is Normal User, which everyone is until made either a ChanOP or IRCop). Channel Operators, ChanOP, or simply OP for short, has access to even more commands, such as the /MODE #Channel, /KICK, and /WALL (op). Every channel should have at least one OP, but on occaisions, there will be none. These occasions happen during NetSplits, or when the OPs in the channel /QUIT or /LEAVE without giving anyone else OP status.

There is nothing totally special about being an OP, all channels start out with one. When you /JOIN a channel that doesn't exist, the server automatically gives you OP status (for being the only one in the channel). This facility is very useful, for when the only OPs in the channel leaves, the others should try to regain OP status through the server.

If you happen to be a regular on a channel, regular being perhaps seen most of the time, and feel to them are trustworthy, they may give you OP status. This isn't something that one should parade around highly, because most likely everybody else would be so irritated that they don't op you anymore. Also, don't go around kicking people and banning them for fun - it disturbs everyone, and is a sure way of being kicked banned too. The occaisional kickban for a person who really is disturbing everyone (e.g. people who say everything with one letter on a line... ), then no one minds.

IRC Operators ("IRCops")

IRC Operators, there's at least one to every server, are the BIG people. They have the power to control everyone, whether it be on their server or on another one. They have two types of commands, global and local. Global commands work on any server, while local commands affect their own server only.

Some global commands are /CONNECT, /KILL, etc. /CONNECT will connect two servers together, or locally, connect that server to another server. /KILL is a VERY powerful tool. With just about 15 keystrokes, an IRCop can *close* your connection to the server. Do not fret about this command, for it happens rarely, and everyone on your channel, as well as you will see something like:

    Worf (Worf@somedomain.com) Quit (Killed (ircd.texas.net (Worf(
<- irc.blackened.com[ircop@someaddress.com])))

The analysis goes like this: The ircop at irc.blackened.com, who has an address of ircop@someaddress.com, sent the /KILL command. This command traveled from irc.blackened.com to ircd.texas.net, where the user was on. Since the server has closed the connection, it has to notify the other servers of such, and the way it does this is through a QUIT message (it's the same as doing a /QUIT from the client), except the message portion is replaced with the Killed message.

A local command affects only the server the ircop is on, and most likely isn't affected until some user abuses it. What may be done is a K-Line, in which the ircop has banned the user from using the server. Unlike the channel ban, the K-Line is the standard user@host mask. Usually there's a reason attached to the K-Line. Also, the K-Line can affect an entire domain, thereby affecting all the people who use that domain. There is also the O-Line, which is a list of user@hosts who may actually become IRCops on that server.

Glossary of IRC terms




ClientA software program that connects to a server, and acts as an interface between the user and server.CTCPSet of commands, sent from one client to another (hence "Client-To-Client-Protocol") to return some information about that client.DCCDirect Client Connection, involves the client connecting to another client to send/recieve files or to have a somewhat more secure chat. DCC is immune to all IRC failures to some extent (the DCC request is sent via /msg, so initiation is delayed by lag).FloodHaving too much data being sent from client to server or vice versa. Excess flood results in the server closing the connection and QUITS Worf (Excess Flood) appears on all channels. A /LIST can many times flood a user from the sheer amount of data sentInvisiblePrevents you from being shown on a /who, and sometimes a /whoisLAGThe time delay from sending a message to having another person see it. Lag times of 2 seconds are common, but lag times of more than 60 have occurred. Lag is extremely annoying, as unless you actually PING someone, it appears as though everything is just fine...NetSplitWhen the network gets too overloaded and the servers start closing connections with each other. Results in a QUIT (server1 server2) message. Also happens if the Internet is under heavy use, and IRC packets do not get to the other serverNickNickname, or what you call yourselfPINGThis is a direct reference to iCMP PING, which simply sends a message to a machine timestamped, and waits for an echo back. On IRC, the PING sends a message to the other user, whose client replies with a PONG. The time difference between the sending of the PING and reciept of the PONG is the delay it takes for a message to travel from that client to the other.PortA port is something that can be best described as in this analogy. Considering the machine to be a mailbox, with all requests etc going through the mailbox. The machine goes through the mail in the mailbox, sorting it, by whom is supposed to recieve it. The people who are recieving it can be considered the ports of the machine.ServerA software program intentionally made to be non-interactive with the local console, only interacting with clients (which may run on the local console)TLAThree-Letter-Acronyms, of which there are many on the Internet, such as BRB, BBL, BTW, WTF...

An Introduction to CTCP and DCC

CTCP and DCC are not in the original IRC specification (RFC 1459), for a good reason. CTCP and DCC are actually "features" that affect client to client operations, and the client program can decide whether or not to handle such requests. The only way the server gets involved is passing the messages between clients (via the standard /MSG or /PRIVMSG).

CTCP is a way of directly contacting the client, and requesting information. There are a few commands that all CTCP-Enabled clients should accept:

PING - Returns the delay between your client and the other person's CLIENTINFO - Returns a list of commands the client supports (through scripts, the actual list can be quite longer. This just returns what the client supports natively. VERSION - Returns the version info string about a client.

In addition, there are more, but these end up to be client-specific, like on the Macintosh, FACE [GET | PUT | SET] (Sends a little 32x32 picture of what you make youself to look like, and can be set to show an "angry" you etc). Also, most clients support SOUND, which plays a local sound file (if you don't have the sound, you don't hear it).

The syntax of a CTCP command, if your client supports it, is:

    /CTCP nick ctcp_command ctcp_command_parameters

Some commands require a parameter, like the FACE example above. Also, some clients accept a CTCP CLIENTINFO parameter, which can be nothing (returning the list as normal) or a CTCP command, which *should* return a brief description of the command.

DCC, is also sometimes a part of CTCP command. It's started like CTCP, except the client then opens a port to send the data down to the other end. The syntax is:

    /CTCP nick DCC (SEND | CHAT) (Filename if DCC SEND)
    On mIRC, it says to use /DCC, which goes:
       /DCC (SEND | CHAT) nick [Filename.  If none given, goes to a file 
            open dialog]

DCC send is a way to send files from a client to another. DCC chat opens a window that's very similar to normal IRC windows. On the other end, the other user has an option to GET the file, CLOSE the dcc, or OPEN the chat (DCCs can be refused).

DCC, because it opens a port, is immune to netsplits, lag etc after the DCC is initiated. The effect is quite weird, having a chat with someone while trying to get back on the IRC network, or chatting with someone on the other side of the split. Even wierder is when you quit IRC, and still have a files being transferred to DCC.

Final closing note: Some common IRC Acronyms.


This text is © 1996 by the author of these web pages, located at http://worf.home.ml.org. All trademarks/registered trademarks/copyrights used *ARE* the property of their owners, and NO infringement was intended by the author.