diff options
author | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
commit | 4bfd864f10b68b71482b35c818559068ef8d5797 (patch) | |
tree | e3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc2810.txt | |
parent | ea76e11061bda059ae9f9ad130a9895cc85607db (diff) |
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc2810.txt')
-rw-r--r-- | doc/rfc/rfc2810.txt | 563 |
1 files changed, 563 insertions, 0 deletions
diff --git a/doc/rfc/rfc2810.txt b/doc/rfc/rfc2810.txt new file mode 100644 index 0000000..e628a83 --- /dev/null +++ b/doc/rfc/rfc2810.txt @@ -0,0 +1,563 @@ + + + + + + +Network Working Group C. Kalt +Request for Comments: 2810 April 2000 +Updates: 1459 +Category: Informational + + + Internet Relay Chat: Architecture + +Status of this Memo + + This memo provides information for the Internet community. It does + not specify an Internet standard of any kind. Distribution of this + memo is unlimited. + +Copyright Notice + + Copyright (C) The Internet Society (2000). All Rights Reserved. + +Abstract + + The IRC (Internet Relay Chat) protocol is for use with text based + conferencing. It has been developed since 1989 when it was originally + implemented as a mean for users on a BBS to chat amongst themselves. + + First formally documented in May 1993 by RFC 1459 [IRC], the protocol + has kept evolving. This document is an update describing the + architecture of the current IRC protocol and the role of its + different components. Other documents describe in detail the + protocol used between the various components defined here. + +Table of Contents + + 1. Introduction ............................................... 2 + 2. Components ................................................. 2 + 2.1 Servers ................................................ 2 + 2.2 Clients ................................................ 3 + 2.2.1 User Clients ...................................... 3 + 2.2.2 Service Clients ................................... 3 + 3. Architecture ............................................... 3 + 4. IRC Protocol Services ...................................... 4 + 4.1 Client Locator ......................................... 4 + 4.2 Message Relaying ....................................... 4 + 4.3 Channel Hosting And Management ......................... 4 + 5. IRC Concepts ............................................... 4 + 5.1 One-To-One Communication ............................... 5 + 5.2 One-To-Many ............................................ 5 + 5.2.1 To A Channel ...................................... 5 + 5.2.2 To A Host/Server Mask ............................. 6 + + + +Kalt Informational [Page 1] + +RFC 2810 Internet Relay Chat: Architecture April 2000 + + + 5.2.3 To A List ......................................... 6 + 5.3 One-To-All ............................................. 6 + 5.3.1 Client-to-Client .................................. 6 + 5.3.2 Client-to-Server .................................. 7 + 5.3.3 Server-to-Server .................................. 7 + 6. Current Problems ........................................... 7 + 6.1 Scalability ............................................ 7 + 6.2 Reliability ............................................ 7 + 6.3 Network Congestion ..................................... 7 + 6.4 Privacy ................................................ 8 + 7. Security Considerations .................................... 8 + 8. Current Support And Availability ........................... 8 + 9. Acknowledgements ........................................... 8 + 10. References ................................................ 8 + 11. Author's Address .......................................... 9 + 12. Full Copyright Statement .................................. 10 + +1. Introduction + + The IRC (Internet Relay Chat) protocol has been designed over a + number of years for use with text based conferencing. This document + describes its current architecture. + + 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 process (the server) forming a + central point for clients (or other servers) to connect to, + performing the required message delivery/multiplexing and other + functions. + + This distributed model, which requires each server to have a copy + of the global state information, is still the most flagrant problem + of the protocol as it is a serious handicap, which limits the maximum + size a network can reach. If the existing networks have been able to + keep growing at an incredible pace, we must thank hardware + manufacturers for giving us ever more powerful systems. + +2. Components + + The following paragraphs define the basic components of the IRC + protocol. + +2.1 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 + + + + +Kalt Informational [Page 2] + +RFC 2810 Internet Relay Chat: Architecture April 2000 + + + each other [IRC-CLIENT], and a point for other servers to connect to + [IRC-SERVER]. The server is also responsible for providing the basic + services defined by the IRC protocol. + +2.2 Clients + + A client is anything connecting to a server that is not another + server. There are two types of clients which both serve a different + purpose. + +2.2.1 User Clients + + User clients are generally programs providing a text based + interface that is used to communicate interactively via IRC. This + particular type of clients is often referred as "users". + +2.2.2 Service Clients + + Unlike users, service clients are not intended to be used manually + nor for talking. They have a more limited access to the chat + functions of the protocol, while optionally having access to more + private data from the servers. + + Services are typically automatons used to provide some kind of + service (not necessarily related to IRC itself) to users. An example + is a service collecting statistics about the origin of users + connected on the IRC network. + +3. Architecture + + An IRC network is defined by a group of servers connected to each + other. A single server forms the simplest IRC network. + + The only network configuration allowed for IRC servers is that of + a spanning tree where each server acts as a central node for the rest + of the network it sees. + + 1--\ + A D---4 + 2--/ \ / + B----C + / \ + 3 E + + Servers: A, B, C, D, E Clients: 1, 2, 3, 4 + + [ Fig. 1. Sample small IRC network ] + + + + +Kalt Informational [Page 3] + +RFC 2810 Internet Relay Chat: Architecture April 2000 + + + The IRC protocol provides no mean for two clients to directly + communicate. All communication between clients is relayed by the + server(s). + +4. IRC Protocol Services + + This section describes the services offered by the IRC protocol. The + combination of these services allow real-time conferencing. + +4.1 Client Locator + + To be able to exchange messages, two clients must be able to locate + each other. + + Upon connecting to a server, a client registers using a label which + is then used by other servers and clients to know where the client is + located. Servers are responsible for keeping track of all the labels + being used. + +4.2 Message Relaying + + The IRC protocol provides no mean for two clients to directly + communicate. All communication between clients is relayed by the + server(s). + +4.3 Channel Hosting And Management + + A channel is a named group of one or more users which will all + receive messages addressed to that channel. A channel is + characterized by its name and current members, it also has a set of + properties which can be manipulated by (some of) its members. + + Channels provide a mean for a message to be sent to several clients. + Servers host channels, providing the necessary message multiplexing. + Servers are also responsible for managing channels by keeping track + of the channel members. The exact role of servers is defined in + "Internet Relay Chat: Channel Management" [IRC-CHAN]. + +5. IRC Concepts + + This section is devoted to describing the actual concepts behind the + organization of the IRC protocol and how different classes of + messages are delivered. + + + + + + + + +Kalt Informational [Page 4] + +RFC 2810 Internet Relay Chat: Architecture April 2000 + + +5.1 One-To-One Communication + + Communication on a one-to-one basis is usually performed by clients, + since most server-server traffic is not a result of servers talking + only to each other. To provide a means for clients to talk to each + other, it is REQUIRED that all servers be able to send a message in + exactly one direction along the spanning tree in order to reach any + client. Thus the path of a message being delivered is the shortest + path between any two points on the spanning tree. + + The following examples all refer to Figure 1 above. + + Example 1: A message between clients 1 and 2 is only seen by server + A, which sends it straight to client 2. + + Example 2: A message between clients 1 and 3 is seen by servers A & + B, and client 3. No other clients or servers are allowed see the + message. + + Example 3: A message between clients 2 and 4 is seen by servers A, B, + C & D and client 4 only. + +5.2 One-To-Many + + The main goal of IRC is to provide a forum which allows easy and + efficient conferencing (one to many conversations). IRC offers + several means to achieve this, each serving its own purpose. + +5.2.1 To A Channel + + In IRC the channel has a role equivalent to that of the multicast + group; their existence is dynamic and the actual conversation carried + out on a channel MUST only be sent to servers which are supporting + users on a given channel. Moreover, the message SHALL only be sent + once to every local link as each server is responsible to fan the + original message to ensure that it will reach all the recipients. + + The following examples all refer to Figure 2. + + Example 4: Any channel with 1 client in it. Messages to the channel + go to the server and then nowhere else. + + Example 5: 2 clients in a channel. All messages traverse a path as if + they were private messages between the two clients outside a + channel. + + + + + + +Kalt Informational [Page 5] + +RFC 2810 Internet Relay Chat: Architecture April 2000 + + + Example 6: Clients 1, 2 and 3 in a channel. All messages to the + channel are sent to all clients and only those servers which must + be traversed by the message if it were a private message to a + single client. If client 1 sends a message, it goes back to + client 2 and then via server B to client 3. + +5.2.2 To A Host/Server Mask + + To provide with some mechanism to send messages to a large body of + related users, host and server mask messages are available. These + messages are sent to users whose host or server information match + that of the mask. The messages are only sent to locations where + users are, in a fashion similar to that of channels. + +5.2.3 To A List + + The least efficient style of one-to-many conversation is through + clients talking to a 'list' of targets (client, channel, mask). How + this is done is almost self explanatory: the client gives a list of + destinations to which the message is to be delivered and the server + breaks it up and dispatches a separate copy of the message to each + given destination. + + This is not as efficient as using a channel since the destination + list MAY be broken up and the dispatch sent without checking to make + sure duplicates aren't sent down each path. + +5.3 One-To-All + + The one-to-all type of message is better described as a broadcast + message, sent to all clients or servers or both. On a large network + of users and servers, a single message can result in a lot of traffic + being sent over the network in an effort to reach all of the desired + destinations. + + For some class of messages, there is no option but to broadcast it to + all servers so that the state information held by each server is + consistent between servers. + +5.3.1 Client-to-Client + + There is no class of message which, from a single message, results in + a message being sent to every other client. + + + + + + + + +Kalt Informational [Page 6] + +RFC 2810 Internet Relay Chat: Architecture April 2000 + + +5.3.2 Client-to-Server + + Most of the commands which result in a change of state information + (such as channel membership, channel mode, user status, etc.) MUST be + sent to all servers by default, and this distribution SHALL NOT be + changed by the client. + +5.3.3 Server-to-Server + + While most messages between servers are distributed to all 'other' + servers, this is only required for any message that affects a user, + channel or server. Since these are the basic items found in IRC, + nearly all messages originating from a server are broadcast to all + other connected servers. + +6. Current Problems + + There are a number of recognized problems with this protocol, this + section only addresses the problems related to the architecture of + the protocol. + +6.1 Scalability + + It is widely recognized that this protocol does not scale + sufficiently well when used in a large arena. The main problem comes + from the requirement that all servers know about all other servers, + clients and channels and that information regarding them be updated + as soon as it changes. + +6.2 Reliability + + As the only network configuration allowed for IRC servers is that of + a spanning tree, each link between two servers is an obvious and + quite serious point of failure. This particular issue is addressed + more in detail in "Internet Relay Chat: Server Protocol" [IRC- + SERVER]. + +6.3 Network Congestion + + Another problem related to the scalability and reliability issues, as + well as the spanning tree architecture, is that the protocol and + architecture for IRC are extremely vulnerable to network congestions. + This problem is endemic, and should be solved for the next + generation: if congestion and high traffic volume cause a link + between two servers to fail, not only this failure generates more + network traffic, but the reconnection (eventually elsewhere) of two + servers also generates more traffic. + + + + +Kalt Informational [Page 7] + +RFC 2810 Internet Relay Chat: Architecture April 2000 + + + In an attempt to minimize the impact of these problems, it is + strongly RECOMMENDED that servers do not automatically try to + reconnect too fast, in order to avoid aggravating the situation. + +6.4 Privacy + + Besides not scaling well, the fact that servers need to know all + information about other entities, the issue of privacy is also a + concern. This is in particular true for channels, as the related + information is quite a lot more revealing than whether a user is + online or not. + +7. Security Considerations + + Asides from the privacy concerns mentioned in section 6.4 (Privacy), + security is believed to be irrelevant to this document. + +8. Current Support And Availability + + Mailing lists for IRC related discussion: + General discussion: ircd-users@irc.org + Protocol development: ircd-dev@irc.org + + Software implementations: + ftp://ftp.irc.org/irc/server + ftp://ftp.funet.fi/pub/unix/irc + ftp://coombs.anu.edu.au/pub/irc + + Newsgroup: alt.irc + +9. Acknowledgements + + Parts of this document were copied from the RFC 1459 [IRC] which + first formally documented the IRC Protocol. It has also benefited + from many rounds of review and comments. In particular, the + following people have made significant contributions to this + document: + + Matthew Green, Michael Neumayer, Volker Paulsen, Kurt Roeckx, Vesa + Ruokonen, Magnus Tjernstrom, Stefan Zehl. + + + + + + + + + + + +Kalt Informational [Page 8] + +RFC 2810 Internet Relay Chat: Architecture April 2000 + + +10. References + + [KEYWORDS] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, March 1997. + + [IRC] Oikarinen, J. and D. Reed, "Internet Relay Chat + Protocol", RFC 1459, May 1993. + + [IRC-CLIENT] Kalt, C., "Internet Relay Chat: Client Protocol", RFC + 2812, April 2000. + + [IRC-SERVER] Kalt, C., "Internet Relay Chat: Server Protocol", RFC + 2813, April 2000. + + [IRC-CHAN] Kalt, C., "Internet Relay Chat: Channel Management", RFC + 2811, April 2000. + +11. Author's Address + + Christophe Kalt + 99 Teaneck Rd, Apt #117 + Ridgefield Park, NJ 07660 + USA + + EMail: kalt@stealth.net + + + + + + + + + + + + + + + + + + + + + + + + + + +Kalt Informational [Page 9] + +RFC 2810 Internet Relay Chat: Architecture April 2000 + + +12. Full Copyright Statement + + Copyright (C) The Internet Society (2000). All Rights Reserved. + + This document and translations of it may be copied and furnished to + others, and derivative works that comment on or otherwise explain it + or assist in its implementation may be prepared, copied, published + and distributed, in whole or in part, without restriction of any + kind, provided that the above copyright notice and this paragraph are + included on all such copies and derivative works. However, this + document itself may not be modified in any way, such as by removing + the copyright notice or references to the Internet Society or other + Internet organizations, except as needed for the purpose of + developing Internet standards in which case the procedures for + copyrights defined in the Internet Standards process must be + followed, or as required to translate it into languages other than + English. + + The limited permissions granted above are perpetual and will not be + revoked by the Internet Society or its successors or assigns. + + This document and the information contained herein is provided on an + "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING + TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION + HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF + MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +Acknowledgement + + Funding for the RFC Editor function is currently provided by the + Internet Society. + + + + + + + + + + + + + + + + + + + +Kalt Informational [Page 10] + |