Difference between revisions of "Internet Relay Chat"

From IRC Wiki
Jump to navigation Jump to search
Line 8: Line 8:
</Rating>
</Rating>


==What is IRC?==
[[Category:High-importance Articles]]
*Internet Relay Chat (Commonly known as IRC) is a real-time instant messaging tool that allows group messaging via what is known as a channel, or one-to-one private messaging were one user can contact another use privately.
'''Internet Relay Chat''' (common abbreviation: ''IRC'') is a chat protocol that implements text-based<ref name="rfc 2810 introduction">[http://tools.ietf.org/html/rfc2810#section-1 RFC 2810: Section 1: Introduction]</ref> realtime chat for users using [[IRC client]]s to connect to central [[IRC server]]s<ref name="role of servers">[http://tools.ietf.org/html/rfc1459#section-1.1 RFC 1459: Section 1.1: Servers]</ref> that form an [[IRC network]]<ref name="network architecture">[http://tools.ietf.org/html/rfc2810#section-3 RFC 1459: Section 3: Architecture]</ref>. It has been mainly designed for multi-user conferences<ref name="rfc 2810 introduction"/> but may also be used to send private messages to another user<ref>[http://tools.ietf.org/html/rfc2810#section-5.1 RFC 2810: Section 5.1: One-To-One Communication]</ref> that get routed through the network<ref>[http://tools.ietf.org/html/rfc2810#section-4.2 RFC 2810: Section 4.2: Message Relaying]</ref>. 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.<ref name="history1">[http://daniel.haxx.se/irchistory.html History of IRC]</ref>


==Who thought of/created IRC?==
== Protocol ==
* Jarkko Oikarinen of Finland created IRC in August 1988.
The IRC protocol is a plain text protocol mostly used on TCP/IP<ref>[http://tools.ietf.org/html/rfc1459#page-4 RFC 1459: Page 4]</ref>  port 6667<ref name="port 6667"/> 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,<ref name="rfc main site"/> but a specifically crafted IRC client makes usage, especially when being on many channels or even networks at once, much more comfortable.
* Oikarinen was inspired by a chat service known as Bitnet, Bitnet had some basic function similar to todays IRC such as commands being executed by the / and the ability to send messages to a user.


==What can IRC do?==
The main RFC 1459 which describes the protocol has been released in May 1993,<ref name="rfc main site">[http://tools.ietf.org/html/rfc1459 RFC 1459]</ref> 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 daemon|IRC server software]] developers.{{Source}}
* IRC gives the user the ability to converse with other IRC users in what is known as a channel, or in a private message.


==How does IRC work?==
=== Ways to communicate ===
* IRC works by somebody running software known as an IRCd, this is what is known as the IRC Server,
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.<ref>[http://tools.ietf.org/html/rfc2810#section-5.2.1 RFC 2810: Section 5.2.1: To A Channel]</ref>
 
=== Networks ===
{{Main article|IRC network}}
An [[IRC network]] is a cloud of servers (more specifically, a ''[[Internet Relay Chat#Linking structure|tree]]'') which are [[Server linking|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 daemon|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.<ref name="history1">[http://daniel.haxx.se/irchistory.html History of IRC]</ref> The first bigger IRC servers were hosted by Tampere University of Technology and Helsinki University of Technology, later other universities joined.<ref>[http://www.livinginternet.com/r/ri_irc.htm Internet Relay Chat (IRC) History - How invented, Jarkko Oikarinen]</ref>
 
In 1989, there were already 40 servers world-wide run by different people.<ref name="history1">[http://daniel.haxx.se/irchistory.html History of IRC]</ref> 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.<ref>[http://www.livinginternet.com/r/ri_net.htm IRC History -- Networks, First EFnet, Internet Relay Chat]</ref> 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 Client]]s. 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.<ref name="port 6667">[http://tools.ietf.org/html/rfc1459#page-30 RFC 1459: Page 30]</ref> 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.<ref>[http://searchirc.com/help.php?id=146 Search IRC, the most advanced IRC search engine.]</ref>
 
=== Linking structure ===
{{Main article|Server linking}}
Up to today, IRC servers are mostly [[Server linking#Tree linking|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 [[Netsplit]]s, where two separate copies of the global network data exist in two separate subnets and users might do [[Netsplit#Channel takeover attempts|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 ==
{{Reflist}}


==How do I use IRC?==
* To use IRC you need an IRC Client
* You then connect to the IRC Server and join IRC Channels


==What are IRC Servers?==
* IRC Servers are what the user connects to via an IRC Client.
* There are many different type of IRC servers but they all offer the same basic functionality.
* IRC Servers are capable of linking to other IRC Servers to form a larger IRC Network
* One of example of an IRC Server is [http://www.quakenet.org QuakeNet]
* A few examples of the IRC Server (IRCd) software are:
** [[InspIRCd]]
** [[UnrealIRCd]]


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

Revision as of 16:17, 8 July 2010

<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: