互联网中继聊天协议(IRC)

本贴最后更新于 4271 天前,其中的信息可能已经沧海桑田

 IRC是Internet Relay Chat的英文缩写,中文一般称为互联网中继聊天。它是由芬兰人Jarkko Oikarinen于1988年首创的一种网络聊天协议。经过十年的发展,目前世界上有超过60个国家提供了IRC的服务。在人气最旺的EFnet上,您可以看到上万的使用者在同一时间使用IRC。很多人称其为继bbs后的一种即时闲聊方式,相比于bbs来说,它有着更直观,友好的界面,在这里你可以畅所欲言、而且可以表现动作化,是故使众多的网虫们留连忘返。 

  相比于ICQ来说,它更具人性化,而且是即时式的聊天,更接近真实的聊天情景。下面看IRC的工作原理。 IRC的工作原理非常简单,您只要在自己的PC上运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器上即可。它的特点是速度非常之快,聊天时几乎没有延迟的现象,并且只占用很小的带宽资源。所有用户可以在一个被称为“Channel(频道)”的地方就某一话题进行交谈或密谈。每个IRC的使用者都有一个Nickname(昵称),所有的沟通就在他们所在的Channel内以不同的Nickname进行交谈。

1. 中转

  理解IRC原理的关键就是理解其"中转"功能。什么是中转呢?我们来做一个比较说明。假设,A与B要交谈。如果不采用中转,那么A直接建立一条到达B的通信隧道,二者通过这条通信隧道进行信息交流,信息流的方向为:A-B和B-A;如果采用中转,则需要有一个第三方来担任中转角色,设为C,A建立一条到达C的通信隧道,B也建立一条到达C的通信隧道,然后A与B通过C来间接进行通信,信息流的方向为:A-C-B和B-C-A。C就起着A与B间的中转站的作用。中转有什么优点呢?中转的最大优点是使“群聊”能够方便地进行。恰当地说,中转模式为信息广播提供了方便。我们来举例子。假设A,B和D三者要一起聊天。如果没有C的中转,那么A要将所说的每句话分别发给B和D;如果有C做中转,那么A将所说的话发给C,然后C将A的话分别发给B和D。可见,当没有中转时,每个参与聊天的计算机都要执行信息广播的任务,当存在中转时,信息广播的任务全由中转者来执行。中转站C的存在使得信息交流过程中的工作任务发生分离,可以把网络环境好、机器配置高的计算机作为中转站来提供服务功能。这就形成了IRC的服务器-客户端模型,聊天者作为客户端,连接到中转站服务器上。

2. 服务器网络

  在上面的例子里,只有一个中转者C来承担服务。当聊天者数量很多时,会使C不堪重负。解决的办法是,使用多个服务器,服务器之间互相连接成网络,把聊天者分散到各个服务器上。服务器网络以树型结构互相连通。聊天者可以任选一个服务器连接。举例来说,在北京建立一个IRC服务器,称为BJ,在上海建立一个IRC服务器,称为SH,然后将BJ和SH连接起来,组成一个只有两个服务器的IRC网络。北京的用户连接到BJ上,上海的用户连接到SH上,这样北京的用户就可以与上海的用户聊天了。其他地区的用户可以根据地理位置的远近选择使用BJ或SH服务器。概括地说,聊天网络上的每个服务器都是一个中转站,当它从一个服务器或客户收到一条消息时,就将该消息转发给其它服务器,同时也根据具体情况,决定是否将消息转发给连接到自己的用户。

3. 频道

  频道的本质是广播组。用户可以进入一个频道,也可以离开一个频道。当一个用户朝频道说话时,频道里的其他用户都能收到他的话(由服务器中转)。当第一个用户进入频道时,频道被创建,当最后一个用户离开频道时,频道被取消。因此,从用户的角度看,频道就是聊天室。下面说说频道之所以被称为“频道”的原因。如果一个聊天网络有多个服务器,频道要由服务器共同维护。举一个例子。有三个服务器,连接方式为A-B-C。在服务器A上,有第一个用户进入#IRC频道,这时,服务器A上即创建频道"#IRC",A将频道"IRC"的创建消息发给B和C。由于B和C上都没有用户位于#IRC频道,因此不执行任何操作。在这以后,服务器C上有一个用户进入#IRC频道,此时服务器C上也创建频道"#IRC",C将"#IRC"的创建消息发给A和B。之后,需要执行以下操作:B上建立频道"#IRC"并将A与C的"#IRC"频道连接起来,组成一个统一的#IRC。现在,虽然B上没有用户位于#IRC频道内,但是B上也开通了#IRC频道。可见,频道好像一条通信管道,将所有开通此频道的服务器贯穿起来,信息流在这个管道中流通。

4. 请求与应答

  IRC上的信息交流采用请求与应答的模式。请求是由服务器或客户端发出的,其目的是请求(另)一个服务器执行某个操作或提供某些信息;应答是服务器对一个请求的回应信息。请求通常被称为命令;由于对每种应答都规定了一个三位数字做标识,应答也称为数字应答(numeric reply)。

 

转自:http://202.194.28.9:8002/jxzy/refs/htmlfiles/protocol/protocol00055.htm

  • IM
    7 引用 • 15 回帖
  • IRC
    3 引用 • 15 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • 安全

    安全永远都不是一个小问题。

    199 引用 • 816 回帖 • 1 关注
  • Telegram

    Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。

    5 引用 • 35 回帖 • 1 关注
  • 百度

    百度(Nasdaq:BIDU)是全球最大的中文搜索引擎、最大的中文网站。2000 年 1 月由李彦宏创立于北京中关村,致力于向人们提供“简单,可依赖”的信息获取方式。“百度”二字源于中国宋朝词人辛弃疾的《青玉案·元夕》词句“众里寻他千百度”,象征着百度对中文信息检索技术的执著追求。

    63 引用 • 785 回帖 • 175 关注
  • Git

    Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    209 引用 • 358 回帖
  • 大疆创新

    深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。

    2 引用 • 14 回帖
  • GitLab

    GitLab 是利用 Ruby 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面操作公开或私有项目。

    46 引用 • 72 回帖
  • Notion

    Notion - The all-in-one workspace for your notes, tasks, wikis, and databases.

    6 引用 • 38 回帖
  • 书籍

    宋真宗赵恒曾经说过:“书中自有黄金屋,书中自有颜如玉。”

    77 引用 • 390 回帖
  • IDEA

    IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。

    180 引用 • 400 回帖
  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖 • 19 关注
  • 小说

    小说是以刻画人物形象为中心,通过完整的故事情节和环境描写来反映社会生活的文学体裁。

    28 引用 • 108 回帖 • 1 关注
  • Bug

    Bug 本意是指臭虫、缺陷、损坏、犯贫、窃听器、小虫等。现在人们把在程序中一些缺陷或问题统称为 bug(漏洞)。

    75 引用 • 1737 回帖 • 5 关注
  • Kafka

    Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是现代系统中许多功能的基础。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。

    36 引用 • 35 回帖
  • sts
    2 引用 • 2 回帖 • 196 关注
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 62 关注
  • JetBrains

    JetBrains 是一家捷克的软件开发公司,该公司位于捷克的布拉格,并在俄国的圣彼得堡及美国麻州波士顿都设有办公室,该公司最为人所熟知的产品是 Java 编程语言开发撰写时所用的集成开发环境:IntelliJ IDEA

    18 引用 • 54 回帖
  • GAE

    Google App Engine(GAE)是 Google 管理的数据中心中用于 WEB 应用程序的开发和托管的平台。2008 年 4 月 发布第一个测试版本。目前支持 Python、Java 和 Go 开发部署。全球已有数十万的开发者在其上开发了众多的应用。

    14 引用 • 42 回帖 • 764 关注
  • TensorFlow

    TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。

    20 引用 • 19 回帖
  • CentOS

    CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同在于 CentOS 并不包含封闭源代码软件。

    238 引用 • 224 回帖
  • RESTful

    一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    30 引用 • 114 回帖 • 2 关注
  • 友情链接

    确认过眼神后的灵魂连接,站在链在!

    24 引用 • 373 回帖
  • 负能量

    上帝为你关上了一扇门,然后就去睡觉了....努力不一定能成功,但不努力一定很轻松 (° ー °〃)

    88 引用 • 1235 回帖 • 411 关注
  • WebClipper

    Web Clipper 是一款浏览器剪藏扩展,它可以帮助你把网页内容剪藏到本地。

    3 引用 • 9 回帖
  • IPFS

    IPFS(InterPlanetary File System,星际文件系统)是永久的、去中心化保存和共享文件的方法,这是一种内容可寻址、版本化、点对点超媒体的分布式协议。请浏览 IPFS 入门笔记了解更多细节。

    21 引用 • 245 回帖 • 241 关注
  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    729 引用 • 1327 回帖
  • HTML

    HTML5 是 HTML 下一个的主要修订版本,现在仍处于发展阶段。广义论及 HTML5 时,实际指的是包括 HTML、CSS 和 JavaScript 在内的一套技术组合。

    107 引用 • 295 回帖
  • GraphQL

    GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL 并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑。

    4 引用 • 3 回帖 • 9 关注