source: trunk/doc/rfc2811.txt

Last change on this file was 2, checked in by Erik Enge, 20 years ago

Initial revision

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 37.0 KB
Line 
1Network Working Group                                            C. Kalt
2Request for Comments: 2811                                    April 2000
3Updates: 1459
4Category: Informational
5
6                Internet Relay Chat: Channel Management
7
8Status of this Memo
9
10   This memo provides information for the Internet community.  It does
11   not specify an Internet standard of any kind.  Distribution of this
12   memo is unlimited.
13
14Copyright Notice
15
16   Copyright (C) The Internet Society (2000).  All Rights Reserved.
17
18Abstract
19
20   One of the most notable characteristics of the IRC (Internet Relay
21   Chat) protocol is to allow for users to be grouped in forums, called
22   channels, providing a mean for multiple users to communicate
23   together.
24
25   There was originally a unique type of channels, but with the years,
26   new types appeared either as a response to a need, or for
27   experimental purposes.
28
29   This document specifies how channels, their characteristics and
30   properties are managed by IRC servers.
31
32Table of Contents
33
34   1.  Introduction ...............................................   2
35   2.  Channel Characteristics ....................................   3
36      2.1  Namespace ..............................................   3
37      2.2  Channel Scope ..........................................   3
38      2.3  Channel Properties .....................................   4
39      2.4  Privileged Channel Members .............................   4
40         2.4.1  Channel Operators .................................   5
41         2.4.2  Channel Creator ...................................   5
42   3.  Channel lifetime ...........................................   5
43      3.1  Standard channels ......................................   5
44      3.2  Safe Channels ..........................................   6
45   4.  Channel Modes ..............................................   7
46      4.1  Member Status ..........................................   7
47         4.1.1  "Channel Creator" Status ..........................   7
48
49         4.1.2  Channel Operator Status ...........................   8
50         4.1.3  Voice Privilege ...................................   8
51      4.2  Channel Flags ..........................................   8
52         4.2.1  Anonymous Flag ....................................   8
53         4.2.2  Invite Only Flag ..................................   8
54         4.2.3  Moderated Channel Flag ............................   9
55         4.2.4  No Messages To Channel From Clients On The Outside    9
56         4.2.5  Quiet Channel .....................................   9
57         4.2.6  Private and Secret Channels .......................   9
58         4.2.7  Server Reop Flag ..................................  10
59         4.2.8  Topic .............................................  10
60         4.2.9  User Limit ........................................  10
61         4.2.10  Channel Key ......................................  10
62      4.3  Channel Access Control .................................  10
63         4.3.1  Channel Ban and Exception .........................  11
64         4.3.2  Channel Invitation ................................  11
65   5.  Current Implementations ....................................  11
66      5.1  Tracking Recently Used Channels ........................  11
67      5.2  Safe Channels ..........................................  12
68         5.2.1  Channel Identifier ................................  12
69         5.2.2  Channel Delay .....................................  12
70         5.2.3  Abuse Window ......................................  13
71         5.2.4  Preserving Sanity In The Name Space ...............  13
72         5.2.5  Server Reop Mechanism .............................  13
73   6.  Current problems ...........................................  14
74      6.1  Labels .................................................  14
75         6.1.1  Channel Delay .....................................  14
76         6.1.2  Safe Channels .....................................  15
77      6.2  Mode Propagation Delays ................................  15
78      6.3  Collisions And Channel Modes ...........................  15
79      6.4  Resource Exhaustion ....................................  16
80   7.  Security Considerations ....................................  16
81      7.1  Access Control .........................................  16
82      7.2  Channel Privacy ........................................  16
83      7.3 Anonymity ...............................................  17
84   8.  Current support and availability ...........................  17
85   9.  Acknowledgements ...........................................  17
86   10. References ................................................   18
87   11. Author's Address ..........................................   18
88   12. Full Copyright Statement ...................................  19
89
901. Introduction
91
92   This document defines in detail on how channels are managed by the
93   IRC servers and will be mostly useful to people working on
94   implementing an IRC server.
95
96   While the concepts defined here are an important part of IRC, they
97   remain non essential for implementing clients.  While the trend seems
98   to be towards more and more complex and "intelligent" clients which
99   are able to take advantage of knowing the internal workings of
100   channels to provide the users with a more friendly interface, simple
101   clients can be implemented without reading this document.
102
103   Many of the concepts defined here were designed with the IRC
104   architecture [IRC-ARCH] in mind and mostly make sense in this
105   context.  However, many others could be applied to other
106   architectures in order to provide forums for a conferencing system.
107
108   Finally, it is to be noted that IRC users may find some of the
109   following sections of interest, in particular sections 2 (Channel
110   Characteristics) and 4 (Channel Modes).
111
1122. Channel Characteristics
113
114   A channel is a named group of one or more users which will all
115   receive messages addressed to that channel.  A channel is
116   characterized by its name, properties and current members.
117
1182.1 Namespace
119
120   Channels names are strings (beginning with a '&', '#', '+' or '!'
121   character) of length up to fifty (50) characters.  Channel names are
122   case insensitive.
123
124   Apart from the the requirement that the first character being either
125   '&', '#', '+' or '!' (hereafter called "channel prefix"). The only
126   restriction on a channel name is that it SHALL NOT contain any spaces
127   (' '), a control G (^G or ASCII 7), a comma (',' which is used as a
128   list item separator by the protocol).  Also, a colon (':') is used as
129   a delimiter for the channel mask.  The exact syntax of a channel name
130   is defined in "IRC Server Protocol" [IRC-SERVER].
131
132   The use of different prefixes effectively creates four (4) distinct
133   namespaces for channel names.  This is important because of the
134   protocol limitations regarding namespaces (in general).  See section
135   6.1 (Labels) for more details on these limitations.
136
1372.2 Channel Scope
138
139   A channel entity is known by one or more servers on the IRC network.
140   A user can only become member of a channel known by the server to
141   which the user is directly connected.  The list of servers which know
142
143   of the existence of a particular channel MUST be a contiguous part of
144   the IRC network, in order for the messages addressed to the channel
145   to be sent to all the channel members.
146
147   Channels with '&' as prefix are local to the server where they are
148   created.
149
150   Other channels are known to one (1) or more servers that are
151   connected to the network, depending on the channel mask:
152
153      If there is no channel mask, then the channel is known to all
154      the servers.
155
156      If there is a channel mask, then the channel MUST only be known
157      to servers which has a local user on the channel, and to its
158      neighbours if the mask matches both the local and neighbouring
159      server names.  Since other servers have absolutely no knowledge of
160      the existence of such a channel, the area formed by the servers
161      having a name matching the mask has to be contiguous for the
162      channel to be known by all these servers.  Channel masks are best
163      used in conjunction with server hostmasking [IRC-SERVER].
164
1652.3 Channel Properties
166
167   Each channel has its own properties, which are defined by channel
168   modes.  Channel modes can be manipulated by the channel members.  The
169   modes affect the way servers manage the channels.
170
171   Channels with '+' as prefix do not support channel modes.  This means
172   that all the modes are unset, with the exception of the 't' channel
173   flag which is set.
174
1752.4 Privileged Channel Members
176
177   In order for the channel members to keep some control over a channel,
178   and some kind of sanity, some channel members are privileged.  Only
179   these members are allowed to perform the following actions on the
180   channel:
181
182        INVITE  - Invite a client to an invite-only channel (mode +i)
183        KICK    - Eject a client from the channel
184        MODE    - Change the channel's mode, as well as
185                  members' privileges
186        PRIVMSG - Sending messages to the channel (mode +n, +m, +v)
187        TOPIC   - Change the channel topic in a mode +t channel
188
1892.4.1 Channel Operators
190
191   The channel operators (also referred to as a "chop" or "chanop") on a
192   given channel are considered to 'own' that channel.  Ownership of a
193   channel is shared among channel operators.
194
195   Channel operators are identified by the '@' symbol next to their
196   nickname whenever it is associated with a channel (i.e., replies to
197   the NAMES, WHO and WHOIS commands).
198
199   Since channels starting with the character '+' as prefix do not
200   support channel modes, no member can therefore have the status of
201   channel operator.
202
2032.4.2 Channel Creator
204
205   A user who creates a channel with the character '!' as prefix is
206   identified as the "channel creator".  Upon creation of the channel,
207   this user is also given channel operator status.
208
209   In recognition of this status, the channel creators are endowed with
210   the ability to toggle certain modes of the channel which channel
211   operators may not manipulate.
212
213   A "channel creator" can be distinguished from a channel operator by
214   issuing the proper MODE command.  See the "IRC Client Protocol"
215   [IRC-CLIENT] for more information on this topic.
216
2173. Channel lifetime
218
219   In regard to the lifetime of a channel, there are typically two
220   groups of channels: standard channels which prefix is either '&', '#'
221   or '+', and "safe channels" which prefix is '!'.
222
2233.1 Standard channels
224
225   These channels are created implicitly when the first user joins it,
226   and cease to exist when the last user leaves it.  While the channel
227   exists, any client can reference the channel using the name of the
228   channel.
229
230   The user creating a channel automatically becomes channel operator
231   with the notable exception of channels which name is prefixed by the
232   character '+', see section 4 (Channel modes).  See section 2.4.1
233   (Channel Operators) for more details on this title.
234
235   In order to avoid the creation of duplicate channels (typically when
236   the IRC network becomes disjoint because of a split between two
237   servers), channel names SHOULD NOT be allowed to be reused by a user
238   if a channel operator (See Section 2.4.1 (Channel Operators)) has
239   recently left the channel because of a network split.  If this
240   happens, the channel name is temporarily unavailable.  The duration
241   while a channel remains unavailable should be tuned on a per IRC
242   network basis.  It is important to note that this prevents local
243   users from creating a channel using the same name, but does not
244   prevent the channel to be recreated by a remote user. The latter
245   typically happens when the IRC network rejoins.  Obviously, this
246   mechanism only makes sense for channels which name begins with the
247   character '#', but MAY be used for channels which name begins with
248   the character '+'.  This mechanism is commonly known as "Channel
249   Delay".
250
2513.2 Safe Channels
252
253   Unlike other channels, "safe channels" are not implicitly created.  A
254   user wishing to create such a channel MUST request the creation by
255   sending a special JOIN command to the server in which the channel
256   identifier (then unknown) is replaced by the character '!'.  The
257   creation process for this type of channel is strictly controlled.
258   The user only chooses part of the channel name (known as the channel
259   "short name"), the server automatically prepends the user provided
260   name with a channel identifier consisting of five (5) characters.
261   The channel name resulting from the combination of these two elements
262   is unique, making the channel safe from abuses based on network
263   splits.
264
265   The user who creates such a channel automatically becomes "channel
266   creator".  See section 2.4.2 (Channel Creator) for more details on
267   this title.
268
269   A server MUST NOT allow the creation of a new channel if another
270   channel with the same short name exists; or if another channel with
271   the same short name existed recently AND any of its member(s) left
272   because of a network split.  Such channel ceases to exist after last
273   user leaves AND no other member recently left the channel because of
274   a network split.
275
276   Unlike the mechanism described in section 5.2.2 (Channel Delay), in
277   this case, channel names do not become unavailable: these channels
278   may continue to exist after the last user left.  Only the user
279   creating the channel becomes "channel creator", users joining an
280   existing empty channel do not automatically become "channel creator"
281   nor "channel operator".
282
283   To ensure the uniqueness of the channel names, the channel identifier
284   created by the server MUST follow specific rules.  For more details
285   on this, see section 5.2.1 (Channel Identifier).
286
2874. Channel Modes
288
289   The various modes available for channels are as follows:
290
291        O - give "channel creator" status;
292        o - give/take channel operator privilege;
293        v - give/take the voice privilege;
294
295        a - toggle the anonymous channel flag;
296        i - toggle the invite-only channel flag;
297        m - toggle the moderated channel;
298        n - toggle the no messages to channel from clients on the
299            outside;
300        q - toggle the quiet channel flag;
301        p - toggle the private channel flag;
302        s - toggle the secret channel flag;
303        r - toggle the server reop channel flag;
304        t - toggle the topic settable by channel operator only flag;
305
306        k - set/remove the channel key (password);
307        l - set/remove the user limit to channel;
308
309        b - set/remove ban mask to keep users out;
310        e - set/remove an exception mask to override a ban mask;
311        I - set/remove an invitation mask to automatically override
312            the invite-only flag;
313
314   Unless mentioned otherwise below, all these modes can be manipulated
315   by "channel operators" by using the MODE command defined in "IRC
316   Client Protocol" [IRC-CLIENT].
317
3184.1 Member Status
319
320   The modes in this category take a channel member nickname as argument
321   and affect the privileges given to this user.
322
3234.1.1 "Channel Creator" Status
324
325   The mode 'O' is only used in conjunction with "safe channels" and
326   SHALL NOT be manipulated by users.  Servers use it to give the user
327   creating the channel the status of "channel creator".
328
3294.1.2 Channel Operator Status
330
331   The mode 'o' is used to toggle the operator status of a channel
332   member.
333
3344.1.3 Voice Privilege
335
336   The mode 'v' is used to give and take voice privilege to/from a
337   channel member.  Users with this privilege can talk on moderated
338   channels.  (See section 4.2.3 (Moderated Channel Flag).
339
3404.2 Channel Flags
341
342   The modes in this category are used to define properties which
343   affects how channels operate.
344
3454.2.1 Anonymous Flag
346
347   The channel flag 'a' defines an anonymous channel.  This means that
348   when a message sent to the channel is sent by the server to users,
349   and the origin is a user, then it MUST be masked.  To mask the
350   message, the origin is changed to "anonymous!anonymous@anonymous."
351   (e.g., a user with the nickname "anonymous", the username "anonymous"
352   and from a host called "anonymous.").  Because of this, servers MUST
353   forbid users from using the nickname "anonymous".  Servers MUST also
354   NOT send QUIT messages for users leaving such channels to the other
355   channel members but generate a PART message instead.
356
357   On channels with the character '&' as prefix, this flag MAY be
358   toggled by channel operators, but on channels with the character '!'
359   as prefix, this flag can be set (but SHALL NOT be unset) by the
360   "channel creator" only.  This flag MUST NOT be made available on
361   other types of channels.
362
363   Replies to the WHOIS, WHO and NAMES commands MUST NOT reveal the
364   presence of other users on channels for which the anonymous flag is
365   set.
366
3674.2.2 Invite Only Flag
368
369   When the channel flag 'i' is set, new members are only accepted if
370   their mask matches Invite-list (See section 4.3.2) or they have been
371   invited by a channel operator.  This flag also restricts the usage of
372   the INVITE command (See "IRC Client Protocol" [IRC-CLIENT]) to
373   channel operators.
374
3754.2.3 Moderated Channel Flag
376
377   The channel flag 'm' is used to control who may speak on a channel.
378   When it is set, only channel operators, and members who have been
379   given the voice privilege may send messages to the channel.
380
381      This flag only affects users.
382
3834.2.4 No Messages To Channel From Clients On The Outside
384
385   When the channel flag 'n' is set, only channel members MAY send
386   messages to the channel.
387
388      This flag only affects users.
389
3904.2.5 Quiet Channel
391
392   The channel flag 'q' is for use by servers only.  When set, it
393   restricts the type of data sent to users about the channel
394   operations: other user joins, parts and nick changes are not sent.
395   From a user's point of view, the channel contains only one user.
396
397   This is typically used to create special local channels on which the
398   server sends notices related to its operations.  This was used as a
399   more efficient and flexible way to replace the user mode 's' defined
400   in RFC 1459 [IRC].
401
4024.2.6 Private and Secret Channels
403
404   The channel flag 'p' is used to mark a channel "private" and the
405   channel flag 's' to mark a channel "secret".  Both properties are
406   similar and conceal the existence of the channel from other users.
407
408   This means that there is no way of getting this channel's name from
409   the server without being a member.  In other words, these channels
410   MUST be omitted from replies to queries like the WHOIS command.
411
412   When a channel is "secret", in addition to the restriction above, the
413   server will act as if the channel does not exist for queries like the
414   TOPIC, LIST, NAMES commands.  Note that there is one exception to
415   this rule: servers will correctly reply to the MODE command.
416   Finally, secret channels are not accounted for in the reply to the
417   LUSERS command (See "Internet Relay Chat: Client Protocol" [IRC-
418   CLIENT]) when the <mask> parameter is specified.
419
420   The channel flags 'p' and 's' MUST NOT both be set at the same time.
421   If a MODE message originating from a server sets the flag 'p' and the
422   flag 's' is already set for the channel, the change is silently
423   ignored.  This should only happen during a split healing phase
424   (mentioned in the "IRC Server Protocol" document [IRC-SERVER]).
425
4264.2.7 Server Reop Flag
427
428   The channel flag 'r' is only available on channels which name begins
429   with the character '!' and MAY only be toggled by the "channel
430   creator".
431
432   This flag is used to prevent a channel from having no channel
433   operator for an extended period of time.  When this flag is set, any
434   channel that has lost all its channel operators for longer than the
435   "reop delay" period triggers a mechanism in servers to reop some or
436   all of the channel inhabitants.  This mechanism is described more in
437   detail in section 5.2.4 (Channel Reop Mechanism).
438
4394.2.8 Topic
440
441   The channel flag 't' is used to restrict the usage of the TOPIC
442   command to channel operators.
443
4444.2.9 User Limit
445
446   A user limit may be set on channels by using the channel flag 'l'.
447   When the limit is reached, servers MUST forbid their local users to
448   join the channel.
449
450   The value of the limit MUST only be made available to the channel
451   members in the reply sent by the server to a MODE query.
452
4534.2.10 Channel Key
454
455   When a channel key is set (by using the mode 'k'), servers MUST
456   reject their local users request to join the channel unless this key
457   is given.
458
459   The channel key MUST only be made visible to the channel members in
460   the reply sent by the server to a MODE query.
461
4624.3 Channel Access Control
463
464   The last category of modes is used to control access to the channel,
465   they take a mask as argument.
466
467   In order to reduce the size of the global database for control access
468   modes set for channels, servers MAY put a maximum limit on the number
469   of such modes set for a particular channel.  If such restriction is
470   imposed, it MUST only affect user requests.  The limit SHOULD be
471   homogeneous on a per IRC network basis.
472
4734.3.1 Channel Ban and Exception
474
475   When a user requests to join a channel, his local server checks if
476   the user's address matches any of the ban masks set for the channel.
477   If a match is found, the user request is denied unless the address
478   also matches an exception mask set for the channel.
479
480   Servers MUST NOT allow a channel member who is banned from the
481   channel to speak on the channel, unless this member is a channel
482   operator or has voice privilege. (See Section 4.1.3 (Voice
483   Privilege)).
484
485   A user who is banned from a channel and who carries an invitation
486   sent by a channel operator is allowed to join the channel.
487
4884.3.2 Channel Invitation
489
490   For channels which have the invite-only flag set (See Section 4.2.2
491   (Invite Only Flag)), users whose address matches an invitation mask
492   set for the channel are allowed to join the channel without any
493   invitation.
494
4955. Current Implementations
496
497   The only current implementation of these rules as part of the IRC
498   protocol is the IRC server, version 2.10.
499
500   The rest of this section deals with issues that are mostly of
501   importance to those who wish to implement a server but some parts may
502   also be of interest for client writers.
503
5045.1 Tracking Recently Used Channels
505
506   This mechanism is commonly known as "Channel Delay" and generally
507   only applies to channels which names is prefixed with the character
508   '#' (See Section 3.1 "Standard channels").
509
510   When a network split occurs, servers SHOULD keep track of which
511   channels lost a "channel operator" as the result of the break.  These
512   channels are then in a special state which lasts for a certain period
513   of time.  In this particular state, the channels cannot cease to
514
515   exist.  If all the channel members leave the channel, the channel
516   becomes unavailable: the server local clients cannot join the channel
517   as long as it is empty.
518
519   Once a channel is unavailable, it will become available again either
520   because a remote user has joined the channel (most likely because the
521   network is healing), or because the delay period has expired (in
522   which case the channel ceases to exist and may be re-created).
523
524   The duration for which a channel death is delayed SHOULD be set
525   considering many factors among which are the size (user wise) of the
526   IRC network, and the usual duration of network splits.  It SHOULD be
527   uniform on all servers for a given IRC network.
528
5295.2 Safe Channels
530
531   This document introduces the notion of "safe channels".  These
532   channels have a name prefixed with the character '!' and great effort
533   is made to avoid collisions in this name space.  Collisions are not
534   impossible, however they are very unlikely.
535
5365.2.1 Channel Identifier
537
538   The channel identifier is a function of the time.  The current time
539   (as defined under UNIX by the number of seconds elapsed since
540   00:00:00 GMT, January 1, 1970) is converted in a string of five (5)
541   characters using the following base:
542   "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" (each character has a decimal
543   value starting from 0 for 'A' to 35 for '0').
544
545   The channel identifier therefore has a periodicity of 36^5 seconds
546   (about 700 days).
547
5485.2.2 Channel Delay
549
550   These channels MUST be subject to the "channel delay" mechanism
551   described in section 5.1 (Channel Delay).  However, the mechanism is
552   slightly adapted to fit better.
553
554   Servers MUST keep track of all such channels which lose members as
555   the result of a network split, no matter whether the user is a
556   "channel operator" or not.
557
558   However, these channels do NOT ever become unavailable, it is always
559   possible to join them even when they are empty.
560
5615.2.3 Abuse Window
562
563   Because the periodicity is so long, attacks on a particular channel
564   (name) may only occur once in a very long while.  However, with luck
565   and patience, it is still possible for a user to cause a channel
566   collision.  In order to avoid this, servers MUST "look in the future"
567   and keep a list of channel names which identifier is about to be used
568   (in the coming few days for example). Such list should remain small,
569   not be a burden for servers to maintain and be used to avoid channel
570   collisions by preventing the re-creation of such channel for a longer
571   period of time than channel delay does.
572
573   Eventually a server MAY choose to extend this procedure to forbid
574   creation of channels with the same shortname only (then ignoring the
575   channel identifier).
576
5775.2.4 Preserving Sanity In The Name Space
578
579   The combination of the mechanisms described in sections 5.2.2 and
580   5.2.3 makes it quite difficult for a user to create a channel
581   collision. However, another type of abuse consists of creating many
582   channels having the same shortname, but different identifiers.  To
583   prevent this from happening, servers MUST forbid the creation of a
584   new channel which has the same shortname of a channel currently
585   existing.
586
5875.2.5 Server Reop Mechanism
588
589   When a channel has been opless for longer than the "reop delay"
590   period and has the channel flag 'r' set (See Section 4.2.7 (Server
591   Reop Flag)), IRC servers are responsible for giving the channel
592   operator status randomly to some of the members.
593
594   The exact logic used for this mechanism by the current implementation
595   is described below.  Servers MAY use a different logic, but that it
596   is strongly RECOMMENDED that all servers use the same logic on a
597   particular IRC network to maintain coherence as well as fairness.
598   For the same reason, the "reop delay" SHOULD be uniform on all
599   servers for a given IRC network.  As for the "channel delay", the
600   value of the "reop delay" SHOULD be set considering many factors
601   among which are the size (user wise) of the IRC network, and the
602   usual duration of network splits.
603
604   a) the reop mechanism is triggered after a random time following the
605      expiration of the "reop delay".  This should limit the eventuality
606      of the mechanism being triggered at the same time (for the same
607      channel) on two separate servers.
608
609   b) If the channel is small (five (5) users or less), and the "channel
610      delay" for this channel has expired,
611        Then reop all channel members if at least one member is local to
612        the server.
613
614   c) If the channel is small (five (5) users or less), and the "channel
615      delay" for this channel has expired, and the "reop delay" has
616      expired for longer than its value,
617        Then reop all channel members.
618
619   d) For other cases, reop at most one member on the channel, based on
620      some method build into the server. If you don't reop a member, the
621      method should be such that another server will probably op
622      someone. The method SHOULD be the same over the whole network. A
623      good heuristic could be just random reop.
624      (The current implementation actually tries to choose a member
625      local to the server who has not been idle for too long, eventually
626      postponing action, therefore letting other servers have a chance
627      to find a "not too idle" member.  This is over complicated due to
628      the fact that servers only know the "idle" time of their local
629      users)
630
6316. Current problems
632
633   There are a number of recognized problems with the way IRC channels
634   are managed.  Some of these can be directly attributed to the rules
635   defined in this document, while others are the result of the
636   underlying "IRC Server Protocol" [IRC-SERVER].  Although derived from
637   RFC 1459 [IRC], this document introduces several novelties in an
638   attempt to solve some of the known problems.
639
6406.1 Labels
641
642   This document defines one of the many labels used by the IRC
643   protocol.  Although there are several distinct namespaces (based on
644   the channel name prefix), duplicates inside each of these are not
645   allowed.  Currently, it is possible for users on different servers to
646   pick the label which may result in collisions (with the exception of
647   channels known to only one server where they can be averted).
648
6496.1.1 Channel Delay
650
651   The channel delay mechanism described in section 5.1 (Tracking
652   Recently Used Channels) and used for channels prefixed with the
653   character '#' is a simple attempt at preventing collisions from
654   happening.  Experience has shown that, under normal circumstances, it
655
656   is very efficient; however, it obviously has severe limitations
657   keeping it from being an adequate solution to the problem discussed
658   here.
659
6606.1.2 Safe Channels
661
662   "Safe channels" described in section 3.2 (Safe Channels) are a better
663   way to prevent collisions from happening as it prevents users from
664   having total control over the label they choose.  The obvious
665   drawback for such labels is that they are not user friendly.
666   However, it is fairly trivial for a client program to improve on
667   this.
668
6696.2 Mode Propagation Delays
670
671   Because of network delays induced by the network, and because each
672   server on the path is REQUIRED to check the validity of mode changes
673   (e.g., user exists and has the right privileges), it is not unusual
674   for a MODE message to only affect part of the network, often creating
675   a discrepancy between servers on the current state of a channel.
676
677   While this may seem easy to fix (by having only the original server
678   check the validity of mode changes), it was decided not to do so for
679   various reasons.  One concern is that servers cannot trust each
680   other, and that a misbehaving servers can easily be detected.  This
681   way of doing so also stops wave effects on channels which are out of
682   synch when mode changes are issued from different directions.
683
6846.3 Collisions And Channel Modes
685
686   The "Internet Relay Chat: Server Protocol" document [IRC-SERVER]
687   describes how channel data is exchanged when two servers connect to
688   each other.  Channel collisions (either legitimate or not) are
689   treated as inclusive events, meaning that the resulting channel has
690   for members all the users who are members of the channel on either
691   server prior to the connection.
692
693   Similarly, each server sends the channel modes to the other one.
694   Therefore, each server also receives these channel modes.  There are
695   three types of modes for a given channel: flags, masks, and data.
696   The first two types are easy to deal with as they are either set or
697   unset.  If such a mode is set on one server, it MUST be set on the
698   other server as a result of the connection.
699
700   As topics are not sent as part of this exchange, they are not a
701   problem.  However, channel modes 'l' and 'k' are exchanged, and if
702   they are set on both servers prior to the connection, there is no
703   mechanism to decide which of the two values takes precedence.  It is
704   left up to the users to fix the resulting discrepancy.
705
7066.4 Resource Exhaustion
707
708   The mode based on masks defined in section 4.3 make the IRC servers
709   (and network) vulnerable to a simple abuse of the system: a single
710   channel operator can set as many different masks as possible on a
711   particular channel.  This can easily cause the server to waste
712   memory, as well as network bandwidth (since the info is propagated to
713   other servers).  For this reason it is RECOMMENDED that a limit be
714   put on the number of such masks per channels as mentioned in section
715   4.3.
716
717   Moreover, more complex mechanisms MAY be used to avoid having
718   redundant masks set for the same channel.
719
7207. Security Considerations
721
7227.1 Access Control
723
724   One of the main ways to control access to a channel is to use masks
725   which are based on the username and hostname of the user connections.
726   This mechanism can only be efficient and safe if the IRC servers have
727   an accurate way of authenticating user connections, and if users
728   cannot easily get around it.  While it is in theory possible to
729   implement such a strict authentication mechanism, most IRC networks
730   (especially public networks) do not have anything like this in place
731   and provide little guaranty about the accuracy of the username and
732   hostname for a particular client connection.
733
734   Another way to control access is to use a channel key, but since this
735   key is sent in plaintext, it is vulnerable to traditional man in the
736   middle attacks.
737
7387.2 Channel Privacy
739
740   Because channel collisions are treated as inclusive events (See
741   Section 6.3), it is possible for users to join a channel overriding
742   its access control settings.  This method has long been used by
743   individuals to "take over" channels by "illegitimately" gaining
744   channel operator status on the channel.  The same method can be used
745   to find out the exact list of members of a channel, as well as to
746   eventually receive some of the messages sent to the channel.
747
7487.3 Anonymity
749
750   The anonymous channel flag (See Section 4.2.1) can be used to render
751   all users on such channel "anonymous" by presenting all messages to
752   the channel as originating from a pseudo user which nickname is
753   "anonymous".  This is done at the client-server level, and no
754   anonymity is provided at the server-server level.
755
756   It should be obvious to readers, that the level of anonymity offered
757   is quite poor and insecure, and that clients SHOULD display strong
758   warnings for users joining such channels.
759
7608. Current support and availability
761
762     Mailing lists for IRC related discussion:
763       General discussion: ircd-users@irc.org
764       Protocol development: ircd-dev@irc.org
765
766     Software implementations:
767       ftp://ftp.irc.org/irc/server
768       ftp://ftp.funet.fi/pub/unix/irc
769       ftp://coombs.anu.edu.au/pub/irc
770
771     Newsgroup: alt.irc
772
7739. Acknowledgements
774
775   Parts of this document were copied from the RFC 1459 [IRC] which
776   first formally documented the IRC Protocol.  It has also benefited
777   from many rounds of review and comments.  In particular, the
778   following people have made significant contributions to this
779   document:
780
781   Matthew Green, Michael Neumayer, Volker Paulsen, Kurt Roeckx, Vesa
782   Ruokonen, Magnus Tjernstrom, Stefan Zehl.
783
78410. References
785
786   [KEYWORDS]   Bradner, S., "Key words for use in RFCs to Indicate
787                Requirement Levels", BCP 14, RFC 2119, March 1997.
788
789   [IRC]        Oikarinen, J. and D. Reed, "Internet Relay Chat
790                Protocol", RFC 1459, May 1993.
791
792   [IRC-ARCH]   Kalt, C., "Internet Relay Chat: Architecture", RFC 2810,
793                April 2000.
794
795   [IRC-CLIENT] Kalt, C., "Internet Relay Chat: Client Protocol", RFC
796                2812, April 2000.
797
798   [IRC-SERVER] Kalt, C., "Internet Relay Chat: Server Protocol", RFC
799                2813, April 2000.
800
80111. Author's Address
802
803   Christophe Kalt
804   99 Teaneck Rd, Apt #117
805   Ridgefield Park, NJ 07660
806   USA
807
808   EMail: kalt@stealth.net
809
81012.  Full Copyright Statement
811
812   Copyright (C) The Internet Society (2000).  All Rights Reserved.
813
814   This document and translations of it may be copied and furnished to
815   others, and derivative works that comment on or otherwise explain it
816   or assist in its implementation may be prepared, copied, published
817   and distributed, in whole or in part, without restriction of any
818   kind, provided that the above copyright notice and this paragraph are
819   included on all such copies and derivative works.  However, this
820   document itself may not be modified in any way, such as by removing
821   the copyright notice or references to the Internet Society or other
822   Internet organizations, except as needed for the purpose of
823   developing Internet standards in which case the procedures for
824   copyrights defined in the Internet Standards process must be
825   followed, or as required to translate it into languages other than
826   English.
827
828   The limited permissions granted above are perpetual and will not be
829   revoked by the Internet Society or its successors or assigns.
830
831   This document and the information contained herein is provided on an
832   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
833   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
834   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
835   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
836   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
837
838Acknowledgement
839
840   Funding for the RFC Editor function is currently provided by the
841   Internet Society.
Note: See TracBrowser for help on using the repository browser.