⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rfc2813.txt

📁 很多RFC的中文文档
💻 TXT
📖 第 1 页 / 共 3 页
字号:
组织:中国互动出版网(http://www.china-pub.com/)
RFC文档中文翻译计划(http://www.china-pub.com/compters/emook/aboutemook.htm)
E-mail:ouyang@china-pub.com
译者:()
译文发布时间:2001-12-28
版权:本中文翻译文档版权归中国互动出版网所有。可以用于非商业用途自由转载,但必须
保留本文档的翻译及版权信息。




Network Working Group                                           C. Kalt
Request for Comments: 2813                                   April 2000
Updates: 1459
Category: Informational


Internet 交换交谈:服务器协议
(RFC2813——Internet Relay Chat: Server Protocol)

备忘录的状态:
这个备忘录提供了internet群体的信息。它并没有详细说明每一种internet的标准。这个备
忘录的适用范围是无拘束的。
版权通告:
copyright(c)internet Society (2000).  All Rights Reserved.
摘要:
以客户端——服务器为模板,irc协议允许服务器连接到另外的有效形成的网络。
本文档定义了服务器用于互相交流的协议。它原来只是一个客户端协议的超集,但是已经发
展的不同了。
正式的出版是在1993年5月作为rfc的一部分。从那时以来,大多数的为了使协议更加标
准的改变都可以在这篇文章中找到。更加标准的协议已经允许出现在万维网中,以使它可以
保持不断的更新,并且有别于原来的版本。

目录
1绪论	2
2.全球数据库	3
2.1服务器	3
2.2客户端	3
2.3信道	4
3.irc服务器的说明	4
3.1概要	4
3.2 特征代码	4
3.3信息	5
3.4数字回复	6
4信息细节	6
4.1连线注册	7
4.2信道操作:	11
4.3模式信息	13
5.执行细节	13
5.1连接失效	13
5.2接受客户端到服务器的连接	13
5.3终结一个服务器到服务器的连接	14
5.4中断服务器与客户端的连接	16
5.5中断之间的连接	16
5.6跟踪呢称变化	16
5.7跟踪最近使用过的用户名	17
5.8客户端的溢出控制	17
5.9无模块查找	17
6.当前问题	18
6.1可靠性	18
6.2标志	18
6.3运算法则	19
7.安全考虑	19
7.1证明	20
7.2完整性	20
8.相关支持和联接	20
9.鸣谢:	20
10.参考书目:	21
11.作者地址	22
12.版权说明	22
致谢:	23

1绪论

这篇文章是为了那些开发irc服务器的人而做的,但同时对那些以irc为工具的人也
是有用处的。

服务器提供了以《irc:体系》中定义的同时讨论为基础的三项服务:客户端位置(由
客户端协议[irc客户端]定义),信息传递(由这篇文章中的服务器协议定义),和信道的建设
主机与会议协商(详细条款请看[irc——信道])。

2.全球数据库

尽管irc协议定义了一些公平的发散式的模式,但是每一个服务器保持了一个关于整
个irc网络的“全球状态数据库”。这个数据库理论上说对所有服务器来说都是独一无二的。

2.1服务器

服务器可以通过申请一个最长63个字母的独一无二的名字。查看协议的语法条款[3。
3。1]来确定那些字母在名字中是可以使用的,那些是不能使用的。

每一个服务器都是理论上都是被其他服务器所了解的,但是有一种可能,定义一个
假的主机名字联合其他服务器使用它的名字。在HOSTMASK的区域里,所有服务器都有一
个和HOSTMASK名字相符的名字,在HOSTMASK区域外的服务器,即使有一个跟
HOSTMASK一样的名字,也不可以登陆到irc中去。而区域外的服务器对于区域内的服务
器的状态则一无所知,相反的,它们被赋予一个HOSTMASK的名字。

2.2客户端

对于每一个客户端,所有的服务器都必须有以下信息:一个网络中独特的姓名标志
(它们的形式由客户端来决定),以及一个正在与客户端连接的服务器。

2.2.1用户

每一个用户有个独特的最长为9个字母的用户名。查看协议上的语法规则[3。3。1]
来判断什么是能够使用的,那些不能使用。作为用户名的附加段,每个服务器都要对用户保
留有以下信息:用户正在连接的服务器名,用户在该服务器上的用户名,以及服务器连接的
客户端名。

2.2.2服务

每一项服务都可以通过用户名和服务器名来区别与其他服务。用户名最多允许9个
字母。查看协议上的语法规则[3。3。1]来判断那些字符可以使用,那些不行。用来标志服
务名称的服务器名就是这项服务连接的服务器名。作为这项服务的补充,所有服务器必须都
了解这种服务形式。

服务通过它们特有的标志符形式来区别于用户名,但是更多的较重要的服务和用户
名对服务器的权限是不同的:服务可以调用服务器中保留的部分甚至全部全球数据库中的信
息,但是对它们的限制就更加严格(详见irc客户端协议)并且不允许加入信道。最后一点,
服务并不总是服从与防火墙的5。8中有详细叙述。

2.3信道

就象服务一样,信道也有它的相应规定[irc ——信道]并且没有必要让所有服务器了
解。当一个信道的存在被一个服务器所了解,服务器就一定要记录信道成员的轨迹和信道模
式。

3.irc服务器的说明

3.1概要

这里描述的协议是用来给服务器和服务器相连接的。关于客户端与服务器的连接,
请看irc——客户端协议规则。

但是,对于客户端的连接有比服务器之间连接更多的规定(但是通常别认为是不可
靠的)。

3.2 特征代码

这里并没有说明那些特殊的特征代码。协议是以一个由8个字节的代码组成的集合
构成的。每一条信息都可能由若干个这种8位字节的代码组成。但是,一些8个字节的代码
含义是用来做控制代码的,就象信息的分割符。

不管是什么样的8字节协议,分割符和关键字都是协议用来进行美国——ASCII码
的终端连接和远程登录连接。

因为irc是由北欧方面产生的,某些地区,字母{  }  |  ^被认为是等同于小键盘上
的{  }  \  ~字母。这在确定用户名和信道名是否相同时,回出现严重问题。

3.3信息

服务器和客户端发送各自的信息,当然,可能收到回复,也可能没有回复。大多数
服务器之间的联系不需要回复,因为大多数时候服务器会为客户端准备好工作进程。

每一条irc的信息都由三个主要部分组成:前缀(可以省略),命令,和命令参数(最
多15个字符)。前缀,命令和所有参数被一个ASCII码空格(0*20)隔开。

前缀是以一个ASCII码中的冒号(: 0*3b)来标识的,它必须是信息的第一个字
符。冒号和前缀之间不可以有空格。前缀是服务器用来标识信息的来源的。如果信息中的前
缀丢失,它就会被默认成是从它刚刚连接并接收到信息的那个服务器。客户端自己互相在发
送信息时,不应该使用前缀;如果它使用了,唯一有效的前缀就是正在使用这个客户端的已
经注册过的用户名。

当一个服务器接收信息时,它必须通过前缀来判别信息的来源。如果在服务器的中
央数据库中找不到前缀,那它一定是被丢弃了,并且如果这个前缀指明的服务器是一个不知
名的服务器,那么这个信息传来的的连接将被删除。在这种情况下删除连接是有点过分,但
是保持网络服务的严谨与制止未来可能发生的问题却是必要的。另外一种常见的问题:前缀
指向的信息来源是与实际不同(典型情况:来源指向的是另一个连接而不是信息来源。)如
果信息被服务器接收,而来源指向客户端,一条删除客户端的信息就会发送到各个服务器中
去。另外一种情况,信息由来的那个连接就应该会在客户端被删除,并且一定要在服务器内
删除。不管什么情况,这条信息都要被删除。

命令一定要是有效的irc命令或者是用ASCII码描述的三位字节。

Irc信息通常是以CR-LF(换行和回车)为结束的成行的命令,这些信息的长度不可
以超过512个字节,其中包括CR-LF。因此,命令和它的参数最多只能有510个字节。没
有可以用来延长命令行的方法。查看第5部分可以找到有关当前命令的执行。

3.3.1扩展格式的信息

有关协议的信息一定要从一系列的8位字节中提取出来。现在的办法是标志出两个
字符,CR,LF,用来提取信息。空信息通常被默默忽略掉,这就显示出CR-LF在预防额外
问题中的作用。

有效的信息被分成:若干部分(前缀),(命令),和参数表(参数)。

扩展BNF对这方面的表述可以在irc——客户端协议中找到[irc--客户端]。

附加前缀([“!”user“@”host])决不可以在服务器之间的连接中使用,它的使用
范围只有服务器到客户端的连接,这样,客户端即使不需要额外的疑问而直接得到信息的来
源。

3.4数字回复

绝大部分发送去服务器的信息是有一定顺序的。最普通的回复是数字回复,既可以
用来回复错误,也可以普通回复。数字回复作为一种信息,一定要包括有前缀,三个阿拉伯
数字,和回复的目标对象客户端不允许发送数字回复,服务器如果接收到这样的回复,就会
自动删除掉。在所有其他关系中,数字回复就象是一个普通的信息,除非它的关键字是用三
个阿拉伯数字组成的,而不是字符串。一些另类的数字回复可以在irc——客户端协议中找
到[irc——客户端]。

4信息细节

所有irc的服务器与客户端认可的信息都在irc---客户端协议中详细介绍过了。

当出现 错误:没有此服务器时,那就意味着目标信息没有被找到。如果是命令发
生这种错误,服务器决不可以发送回复。

客户端所连接的服务器要分析整个信息,回复适当的错误。如果服务器在分析信息
时,遇到一个致命的错误,那么一个错误的回复信息就会被送回,并且终止分析。致命的错
误通常是由错误命令引发的,目标来源对于服务器来说可能是未知的(服务器,客户端,信
道符合这个类型),也可能是不正确的参数,或者错误的权限。

如果全部参数都存在,那么每一个都必须检查它是否能够有效的并且合适的送回到
客户端。如果信息中使用的参数表是用逗号来做分隔符的,那么就要发送回复来得到每一条
条款。

在下面的例子中,有些信息是以完整形式给出的:

:姓名 命令参数菜单

这样的例子是用“姓名”来标志信息的,在服务器间来回的传递,它的本质是信息
的原始发送者的名字,这样,即使远程服务器也可以找到正确的路径。

描述从客户端到服务器的连接细节的信息在irc——客户端协议中有详细描述[irc—
—客户端]。下面文章的一些章节就是对这些文章的应用,它们对那些只描述服务器之间连
接和信息的执行的信息是个附加。在这里介绍的信息都是只用来做服务器之间连接的。

4.1连线注册

这里介绍的命令是用来向另外一个irc服务器连线注册的。

4.1.1密码信息

命令:路径
参数:<密码><提示信息><标志位>[<选项>]

PASS路径命令被用来设置一个连接密码。密码一定要在连线注册前设定。这就意
味着在PASS命令一定要在任何服务器命令之前。只有第一个PASS命令会被连接认可。

如果是从客户端接收到的信息,那么最后的三个参数就会被忽略(e。g服务器的一
个用户)。只有当它们是从服务器发送来得时候,它们才相互关联。

变量参数至少要有四个字节,最多有十四个字节。开始的四个字节一定要是阿拉伯
数字,简要说明协议中的变量,就是已被服务器获知的那些信息。这篇文章所描述的就是2。
1。0版本的协议,通常被标志成“0210”。剩下的可供选择的字母是执行时所要依靠的,并
且需要描述软件的版本号。

标志位参数是一个字符串,最长可以包括100个字符。它是由两个副串组成的,中
间以一个“|”分开(%x7c)。如果是现在,那么这第一个副字符串一定要是执行的名字。涉
及到的执行(请看第8部分,当前的支持与可靠性)使用irc字符串。如果要写另外一个执
行命令,就需要一个标志符,并且这个标志符应该是在RFC上已注册的。两个副串是可选
择的,但是字符“|”是必须的。这个字符不可以出现在任何一个副串中。

最后,最后的参数,<选项>,是用来做连接设置的。协议定义过的唯一选项,连接压
缩(使用字母“Z”),和一个误差保护位(使用字母“P”)。参看5。3。1。1(压缩的服务
器与服务器连接),5。3。1。2(自动保护位),分别相对与这些选项的更多信息。

数字回复:
 
错误 需要更多参数                 错误 已注册

例子:

PASS 更多的密码字数  0210010000  irc |abgh$z

4.1.2服务器信息

命令:服务器
参数:〈服务器名〉〈希望数值〉〈标记〉〈信息〉

这条命令是用来注册一个新的服务器用的,新的连接中,它作为以一个服务器的身
份向它的同行介绍自己。这个命令也可以用来在整个网络中传递服务器的信息。当一个新的
服务器连接到网上,它的相关信息就一定要遍告整个网络。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -