In this series of three articles, of which this one is the first, we are going to discuss what an IRC network is, how it works and the underlying protocol. IRC gives us a lot more choices and is much more complicated than the regular chat applications, as you will see.
I thought of just writing an article about how to create a IRC client, but a little bit of background is necessary, because the protocol has so many commands that will have to be implemented if we are going to create an IRC client with even the minimum requirements. So I will go through the related RFC and work through some of the commands of the IRC protocol. In the second article we will look at how we can implement an IRC client application. In this article we are primarily going to look at the related RFC.
What is an IRC client?
A client is any piece of software that connects to a server. IRC stands for Internet Relay Chat and is a massive network of text-based chat channels (rooms) and users all across the world. Users can set up their own "rooms" or channels in which they can discuss a topic of common interest. Think of IRC as your typical discussion forum where people can talk about different topics in a structured way. The difference is that on an IRC network they do it in real time.
Most people use IRC for simply conversing with and meeting people from around the world. IRC can also be used for work purposes; for example, a conference can be conducted across the Internet by setting up a private chat room/forum. On a more technical level, IRC itself is a teleconferencing system, which (through the use of the client-server model) is well-suited to running on many machines in a distributed fashion. A typical setup involves a single process (the server) forming a central point for clients (or other servers) to connect to, performing the required message delivery/multiplexing and other functions.