What is IRC?● Internet Relay Chat● Multi-user chat system● Users participate in group chat via "channels" or communicate privately● Constantly evolving● Its simplicity makes it powerful● There are many, many chat networks
IRC History● Written by Jarkko Oikarinen, a BBS admin at University of Oulu in Finland● First released August 1988● Needed an improvement for existing talk feature● Modeled after Bitnet Relay for BITNET● Many specifications: RFC 1459, RFC 2810- 13, but none are official
Tech Details● Text-based, client-server protocol● Uses TCP, typically on port 6660-6669 and 7000 (officially assigned port 194)● Each message and reply is a single line● Each chat network has at least 1 server, but can have many (in a tree structure)
Network● Consists of at least one server, but can consist of many servers in a spanning tree.● What your client connects to so that you can chat with others.● Each server in the tree is running IRC daemon software.● In a multi-server network, two users dont have to be on the same server to chat with one another.
Client● Anything that connects to an IRC network that isnt a server.● Includes your chat program and bots as well.● Each client must be uniquely identified.● Messages to clients are transmitted through the server (no need for direct connection).
Channel● A "room" that users can join and chat as a group.● Messages sent to a channel are seen by all who have currently joined that channel.● Channel names are unique and usually prefixed with hash character (#).● Channels are created when the first user joins the channel and destroyed when the last user leaves.
Operator● A client with special privileges on a network.● Help maintain the network by adding and removing servers; adding, removing and banning (if necessary) other clients, etc.
Channel Operator● A client with special privileges on a channel.● Help maintain the channel by removing disruptive clients, setting the topic and changing channel settings (like keywords).● If you are the first to join a channel, you are often made its operator automatically.
Commands● Commands are how clients interact with servers.● Prefixed with a forward-slash (/).● They often take one or more arguments.● On most networks you can issue the help command for more info about any command ○ /help ○ /help <command>● Can usually run commands for one channel while in another by specifying other channel.
Lets Connect!Freenode: chat.freenode.net SSL enabled, port 6697, 7000 or 7070List of location specific servers: http://freenode.net/irc_servers.shtml
Basic Commands● Get list of channels ○ /list ○ /list -min 30 ○ note: not recommended for large networks● List who is in a channel ○ /who ○ /who #channel● Get info about a user ○ /whois nick● Change your nickname ○ /nick newnick
Basic Commands● Join a channel ○ /join #channel ○ /join #channel keyword● Leave (part) a channel ○ /part ○ /part #channel● Invite someone to a channel: ○ /invite nick #channel● Set away status (message optional) ○ /away message● Set returned status ○ /back
Basic Commands● Send a private message ○ /msg nick message● Open privmsg window to a user ○ /query nick● Actions ○ /me description of action ○ produces "christiek does something" ○ always in the third person● Ignore a user ○ /ignore hostmask types options ○ some networks use nick, freenode uses hostmask
Register with NickServ● NickServ is a service that helps manage clients on IRC networks.● Registering with NickServ preserves your nickname and is often required to do things like join channels with keywords.● To register, enter this once: ○ /msg NickServ REGISTER password email@example.com● On subsequent connects, enter: ○ /msg NickServ IDENTIFY password● Record your password in a safe place!
Register with ChanServ● Like NickServ, ChanServ is a service that helps maintain channels on IRC networks.● Registering your channels with ChanServ links you with the channel and provides a mechanism for recovering the channel should it be taken.● Usage: ○ /msg ChanServ register <channelname> <password> description_of_channel● Record that password in a safe place!
Items not covered...● Channel management● Bouncers● Bots● DCC and filesharing● Operating an IRC network
Thank you! Questions? Get in touch! Christie Koehler Twitter: christiekoehler Freenode: christiek firstname.lastname@example.org