点对点 (P2P) 网络与协议/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(客户端到客户端协议)。
在 RFC 1413 中指定了 Ident 协议,它是一种互联网协议,用于帮助识别特定 TCP 连接的用户,并将他们与在服务器上共享相同连接的其他用户区分开来。
Ident 协议的设计目的是作为服务器 守护进程 在用户计算机上运行,它接收发送到指定 端口(通常为 113)的请求。然后,服务器将发送一个专门设计的响应,以标识当前用户的用户名。
大多数独立的 Windows 机器默认情况下都没有运行或存在 Ident 服务,在这种情况下,您可能需要在自己的计算机上运行 Ident 服务器(有几个独立的服务器可用),另一方面,如果您使用的是 Unix/Linux 机器,该服务默认情况下是存在的。一些 Windows IRC 客户端也有内置的 Ident 服务器。
运行 Ident 服务器的原因是 IRC 服务器出于安全原因使用这些信息(这不是一种特别有效的方式),有些服务器甚至会阻止没有 Ident 响应的客户端,主要原因是它使得通过“开放代理”或通过某种形式的单一帐户被入侵的系统连接变得更加困难,但您没有 root 权限。
使用 CTCP,客户端可以实现诸如“ctcp 昵称 版本”或“ctcp 昵称 ping”之类的命令,以获取有关其他用户的一些有趣信息(就像 mIRC 一样)。
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]- EFnet
- Undernet
- Dalnet
- 葡萄牙 IRC 网络 (PTnet) ( http://www.ptnet.org/ ) 是最大的葡萄牙 IRC 网络,成立于 1997 年,您可以获取其服务器的更新列表 ( http://www.ptnet.org/servidores )。
安全风险
[edit | edit source]
软件实现
[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 语言编写。