为什么Kademlia网络使用UDP?

为什么Kademlia的分布式哈希表使用UDP作为其网络传输协议,即使它是不可靠?

--------------解决方案-------------

主要的原因是您快速查询你从未建立了联系之前,可能永远不会查找过程中再次看到许多节点。

Kademlia的查找是迭代的,即请求将不会被转发。 一个转发DHT会更适合长期TCP连接。

即一大块的流量由一个请求和潜在测距以百万计的网络的节点之间的响应的一个短暂的交换。 的快速建立个TCP连接的开销将是令人望而却步。

为什么UDP? 因为,它是简单,有效和低成本的协议。 它不保证包传送,并且不需要建立恒定连接。 所有这些特点使UDP适合于快速的数据传输给多个接收者。 这就是你需要的P2P应用。

从Kademlia网络的设计规范Сitation:

Kademlia网络的设计者们似乎并没有考虑使用IPv6地址或TCP / IP而不是UDP或具有多个IP地址的节点的Kademlia的可能性。

我必须承认,我没有用过这个产品,但研究它让我觉得我可以回答这个问题。

这似乎是一个最终统一的系统。 这也似乎是一个高性能的系统。 鉴于此,UDP会工作。 没有握手像有是TCP速度非常快。 还有一个校正机构,以便从协议可能损坏被处理。

我们的Kademlia(OpenKad)的版本可以使用TCP或UDP。

Kademlia的是一个高层次的路由协议,因此可以使用两种传输级协议是相同的。 在Kademlia网络部署的查找时间并不好,由于故障丢弃的数据包和超时。 所以表现不是最好的答案。

我知道这很可能带来很多争论,但UDP没有特别设计成不可靠的,它只是缺少的功能,这使得它可靠。 从更高的层次准(如套接字编程)UDP和TCP的外观和感觉很相似,但其实没有可比性。 TCP是专门用来处理运输最相关的问题开箱,其中仅UDP附加端口头和checksome底层IP数据包,而这几乎是它的全部程度的协议。

当然,你能建到和扩大双方的协议。 扩展UDP通常不是正确的解决方案,因为TCP通常处理你的网络需要的,但为数不多的例外之一是当TCP的连接模式过于限制。 这是在P2P网络的情况下,因为TCP被设计为基本上模仿两个端点,其中P2P连接通常共享以上的所有对所有性质之间的异一到一个管。

为了使长话短说,你将要通过添加“可靠性”为UDP或创建一个全对所有的TCP实现在这一点上“重建轮”两种方式。

要回答你的问题的肉(UDP为什么在Kademlia的),我不认为规范实际上解释了为什么对UDP(或不使用TCP),为此我不认为这是一个权威的答案,但我的猜测是该作者是/是,建设到UDP会比试图伸展成TCP方向,它专门设计的目标不是增加更多的灵活性意见。 换句话说,添加到缺乏几乎任何形式的特征VS周围的工作和/或拉伸的另一个现有功能的库。

分类:联网 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.407 (s). 10 q(s)