Internet Relay Chat

From IRC Wiki
Revision as of 16:18, 8 July 2010 by MrJones (talk | contribs) (moved IRC to Internet Relay Chat: The abbreviation "IRC" can still get redirected to the full, correct name.)
Jump to navigation Jump to search

<Rating comment=false> Rate This!

1 (Hate it)
2 (Dislike it)
3 (It's ok)
4 (Like it)
5 (Love it)

</Rating> Internet Relay Chat (common abbreviation: IRC) is a chat protocol that implements text-based[1] realtime chat for users using IRC clients to connect to central IRC servers[2] that form an IRC network[3]. It has been mainly designed for multi-user conferences[1] but may also be used to send private messages to another user[4] that get routed through the network[5]. It is a plain text protocol and has first been used by Jarkko "WiZ" Oikarinen in 1988 who wrote the first client and server software ("IRC daemon") named IRCd for it.[6]

Protocol

The IRC protocol is a plain text protocol mostly used on TCP/IP[7] port 6667[8] to which the clients connect, but also other ports are in use. Due to it's plain text nature, it can also easily be used "manually" through a telnet tool as the most simple client,[9] but a specifically crafted IRC client makes usage, especially when being on many channels or even networks at once, much more comfortable.

The main RFC 1459 which describes the protocol has been released in May 1993,[9] RFC 2810, RFC 2811, RFC 2812 and RFC 2813, although some commands and changes introduced with the RFCs following the original RFC 1459 haven't been adopted by all IRC server software developers.[Source?]

Ways to communicate

Messages from one user to another user get simply routed to the target user's server that will sent them to the user itself.

Communication from one user to many users is realized through discussion places called "channels". Those can be global and messages will be routed to all servers in a network where users are in the channel of the talking user so everyone will receive the message.[10]

Networks

See also the main article → IRC network

An IRC network is a cloud of servers (more specifically, a tree) which are linked together and make up a uniform chat place.

For the user, it's not much different than a single server except that he or she may choose to connect to any of the servers in the network instead of just a single server. Channels are commonly opened globally on all servers so that it doesn't make a difference on which server a single person resides.

Only in case of a netsplit, multiple servers make a clearly visible difference to a single machine.

History

The first IRC server software that allowed chatters to connect to it was the original IRCd developed by Jarkko Oikarinen, the inventor of the IRC protocol. Inspired by several Bulletin Board System chat programs, he wanted to do some more powerful realtime chat on his own and consequently invented the now well-known chat protocol.[6] The first bigger IRC servers were hosted by Tampere University of Technology and Helsinki University of Technology, later other universities joined.[11]

In 1989, there were already 40 servers world-wide run by different people.[6] The original EFnet is still in place today, Undernet and Dalnet were founded when EFnet had more strict linking conditions so interested people got more and more turned away.[12] Over the dispute of time based channel status and nickname protection or the delay technique, favoured by the original IRCd developers, ircu, one of the first forks, split off from the original IRCd server project.

Since the documentation through the RFCs, of which only the original RFC 1459 is strictly followed by most server software developers, the protocol can easily be implemented by anyone to create new IRC Server software or IRC Clients. Today, there are hundreds of different server softwares, thousands of networks and which consist of as little as one to as many as 20 servers and allow chatters to connect and talk about various aspects of life.

Technical details

Encryption

Apart from plain TCP connections, IRC also supports TLS for secure connections. They are only effective in channels though when everyone in the channel uses them, as the messages are also sent to those channel members not having a secure connection and enable a malicious listeners to get them as plain text by spying on their plain text connections to the server when they are just receiving it.

Assigned Ports

Internet Assigned Numbers Authority has assigned port 194 for IRC, but it is basically not in use - even RFC 1459 lists port 6667 as an example.[8] Technically, any ports may be used but port 6667 is the most common - also the search engine SearchIRC won't index any networks not allowing this port for clients.[13]

Linking structure

See also the main article → Server linking

Up to today, IRC servers are mostly linked in trees, that means in a non-cyclic manner. This causes a weak point in IRC, because a single server-to-server connection dropping out can separate a huge branch of servers in a network which aren't reachable anymore including the users on them. They are vulnerable to Netsplits, where two separate copies of the global network data exist in two separate subnets and users might do Channel Takeover attempts. There are techniques to fight this, which still doesn't remove the disruption caused by netsplits which result in high-traffic quit and join events when the net splits up and merges again.

References


  • IRC Servers are also capable of connecting to IRC Services,

What are IRC Services?

  • IRC Services are what is used to control IRC Servers.
  • IRC Services offer many different functions depending on the service package but most offer similar functions, such as:
  • There are many more service functions and they can be found here
  • Services link to servers the same way as servers link to one another
  • A few examples of the different type of services are:
  • There are also a different class of services that are known as Extended Services,

What are Extended Services?

  • Extended Services provide extra features and protection to IRC Servers depending on what service package is used.
  • Certain services can protect Servers by scanning for proxys and preventing flood attacks on the Server.
  • Services that provide protection are:
  • Services that provide features like games, channel monitoring and channel logging, along with channel statistic generation.
  • Services that provide extra features are:
  • A lot of these features are usable via the IRC Channel

What are IRC Channels?

  • IRC Channels are were the magic happens, this is the main place that IRC users come to chat
  • IRC Channels can be moderated too depending on the IRCd, this means that abusive or aggressive users can be banned and kicked out of channels to restore enjoyment for users.

What is an IRC Client?

  • An IRC Client is whats used to connect to the IRC Server, there are three main types of IRC Client,
    • Client
    • Mobile Client
    • Web Client
  • Each client has different features that make them all truly unique,
  • The most common web client today is Mibbit which also included twitter usability to ensure users make the most of their online time.
  • an example of a mobile client is jmIrc this is a client that can be used from a hand-held mobile phone.
  • The most common client is the stand-alone client, these are truly unique because some have their own scripting languages which can enhance the usability and functions of the client.
  • A few IRC Clients are:

IRC Info Sites

Here are a few sites were you can find more information about IRC:

Other IRC related sites are: