跳转到内容

点对点 (P2P) 网络与协议/IRC 世界

来自维基教科书,开放的书籍,开放的世界

互联网中继聊天 (IRC)

[编辑 | 编辑源代码]

互联网中继聊天,通常缩写为 IRC 是一种实时基于文本的多用户通信协议规范和实现;它在网络上中继用户之间的消息。 IRC 的诞生可以追溯到 1988 年,由 Jarkko Oikarinen 构思。根据 IRChelp.org(http://www.irchelp.org/irchelp/rfc/),IRC 的官方规范是在 1993 年以 RFC 格式编写的。该协议定义在“RFC 1459:互联网中继聊天协议”中,这是一个非常优秀的介绍 IRC 协议的资料来源。

IRC 最大的架构单元是 IRC 网络。世界上可能有数百个 IRC 网络,每个网络都并行运行且相互独立。连接到一个网络的客户端只能与同一个网络上的其他客户端通信,而不能与其他网络上的客户端通信。每个网络都包含一个或多个 IRC 服务器。IRC 客户端是一个程序,它连接到给定的 IRC 服务器,以便该服务器将通信中继到同一个网络上的其他客户端,但并不一定是在同一个服务器上。

IRC 上的消息以块的形式发送。也就是说,其他 IRC 客户端不会看到一个人在打字和编辑时的情况。一个人创建一个消息块(通常只是一句话),然后一次性传输该块,该块被服务器接收,并根据地址将其传递给相应的客户端,或将其中继到其他服务器,以便再次传递或中继,等等。要了解 IRC 网络上交换的消息,您可以查看(http://www.alien.net.au/irc/irc2numerics.html),它清楚地标识了多个实现和功能。

连接到服务器后,可以通过 IRC 昵称 对其他客户端进行寻址。昵称只是一个唯一的 ASCII 字符串,用于识别特定客户端。虽然实现方式各不相同,但对昵称的限制通常规定它们只能由字符 a-z、A-Z、0-9、下划线和连字符组成。

IRC 中的另一种寻址方式,可以说是它的一个定义特征,是 IRC 频道。IRC 频道通常与 CB 无线电(公民无线电)频道相比。在 CB 无线电中,一个人被认为是在“收听”一个频道,而在 IRC 中,一个人的客户端被认为是“加入”了该频道。发送到该频道的任何通信都会被客户端“听到”或看到。另一方面,同一个网络或同一个服务器上的其他客户端,但不在同一个频道上的客户端,将不会看到发送到该频道的任何消息。

可以在 IRC.org 上获取有关 IRC 的最新信息,以及对 IPv6 的支持和新的技术论文,IETF(互联网工程任务组)批准了最新的技术草案(2000 年 4 月 - 作者为 C Kalt)。

     RFC 2810 : IRC Architecture
     RFC 2811 : IRC Channel-Management
     RFC 2812 : IRC Client-Protocol
     RFC 2813 : IRC Server-Protocol

这些文档已在 IRC.org 的官方 FTP 服务器上提供,可以访问 ftp://ftp.irc.org/irc/server

虽然 IRC 按定义不是一个 P2P 协议,但 IRC 确实有一些扩展可以支持直接从客户端到客户端传输文本和文件,而无需任何中继。这些扩展被称为 DCC(直接客户端到客户端)和 CTCP(客户端到客户端协议)。

Ident 协议

[编辑 | 编辑源代码]

RFC 1413 中指定了 Ident 协议,它是一种互联网协议,用于帮助识别特定 TCP 连接的用户,并将他们与在服务器上共享相同连接的其他用户区分开来。

Ident 协议的设计目的是作为服务器 守护进程 在用户计算机上运行,它接收发送到指定 端口(通常为 113)的请求。然后,服务器将发送一个专门设计的响应,以标识当前用户的用户名。

大多数独立的 Windows 机器默认情况下都没有运行或存在 Ident 服务,在这种情况下,您可能需要在自己的计算机上运行 Ident 服务器(有几个独立的服务器可用),另一方面,如果您使用的是 Unix/Linux 机器,该服务默认情况下是存在的。一些 Windows IRC 客户端也有内置的 Ident 服务器。

运行 Ident 服务器的原因是 IRC 服务器出于安全原因使用这些信息(这不是一种特别有效的方式),有些服务器甚至会阻止没有 Ident 响应的客户端,主要原因是它使得通过“开放代理”或通过某种形式的单一帐户被入侵的系统连接变得更加困难,但您没有 root 权限。

DCC (直接客户端连接) 协议

[编辑 | 编辑源代码]
Clipboard

待办事项
添加缺失的信息


CTCP (客户端到客户端协议) 协议

[编辑 | 编辑源代码]

使用 CTCP,客户端可以实现诸如“ctcp 昵称 版本”或“ctcp 昵称 ping”之类的命令,以获取有关其他用户的一些有趣信息(就像 mIRC 一样)。


Clipboard

待办事项
添加更多信息


机器人

[编辑 | 编辑源代码]

IRC 系统也支持(r)机器人,在这种情况下,它们不是真正的用户,而是一组从脚本(文本)文件中加载到 IRC 客户端的命令,甚至是一个连接到 IRC 频道的独立程序。它们的作用是简化人机交互,提供某种自动化,甚至测试或实现某种 AI。

基本命令

[编辑 | 编辑源代码]

以下是一些 IRC 的基本命令

命令 功能 示例
/attach

/server

登录服务器 /attach irc.freenode.net

/server irc.freenode.net

/nick 设置您的昵称 /nick YourName
/join 加入频道 /join #wikibooks
/msg 发送消息(可以是私信,也可以是发送到整个频道) 向频道发送消息:/msg #wikibooks hello world!

发送私信:/msg JohnDoe Hi john.

/whois 显示服务器上某个用户的相关信息 /whois JohnDoe
/clear

/clearall

清除频道的文本。

清除所有打开的频道的文本。

/clear

/clearall

/away 设置离开信息。注意:再次键入 /away 可从离开状态返回。 /away I'm away because...
/me 向频道发送动作。请参阅示例。 以下

/me loves pie.

如果 JohnDoe 执行此操作,则会在聊天中显示为

JohnDoe loves pie.

特权用户命令

[编辑 | 编辑源代码]

半操作员、频道操作员、频道所有者和管理员的命令

命令 功能 示例
/kick 踢出或将用户从频道中逐出。您必须是半操作员或更高权限才能执行此操作。 将用户从频道踢出并附带原因:/kick JohnDoe I kicked you because...
/ban

/unban

禁止用户进入频道。您必须是频道操作员或更高权限才能执行此操作。

取消对用户的频道禁令。您必须是频道操作员或更高权限才能执行此操作。

/ban JohnDoe

/unban JohnDoe

IRC 网络

[edit | edit source]

安全风险

[edit | edit source]
Clipboard

待办事项
添加缺失的信息


软件实现

[edit | edit source]
  • KVIrc ( http://www.kvirc.net/ ) 是一款基于 Qt GUI 工具包并使用 C++ 编写的开源 (GPL) 便携式 IRC 客户端。
  • Bersirc ( http://bersirc.free2code.net/index.php/home/ ),一款使用 C 语言编写的开源 IRC 客户端 (LGPL),运行于 Windows (Linux 和 Mac OS X 端口正在开发中),并利用 Claro GUI 工具包。
  • XChat ( http://www.xchat.org/ ) 是一款适用于 Windows 和 UNIX (Linux/BSD) 操作系统的 IRC (聊天) 程序。 IRC 代表 Internet Relay Chat。XChat 在大多数 BSD 和 POSIX 兼容的操作系统上运行。开源 (GPL),使用 C 语言编写。
  • Irssi ( http://irssi.org/ ),一款 IRC 客户端程序,最初由 Timo Sirainen 编写,并根据 GNU 通用公共许可证条款发布。它使用 C 编程语言编写,在正常操作中使用文本模式用户界面。
  • mIRC ( http://www.mirc.co.uk/ ),一款为 Windows 设计的共享软件 Internet Relay Chat 客户端,由 Khaled Mardam-Bey 于 1995 年创建并开发。最初它只用于此目的,但由于其集成的脚本语言,它已经发展成为一个可以用于多种目的的高可配置工具。

您还可以查看维基百科 IRC 客户端列表Internet Relay Chat 客户端比较 (未更新)...

隐形 IRC 项目

[edit | edit source]

由 invisibleNET 创建的,与普通 IRC 网络相关的技术进步,invisibleNET 是一家以研发为主导的组织,其主要重点是智能网络技术的创新。其目标是在广泛使用但安全性 notoriously 低的互联网上提供最高的安全和隐私标准。

隐形 IRC 项目 (http://invisibleip.sourceforge.net/iip/) 是一个三层,对等分布式网络,旨在成为一种安全且私密的传输介质,用于高速、低容量、动态内容。 特征

  • 使用 Diffie-Hellman 密钥交换协议的完美前向安全性
  • 持续的会话密钥轮换
  • 128 位 Blowfish 节点到节点加密
  • 160 位 Blowfish 端到端加密
  • 填充流量以阻止流量分析
  • 使用加密签名命名空间进行节点识别的安全动态路由
  • 节点级泛洪控制
  • 无缝使用标准 IRC 客户端
  • GUI 界面
  • 对等分布式拓扑结构,用于保护用户身份
  • 完全模块化设计,所有协议都支持插件

IIP 软件根据 GPL 许可证发布,可用于 Windows 98/ME/NT/2000/XP、*nix/BSD 和 Mac OSX,使用 C 语言编写。

华夏公益教科书