2012-04-21 52 views

回答

9

主要原因是您快速查詢您從未與之建立過聯繫的許多節點,並且在查找過程中可能再也不會再查看。

Kademlia查找是迭代的,即請求不會被轉發。轉發DHT將更適合長期的TCP連接。

I.e.很大一部分流量包含一個網絡節點之間的短暫交換請求和響應,潛在的成本可能在幾百萬。快速建立數以千計的TCP連接的開銷將是令人望而卻步的。

5

爲什麼選擇UDP?因爲它是簡單,有效和低成本的協議。它不保證包裹的交付,也不需要建立一個持續的連接。所有這些功能使得UDP適合於向多個收件人快速傳送數據。這就是你所需要的P2P應用程序。

Сitation從Kademlia網絡的設計規格:

的Kademlia的設計師們似乎並沒有考慮使用IPv6地址或TCP/IP而不是UDP或具有多個IP地址的Kademlia的節點的可能性。

3

我必須承認,我沒有使用過這種產品,但研究它讓我覺得我可以回答這個問題。

它似乎是一個最終一致的系統。它也似乎是一個高性能系統。鑑於此,udp會起作用。沒有像tcp那樣的握手,所以它很快。還有一個更正機制,以便處理來自協議的可能的破壞。

2

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

Kademlia是一種高級路由協議,因此與兩種傳輸級協議的工作原理相同。 Kademlia部署中的查找時間並不是那麼好,因爲失敗的數據包丟失和超時。所以表現不是最好的答案。

0

我知道這可能會引起很多爭議,但UDP並非專門設計爲不可靠,它只是缺乏使其可靠的功能。從更高層面來看,前瞻性(如套接字編程)UDP和TCP的外觀和感覺非常相似,但實際上沒有可比性。 TCP旨在處理大多數與運輸相關的問題,其中UDP僅附加端口標頭並對底層IP數據包進行檢查,而這幾乎是作爲協議的全部範圍。

當然,您可以構建和擴展兩種協議。擴展UDP通常是而不是是正確的解決方案,因爲TCP通常可以處理網絡中需要的所有功能,但少數例外情況之一是TCP連接模型太有限。在p2p網絡中就是這種情況,因爲TCP旨在基本上模擬兩個端點之間的專用一對一管道,其中p2p連接通常具有更全面的性質。爲了長話短說,在這一點上,您要麼以任何方式「重建車輪」,要麼通過向UDP添加「可靠性」,要麼通過創建全部到所有TCP實現。爲了回答你的問題(爲什麼UDP在Kademlia)我不認爲規範實際解釋了爲什麼要UDP(或不使用TCP),因此我不認爲有一個權威的答案,但我的猜測是,作者認爲,構建到UDP將增加更多的靈活性,而不是試圖將TCP拉向專門沒有設計的方向。換句話說,添加到實際上幾乎沒有任何形式的特徵VS工作和/或拉伸另一特徵的庫中。

相關問題