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

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

 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 回帖

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • Netty

    Netty 是一个基于 NIO 的客户端-服务器编程框架,使用 Netty 可以让你快速、简单地开发出一个可维护、高性能的网络应用,例如实现了某种协议的客户、服务端应用。

    49 引用 • 33 回帖 • 18 关注
  • CentOS

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

    238 引用 • 224 回帖
  • Thymeleaf

    Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。类似 Velocity、 FreeMarker 等,它也可以轻易的与 Spring 等 Web 框架进行集成作为 Web 应用的模板引擎。与其它模板引擎相比,Thymeleaf 最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个 Web 应用。

    11 引用 • 19 回帖 • 320 关注
  • 智能合约

    智能合约(Smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于 1994 年由 Nick Szabo 首次提出。

    1 引用 • 11 回帖 • 11 关注
  • flomo

    flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。

    4 引用 • 88 回帖
  • 生活

    生活是指人类生存过程中的各项活动的总和,范畴较广,一般指为幸福的意义而存在。生活实际上是对人生的一种诠释。生活包括人类在社会中与自己息息相关的日常活动和心理影射。

    228 引用 • 1450 回帖
  • 链书

    链书(Chainbook)是 B3log 开源社区提供的区块链纸质书交易平台,通过 B3T 实现共享激励与价值链。可将你的闲置书籍上架到链书,我们共同构建这个全新的交易平台,让闲置书籍继续发挥它的价值。

    链书社

    链书目前已经下线,也许以后还有计划重制上线。

    14 引用 • 257 回帖
  • 国际化

    i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称。对程序来说,国际化是指在不修改代码的情况下,能根据不同语言及地区显示相应的界面。

    7 引用 • 26 回帖 • 1 关注
  • 外包

    有空闲时间是接外包好呢还是学习好呢?

    26 引用 • 232 回帖 • 1 关注
  • Ubuntu

    Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的 Linux 操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。Ubuntu 的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。

    123 引用 • 168 回帖 • 4 关注
  • OAuth

    OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 oAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 oAuth 是安全的。oAuth 是 Open Authorization 的简写。

    36 引用 • 103 回帖 • 16 关注
  • InfluxDB

    InfluxDB 是一个开源的没有外部依赖的时间序列数据库。适用于记录度量,事件及实时分析。

    2 引用 • 58 关注
  • CAP

    CAP 指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。

    11 引用 • 5 回帖 • 573 关注
  • Dubbo

    Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是 [阿里巴巴] SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。

    60 引用 • 82 回帖 • 610 关注
  • Bug

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

    77 引用 • 1739 回帖 • 1 关注
  • HTML

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

    103 引用 • 294 回帖
  • 资讯

    资讯是用户因为及时地获得它并利用它而能够在相对短的时间内给自己带来价值的信息,资讯有时效性和地域性。

    53 引用 • 85 回帖
  • Flutter

    Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。 Flutter 可以与现有的代码一起工作,它正在被越来越多的开发者和组织使用,并且 Flutter 是完全免费、开源的。

    39 引用 • 92 回帖
  • JRebel

    JRebel 是一款 Java 虚拟机插件,它使得 Java 程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。

    26 引用 • 78 回帖 • 625 关注
  • 音乐

    你听到信仰的声音了么?

    59 引用 • 509 回帖 • 2 关注
  • PostgreSQL

    PostgreSQL 是一款功能强大的企业级数据库系统,在 BSD 开源许可证下发布。

    22 引用 • 22 回帖 • 3 关注
  • Google

    Google(Google Inc.,NASDAQ:GOOG)是一家美国上市公司(公有股份公司),于 1998 年 9 月 7 日以私有股份公司的形式创立,设计并管理一个互联网搜索引擎。Google 公司的总部称作“Googleplex”,它位于加利福尼亚山景城。Google 目前被公认为是全球规模最大的搜索引擎,它提供了简单易用的免费服务。不作恶(Don't be evil)是谷歌公司的一项非正式的公司口号。

    49 引用 • 192 回帖 • 1 关注
  • 职场

    找到自己的位置,萌新烦恼少。

    126 引用 • 1699 回帖
  • 爬虫

    网络爬虫(Spider、Crawler),是一种按照一定的规则,自动地抓取万维网信息的程序。

    106 引用 • 275 回帖
  • FFmpeg

    FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

    22 引用 • 31 回帖 • 7 关注
  • Logseq

    Logseq 是一个隐私优先、开源的知识库工具。

    Logseq is a joyful, open-source outliner that works on top of local plain-text Markdown and Org-mode files. Use it to write, organize and share your thoughts, keep your to-do list, and build your own digital garden.

    4 引用 • 55 回帖 • 6 关注
  • SEO

    发布对别人有帮助的原创内容是最好的 SEO 方式。

    35 引用 • 200 回帖 • 27 关注