热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

因特网延迟交谈:体系结构

该备忘录的状态该备忘录为互联网团体提供信息。它并不制定任何互联网标准,可以被无限制的发布。Copyright(c)TheInternetSociety(2000).AllRight

该备忘录的状态
该备忘录为互联网团体提供信息。它并不制定任何互联网标准,可以被无限制的发布。
Copyright(c)TheInternetSociety(2000).AllRightsReserved.
摘要:
IRC(因特网延迟交谈)协议用于文本交谈,1989年它首次被实现并用于BBS用户间的交谈
1993年五月RFC1459(IRC)将它以文献形式正式确立下来,以后它就不断发展
这篇文献描述了目前IRC协议的结构以及它各个组成部分的在整个协议中的角色
其它文献详描述了这里定义的各种组成之间的协议
目录
1.介绍 2
2.组件 2
2.1服务器 3
2.2客户机 3
2.2.1用户客户机 3
2.2.2服务客户机 3
3.结构 3
4.IRC协议服务 3
4.1客户机定位 4
4.2消息延迟 4
4.3频道收集和治理 4
5.IRC概念 4
5.1一对一交流 4
5.2和多个 4
5.2.1和一个频道 5
5.2.2向一个主机/服务器掩网 5
5.2.3向一系列目标 5
5.3向所有 5
5.3.1客户机向客户机 5
5.3.2客户机向服务器 6
5.3.3服务器向服务器 6
6当前的问题 6
6.1可用范围 6
6.2可靠性 6
6.3网络拥塞 6
6.4保密问题 6
7.保密 7
8.目前的支持和获取渠道 7
9.感谢 7
10.参考文献 7
11.作者地址 7
12.完整版权说明 8
致谢 8
1.介绍
IRC(Internet延迟交谈)协议用于文本交谈被设计出来已经有许多年了,这篇文档描述了
它目前的体系结构。
IRC协议是基于客户服务器模型的,可以很好地分布式地在许多机器上运行。一个典型
的设置涉及一个进程(服务器),它作为中心点接受客户(或其它服务器)的连接,并且实现
要求的消息传送/多元技术和其它的功能。
这种分布模型,由于它要求每个服务器都拥有全局状态信息,限制了一个网络所能达到
的最大规模,因此是此协议最令人不能容忍的问题。现存的网络能够以难以置信的速度
持续增长,我们必须感谢硬件制造商们给了我们比以往更加强大的系统。
2.组件
接下来的几节定义了IRC协议的基本组件
2.1服务器
服务器是IRC的主干,因为它是协议中唯一能够将所有其它组件连接在一起的组件:它
为客户机提供连接的节点以使它们之间进行交谈[IRC-CLIENT],并且提供供其它服务器
连接的节点[IRC-SERVER]。服务器也负责提供IRC协议定义的基本服务。
2.2客户机
任何不是服务器并且连到一个服务器的机器都可以称作客户机。有两种客户机,它们用
于不同的目的。
2.2.1用户客户机
用户客户机一般是提供基于文本界面的程序,程序用来通过IRC进行交流。这种特
殊类型的客户机常被称作“用户机”。
2.2.2服务客户机
不像用户机,服务客户机没有设计为手工作用,也不用于交谈。它们对协议交谈功
能的使用受到更加的限制,却可以随意地使用来自服务器的更加秘密的数据.
服务机是典型的用来向用户机提供各种服务(不必和IRC自身相关)的自动机器。一
个例子是一个收集和IRC网络相连的用户机的来源的统计数据的服务。
3.结构
一组相互连接的服务器就定义了一个IRC网络,一台服务器构成最简单的IRC网络。
对IRC服务器来说,唯一答应的网络结构是一个生成树,每个服务器都作为对它可见的
网络的中心结点。
1--
AD---4
2--//
B----C
/
3E
服务器:A,B,C,D,E客户机:1,2,3,4
[图一小型IRC网络示例]
4.IRC协议服务
这个部分描述了IRC协议提供的服务。这些服务的组合可以实现实时会议。
4.1客户机定位
为了相互交换消息,两个客户机必须能够相互定位对方。
一连上服务器,客户机就注册一个标志,此标志此后被其它服务器和客户机用来定位该客
户机。服务器负责跟踪所有使用的标志。
4.2消息延迟
IRC协议无法提供两台客户机的直接连接,所有客户机间的交流都被服务器延迟
4.3频道收集和治理
一个频道是一个由一个或更多的客户机组成的命名组,这个组中的所有成员都接收发送给
这个频道的消息。一个频道由它的名字和目前的成员来标志,它也有一系列能被它的成员
使用的属性。
频道提供了向多个客户机发送信息的方法。服务器收集频道,提供必须的消息多路技术。服
务器也负责通过跟踪频道成员来治理频道。服务器的确切角色在"InternetRelayChat:
ChannelManagement"[IRC-CHAN]中定义。
5.IRC概念
这个部分专门描述IRC协议组织背后的真实概念,以及不同种类的消息如何被传送。
5.1一对一交流
一对一基础上的交流经常由客户机实现,因为大部分的阻塞是经由服务器进行的交谈。
为了提供一各客户机相互交谈的方法,要求所有服务器能够沿着生成树到达任何客户
机以单向发送消息。因此消息发送路径是生成树上任意两点之间的最短路径。
下面的例子都涉及上面的图一。
例一:1和2之间的消息只同时被服务器A看到,A直接将消息发送给2。
例二:1和3之间的消息同时被服务器A,B和客户机3看到。没有其它客户机或服
务器答应看到此消息。
例三:2和4之间的消息只被服务器A,B,C,D和客户机4看到。
5.2和多个
IRC的方根目的是提供简单有效的会议论坛。IRC提供了许多方法来实现,每个方法
都为各自的目的服务。
5.2.1和一个频道
在IRC里,频道和多播组角色等同,它们都动态生存而且实际上的谈话必须发送到
正支持给定频道上客户机的服务器。还有,消息将向每个本地链接只发送一次,因
为每个服务器都负责散发原始消息以保证它能到达所有收件人。
下面的例子都涉及图二
例四:任何包括客户机一在内的频道。任何发送给该频道的消息到达服务器并且不会
到达其它任何地方。
例五:二个客户机在一个频道里。所有消息经过的路径使它们看起来像频道、之外的
两个客户机之间的秘密消息。
例六:客户机1,2,3在一个频道里。所有发送给该的消息都发送给所有客户机和那些发
送给单个客户机的秘密消息所必须经过的服务器。假如客户机1发送一条消息,它返回
到客户机2然后经由服务器B到达客户机3。
5.2.2向一个主机/服务器掩网
为了提供一种向大量相关客户机发送消息的机制,必须能够向主机/服务器掩网发送消
息。这些消息发送给掩码信息相符的那些主机和服务器。消息只被发送到客户机所在
的特定区域,和频道的方式差不多。
5.2.3向一系列目标
效率最差的一对多谈话方式是客户机向一系列目标谈话(客户机,频道,掩网)。
这种方式的实现是不言自明的:客户机给出消息目的地的列表,服务器将它分解并向
每个目的地发送一份消息拷贝。
这种方式没有频道方式有效率,因为列表可能被破坏而且不能保证沿着每条路径向下
发送每条消息的拷贝。
5.3向所有
一对所有式的消息最好是用广播消息来描述,这种消息是发送给所有客户机或服务
器或两者兼备。在一个包含客户机和服务器的大型网络上,一条消息就能引起大量
堵塞,因为它会努力被发送到所有想达到的目的地。
对某些种类的消息来说,没有其它选择只有向所有服务器广播,这样才能保持各个
服务器保存的状态信息之间的一致性。
5.3.1客户机向客户机
没有哪种消息能够导致来自单一客户机的消息发送给所有其它客户机。
5.3.2客户机向服务器
大部分引起状态信息(比如频道成员人数,频道状态,客户机状态等等)改变的命令
必须缺省地向所有服务器发送,而且这种分发不应被客户机改变。
5.3.3服务器向服务器
尽管大多数服务器之间的消息都向所有其它服务器分发,但只有当消息影响客户机,
频道或服务器时才有必要。因为在IRC里有一些基本的条目,因此几乎所有的来自
服务器的消息都向其它相连的服务器广播。
6当前的问题
这个协议有一些公认的问题,这个部分仅仅讲述那些和协议体系有关的问题。
6.1可用范围
当大范围应用时,此协议用得不太好,这一点已经得到广泛认同。主要原因是所有服务器
都必须知道其它服务器,客户机和频道并且关于它们的信息必须及时更新。
6.2可靠性
因为IRC服务器唯一答应的网络结构是生成树,因此两个服务器之间的连接是明显的而
且很轻易断连。这个问题在“Internet延迟交谈:服务器协议”[IRC-SERVER]中有更加详
细的描述。
6.3网络拥塞
生成树结构引起的问题除了可用范围和可靠性两个问题之外,还有就是使IRC极轻易导
致网络拥塞。这个问题是区域性的,直到下一代才能解决:假如拥塞和高流量导致两个
服务器之间的连接失败,不仅这种失败导致网络拥塞,而且它们之间的重连也将导致更
加严重的网络拥塞。
为了使这个问题的影响减到最小,服务器最好不要自动地太快地尝试重新连接,以避免
使情况恶化。
6.4保密问题
除了不能很好地适用大范围,以及服务器必须知道其它实体的所有信息外,优先级问题
也是引人注目的问题。非凡是对频道,
7.保密
除了6.4节提到的保密问题外,安全和这个文档不相关。
8.目前的支持和获取渠道
IRC相关讨论邮件列表:
一般讨论:irce-user@irc.org
协议开发:ircd-dev@irc.org
实现软件:FTP://ftp.irc.org/irc/server
ftp://ftp.funet.fi/pub/unix/irc
ftp://coombs.anu.edu.au/pub/irc
新闻组:alt.irc
9.感谢
这篇文档部分拷贝自第一次正式发布的IRC协议RFC1459[IRC],它也受益于许多评论
和讨论。非凡是以下人对这篇文档作出了重要贡献:
MatthewGreen,MichaelNeumayer,VolkerPaulsen,KurtRoeckx,Vesa
Ruokonen,MagnusTjernstrom,StefanZehl.
10.参考文献
[KEYWordS]Bradner,S.,"KeywordsforuseinRFCstoIndicate
RequirementLevels",BCP14,RFC2119,March1997.
[IRC]Oikarinen,J.andD.Reed,"InternetRelayChat
Protocol",RFC1459,May1993.
[IRC-CLIENT]Kalt,C.,"InternetRelayChat:ClientProtocol",RFC
2812,April2000.
[IRC-SERVER]Kalt,C.,"InternetRelayChat:ServerProtocol",RFC
2813,April2000.
[IRC-CHAN]Kalt,C.,"InternetRelayChat:ChannelManagement",RFC
2811,April2000.
11.作者地址
ChristopheKalt
99TeaneckRd,Apt#117
RidgefieldPark,NJ07660
USA
EMail:kalt@stealth.net
12.完整版权说明
Copyright(C)TheInternetSociety(2000).AllRightsReserved.
Thisdocumentandtheinformationcontainedhereinisprovidedonan
"ASIS"basisandTHEINTERNETSOCIETYANDTHEINTERNETENGINEERING
TASKFORCEDISCLAIMSALLWARRANTIES,EXPRESSORIMPLIED,INCLUDING
BUTNOTLIMITEDTOANYWARRANTYTHATTHEUSEOFTHEINFORMATION
HEREINWILLNOTINFRINGEANYRIGHTSORANYIMPLIEDWARRANTIESOF
MERCHANTABILITYORFITNESSFORAPARTICULARPURPOSE.
致谢
FundingfortheRFCEditorfunctioniscurrentlyprovidedbythe
InternetSociety.




推荐阅读
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • 本文介绍了游标的使用方法,并以一个水果供应商数据库为例进行了说明。首先创建了一个名为fruits的表,包含了水果的id、供应商id、名称和价格等字段。然后使用游标查询了水果的名称和价格,并将结果输出。最后对游标进行了关闭操作。通过本文可以了解到游标在数据库操作中的应用。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文讨论了在使用Git进行版本控制时,如何提供类似CVS中自动增加版本号的功能。作者介绍了Git中的其他版本表示方式,如git describe命令,并提供了使用这些表示方式来确定文件更新情况的示例。此外,文章还介绍了启用$Id:$功能的方法,并讨论了一些开发者在使用Git时的需求和使用场景。 ... [详细]
  • 好友关系是社交IM中非常重要的一个模块,一般意义上的理解即是成为好友关系以后。才能进行聊天沟通但是对于融云来说只要你给了的userid,我知道了对方的userid就跟 ... [详细]
  • 【web3 职位】做市商 / 加密支付 /defi 套利 /web3 社交
    【web3 职位】做市商 / 加密支付 /defi 套利 /web3 社交 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 单点登录原理及实现方案详解
    本文详细介绍了单点登录的原理及实现方案,其中包括共享Session的方式,以及基于Redis的Session共享方案。同时,还分享了作者在应用环境中所遇到的问题和经验,希望对读者有所帮助。 ... [详细]
author-avatar
核能裸麦_536
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有