Internet Relay Chat

Concepts

  • Protocol
  • Servers
  • Clients
  • Commands

Protocol

IRC is an Internet Protocol, as specified in https://tools.ietf.org/html/rfc1459

Servers

IRC clients connect to IRC servers in order to chat in IRC channels.

IRC Servers form networks of servers:

Source: https://tools.ietf.org/html/rfc1459#section-1.1

For example, The Freenode IRC network is available through the following domain: irc://chat.freenode.net/

And you can see a list of all the servers associated to freenode's main IRC server, here: https://netsplit.de/servers/?net=freenode

Clients

There's a variety of IRC clients one can use to connect to IRC channels. The most popular is mIRC. In my case, I'm using HexChat on Windows.

Commands

IRC commands can be executed from within any conversation, and they do something that might or might not be outputted for everyone to see.

IRC commands are used to do things like:

  • identifying to a nickserv (/msg NickServ identify <PASSWORD>)
  • joining a channel (/join #channelname)
  • quitting a channel (/quit)

And more1

In practice

Now, since I'm mainly going to use IRC for talking about nerdy things (I'm working on Web-related stuff), then I'm going to connect to Freenode IRC network (that has many IRC servers) that hosts mainly FOSS-related IRC channels (chat rooms).

IRC Login

After having registering myself to the nickserv, I had to validate my email. So I received the following email:

Freenode's Nickserv validation email

Now that you have a user on that IRC network, you can /join a channel.

Here's the command to do so for the #wordpress channel:

/join #wordpress

Simple!

Looking for another channel?

/list

This command will open a window that looks like this (depending on your IRC client):

Channels List

You can then enter a keyword to search through the list. In my case, I'm looking for a GnuPG-related channel.

GPG channel list search

So #gnupg looks like the place to go to!

Security

Now, you need to know that some people are logging conversations of channels they are logged into. And some of those people (often the case for open source-related channels) publish conversations (along with users' IP addresses) on the Web.

Now, you probably don't want your real IP to be listed on the Web, right?

That's when "cloaking" become useful.

You can get a cloak by asking your IRC network's #vHost channel, or on #freenode for example, you just go to the #freenode channel and ask a staff to give you a cloak that matches your current status. In my case, since I did not participate in any open source project, I can ask an unaffiliated cloak.

If you're not identified to the nickserv yet, they'll ask you to do so first hand.

SASL

Also, to make sure you're always signed in with your own nickname on the network you're connecting to, you need to configure your client so that it auto-connects instead of you always typing /msg nickserv identify ... each time.

Credits

Thanks to indomitable on Freenode, who helped me figure out and clarify some of those aspects.