RFC 2810说明以下关于一对一的沟通:
一对一的沟通通常由客户进行,
因为大多数服务器 - 服务器流量不是服务器通话的结果 只有彼此。为客户提供与每个人交谈的手段 另外,所有服务器都必须能够发送消息 沿着生成树的正好一个方向,以便到达任何
客户。因此,传递的消息的路径是最短的 生成树上任意两点之间的路径。
(强调我的。)
这是什么"一个方向"意思?只有一个客户?这个"如何到达任何客户"并找到"任意两点之间的最短路径[IRC网络上的主机]"? 为什么不简单地削减垃圾并存储客户端的IP地址并让IP完成其工作?毕竟,IRC建立在TCP / IP 之上。
答案 0 :(得分:4)
约翰内斯暗示了解决方案,但没有完全回答你的问题。然而,他是正确的,图论是答案的很大一部分。
由于EFnet和IRCnet的服务器映射中的每个子节点只有一个父节点,因此最短路径是图上两个服务器之间的唯一路径;没有回溯,相同的顶点不能被访问两次。这称为生成树,其中所有节点都已连接,但不存在循环。
IRC不一定像TCP / IP那样unicast。它通过广播与不同服务器上的多个客户端通信。需要注意的重要一点是,客户说“向'所有人”发送'发送',并且消息从客户端传送到连接的服务器。该服务器将消息传递给任何连接的服务器,这些服务器将其传递给订阅#coding的任何客户端,然后传递给任何连接的服务器。
没有什么比'客户到客户'的沟通更真实;通过向具有指定名称的用户发送消息来实现一对一;不是IP地址。 NickServs有助于防止人们劫持名称,暂时将昵称与IP关联,拒绝验证其他IP地址,以及在身份验证到期时使用密码保护昵称。
与发送频道消息的方式大致相同,用户向服务器发送消息'发送'hi'到@nicky',服务器只是传递此消息,直到列出客户端@nicky作为连接到接收消息的服务器的客户端。 Bots为@nicky提供了一种在离线时接收消息的方法;他们以用户名登录。
编辑:IRC实际上打开了一个仅限邀请的个人频道,用于客户端 - 客户端通信。
基本上,最短路径保证是IRC广播策略的结果;消息在所需用户的服务器附近传播的那一刻,它被转发给所需的用户。如果服务器图中的是循环,则时间戳可能会阻止回显消息。
在架构部分,我们发现有正确意义上使用“生成树”的证据。服务器彼此意识到阻止循环(保证最短路径)并有效连接:
6.1可伸缩性
人们普遍认为该协议不能扩展 在大型舞台上使用时足够好。主要问题来了 从所有服务器了解所有其他服务器的要求, 客户和渠道以及有关它们的信息将得到更新 一旦它改变。
以下这个是没有备用路径/绕路的结果
6.3网络拥塞
另一个与可伸缩性和可靠性问题相关的问题,如 以及生成树架构,是协议和 IRC的架构非常容易受到网络拥塞。
IRC网络被设计为与IP无关,并遵循最短路径,因为消息传播整个图形,当它们到达端点时停止。客户端和服务器有足够的信息来丢弃重复的广播。 IRC是一种非常简单但有效的聊天协议,不会对安全性,IP或硬件做出任何假设。您可以使用联网电报机连接到IRC。
答案 1 :(得分:2)
每个IRC服务器都连接到同一网络中的一个或多个服务器。客户端连接到其中一个服务器。我们假设我们有以下设置:
A / \ B C / / \ D E F
假设服务器 A 上的客户端想要向服务器 E 上的用户发送消息。在这种情况下,服务器 A 仅向服务器 C 发送消息,该消息会将此消息发送到服务器 E ,但不会发送到 ˚F强>
如果 A 上的客户向服务 B 且 E 上的用户发送消息,则 A 会将消息发送到服务器 B 和 C 。 B 会将消息发送给该频道中连接到 B 的用户, C 会将消息发送到服务器 E < / strong>,它会将消息发送给该频道的客户端。
服务器 D 和 F 将永远不会看到该消息,因为该频道中没有人与他们相关联,但 C 会看到该消息如果该频道中没有人连接到 C ,因为它必须依赖该信息 E