Back again.
Basicly, all you need to make a basic IRC client is the ability to control sockets and the ability to parse text.
Specifically, text 'tokenisation' is useful as all IRC communication consists of a command portion and a text portion, which are seperated by a colon.
eg of sending something to a channel:
Code:
PRIVMSG #forums :this text gets sent to the channel
eg of recieving something from a channel:
IRC issues control codes in some statements to enable clients to filter (and set and respond to) important information, states, and variables. For example, this the notification you get for the topic of #planetarion when you join:
Code:
:London.UK.Eu.Netgamers.org 332 megla #planetarion :PA Status: 'Westerly, Moderate to Good, rising slowly' || CH Log on the portal || Congrats to RIT for winning PA @ i15 || http://toolkit.planetarion.com [NEW: Battlecalc]
Here you can see the "channel topic is <blah>" control code is 332.
All of this info is available in the RFCs which NB3 nicely linked you to.
For display purposes, all the info is there in it's raw form which is why you can use IRC in telnet if you're insane enough (that's how I just got those raw outputs) but being in more than one channel at once quickly gets impossible to follow, so it's up to you to parse all the incomming statements and redirect them to different windows or however you plan to do it.
Parsing the text correctly is by far the hardest bit - the networking involved is about as simple as it gets.