IRC Introduction and its main ingredients

Internet Relay Chat (IRC) is an application layer protocol that provides a way of communicating with people from all over the world in the real time.

IRC Network

It consists of different separate networks and their servers which allow users to connect to the IRC and the different clients. The user runs a program (i.e.client) to connect to a server on one of the IRC network. The server copies information and forwards them to the respective destinations as a result relaying of messages happen.

The IRC Protocol is based on the client-server model, and is well suited to running on many machines in a distributed fashion. A typical setup involves a single server forming a central point for clients or other servers to connect to, and perform the required message delivery/multiplexing and other functions.

The overall IRC has mainly the following ingredients:

1. Networks

2. Servers

3. Clients

4. Channels

Figure: IRC Overview

1. Networks or nets

IRC is organized into numerous independent networks, all with different audiences, geographical reach, and management. Besides the major networks, there are also many smaller networks that serve a small geographical region. There can be different kind of networks like

  • Popular Networks
  • General networks
  • Subject networks
  • Local networks

The mostly used networks are Freenode, Dalnet. Aniverse, BRASnet, EFNet, Enter The Game, Galaxynet, GamesNET, IRCNet, PTNet, QuakeNet, and Undernet.

2. Servers:

The server forms the backbone of IRC as it is the only component of the protocol which is able to link all the other components together.

It provides a point to which clients may connect to talk to each other, and a point for other servers to connect to each other. The server is also responsible for providing the basic services defined by the IRC protocol. Servers provide connections between client to client, client to server, and server to server.

Figure: Servers Main Services

In simple words, a server copies the information that someone wants to send and echoes that information to the respective destination. These acts as a vehicles in transferring messages.

Users access IRC networks by connecting a client to a server. There are many client implementations and server implementations like the original IRCD.

An IRCD, stands for Internet Relay Chat Daemon is server software that implements the IRC protocol, enabling people to talk to each other via the Internet.

The server listens to connections from IRC Clients on a set of 6667 or any TCP ports. When the server is part of an IRC network, it also keeps one or more established connections to other servers/daemons.

3. IRC Clients:

IRC uses application program on the computer which can be known as “client” and it connects to an IRC server. IRC clients exist for every major operating system, and many of the more like web-based clients. Depending on the Operating systems, the clients can be classified as:

  1. Windows OS Clients like mIRC, Xchat etc.
  2. Mac OS Clients like Colloquy, Textual etc.
  3. Linux/Unix Clients like Weechat, Hexchat etc.
  4. Other Operating System Clients
  5. Web-based Clients like web-chat, Mibbit etc.

I will be using the webchat.freenode.net and the Hexchat for freenode on Linux OS Ubuntu and their snapshots are below.

Figure: The Webchat.freenode.net Client for freenode
Figure: The Hexchat Client for freenode

4. Channels:

Channels are the virtual rooms or sessions for communication. Channels on a network can be displayed using the IRC command /LIST, which lists all currently available channels that are not secured (have the modes +s) or private (have the mode+p set) on that particular network.

Channel names are started with the single or many ‘#’ symbols.The Channels started with a single ‘#’ sign refers to the official or primary channels and are available in the entire IRC network e.g. #freenode. The channels started with the double or more ‘#’ symbols refers to Topical channels and are considered to be the UN-official channels like ##abc.

Users can join a channel using the JOIN command like /join#channel-name. Messages sent to the joined channels are then broad-casted to all other users using the same channel.

Figure: Entering joining command before joining the #freenode
Figure: After joining command to #freenode

This was an introductory part to the IRC Freenode and I will upload more and stories about it in detail so that we would have clear idea abut freenode and its practical implementations.

Thanks for Reading.