Basit bir ifadeyle, bir BitTorrent istemcisi başlangıçta DHT kullanan eşleri nasıl bulur?


45

Bu Süper Kullanıcı cevabını ve bu Vikipedi makalesini zaten okudum, ancak ikisi de kafamı gerçekten sarmak için fazla teknik.

Bir izleyici fikrini anlıyorum: istemciler bir gruptaki eş listesini tutan merkezi bir sunucuya bağlanıyor.

Aynı zamanda akran değişimi fikrini de anlıyorum: Sürüdeki müşteriler, akranlarının tam listesini birbirine gönderir. Yeni eş keşfedilirse listeye eklenirler.

Sorum şu: DHT nasıl çalışır? Yani, yeni bir müşteri, bir izci olmadan veya sürünün en az bir üyesinin bilgisi olan akranlarla değiş tokuş yapmadan nasıl bir sürüye katılabilir?

(Not: basit açıklamalar en iyisidir.)

Yanıtlar:


48

özet

Yeni bir müşteri, bir izci olmadan veya sürünün en az bir üyesinin bilgisi olan akranlarla değiş tokuş yapmadan nasıl bir sürüye katılabilir?

Yapamazsın Bu imkansız.*

* ( Yerel alan ağınızdaki bir düğüm DHT'de zaten bir düğüm olmadıkça . Bu durumda, bu eşi "keşfetmek" ve onlardan önyükleme yapmak için Avahi gibi bir yayın mekanizması kullanabilirsiniz. kendileri önyükler mi? Sonunda, kamuya açık internete bağlanmanız gereken bir duruma varacaksınız. Ve kamuya açık internet çok noktaya yayın değil, çok noktaya yayın değil, bu nedenle önceden belirlenmiş meslektaş listelerini kullanmak zorunda kalıyorsunuz.)


Referanslar

Bittorrent DHT , Dağıtık bir hash tablosunun özel bir teorik konsepti olan Kademlia olarak bilinen bir protokol ile gerçekleştirilir .


sergi

Kademlia protokolü ile ağa katıldığınızda, önceden DHT ağına katılan en az bir düğümün IP adresini ve portunu bilmenizi gerektiren bir ön yükleme prosedüründen geçersiniz. Bağlandığınız izleyici, örneğin, DHT düğümü olabilir. Bir DHT düğümüne bağlandıktan sonra, daha fazla düğüm için bağlantı bilgisi sağlayan DHT'den bilgi indirmeye devam edersiniz ve daha sonra her ikisini de sağlayabilen daha fazla düğüme bağlantı elde etmek için bu "grafik" yapısına gidersiniz. diğer düğümlere bağlanabilirlik ve veri yükü verileri (indirme işleminin parçaları).

Ben kalın gerçek soru düşünüyorum - bilmeden Kademlia DHT ağına katılmaya nasıl olduğunu herhangi diğer üyeleri - bir yanlış varsayım üzerine kuruludur.

Kalın yazdığınız sorunuzun basit cevabı, siz istemezsiniz . DHT meta verisi içerebilecek bir ana bilgisayar hakkında bile HERHANGİ bir bilgi bilmiyorsanız, sıkışmışsınızdır - başlayamazsınız bile. Tabii ki, DHT bilgilerini yayınlamak için açık bir port ile halka açık internette bir IP bulma girişiminde zorlanmaya çalışabilirsiniz. Ancak daha büyük olasılıkla BT istemciniz, yalnızca DHT meta verilerini sağlayan kararlı bir DHT düğümüne çözümlenen belirli bir statik IP veya DNS'ye kodlanmıştır.

Temelde, DHT yalnızca katılmadan mekanizması olarak merkezi olmadığı ve birleştirme mekanizması oldukça kırılgan olduğu için zorunda (! Tamamını internet üzerinden "yayına" için hiçbir yolu yoktur tek noktaya DHT, bireyin önceden atanmış ana bilgisayara veri), Kademlia DHT'nin gerçekten yerelleştirilmemiş olması. Kelimenin tam anlamıyla değil.

Bu senaryoyu hayal edin: P2P'nin durmasını isteyen biri dışarı çıkıyor ve önyükleme için kullanılan tüm yaygın DHT düğümlerine bir saldırı hazırlıyor . Saldırılarını düzenledikten sonra, aynı anda tüm düğümlere yaylar . Wham ; her bir önyükleme DHT düğümü tek bir dokunuşta düştü. Şimdi ne olacak? Bunlardan geleneksel akran listelerini indirmek için merkezileştirilmiş izleyicilere bağlanma konusunda sıkıştınız . Eğer izleyicilere de saldırırlarsa, sen gerçekten, gerçektenbir dereye kadar. Başka bir deyişle, Kademlia ve BT ağının tamamı, İnternet’in sınırlamaları ile sınırlandırılmıştır; kullanıcıların ağa bağlanmasından.

"Sözde merkezileştirilmiş" önyükleme düğümlerinin hepsi gittiğinde, DHT'nin dış düğümleri hakkında hiçbir şey bilmediği için DHT'nin iç düğümleri önyükleme yapmıyor ; DHT'ye yeni düğümler getiremezler. Bu nedenle, her bir iç düğüm zaman içinde DHT'den ayrıldıklarında, ya insanları bilgisayarlarını kapattıkları, güncellemeler için yeniden başlatılanlar vb. Nedeniyle, ağ çökecek.

Elbette, bunun üstesinden gelmek için, birisi önceden belirlenmiş kararlı DHT düğümlerinin veya DNS adreslerinin yeni bir listesiyle yamalı bir BitTorrent istemcisini dağıtabilir ve bunun yerine bu yeni listeyi kullanmak için yüksek sesle P2P topluluğuna reklam verebilir. Ancak bu, saldırganın (düğüm yiyen kişinin) bu listeleri kendiliğinden indireceği ve cesur yeni bootstrapping düğümlerini hedef aldığı ve ardından çevrimdışı hale getirdiği "köstebek saldırısı" durumudur.


DHT'yi tarif etme yönteminiz eş değişimi ile aynıdır.
Celeritas

DHT hakkında dağıtılan şey , gerçek veri yükünün - yani, dosyaların indirilebileceği IP'lerin ve bağlantı noktalarının - listesinin dağıtıldığıdır. Bir eş değişiminde, listenin tamamı bir bilgisayarda, genellikle izleyicide depolanır ve bir dosya indirme işleminden farklı olarak indirilir. Cevabımda bu sorunun (ve cevapların) sadece DHT ağının ilk keşfedilmesi veya katılması ile ilgili olduğunu söyleyebilirim .
allquixotic

1
Tüm önyükleme düğümlerine basmak, yeni kullanıcıların önyüklemelerini durdurur, ancak çevrimdışı olan ve sonra geri dönen var olan kullanıcılar gerekmez. Birçok müşterinin aktif düğüm setlerini hatırladıkları ve her seferinde önyükleme yapmak yerine tekrar bağlanmak için kullandıkları izlenimini edindim.
clacke

Masscan ( github.com/robertdavidgraham/masscan ) gibi projelerle merkezi bir dizin olmadan DHT düğümlerini keşfetme mümkün olmalı
newlog

19

Kısa cevap: .torrent dosyasından alır.

Bir BitTorrent istemcisi , bir izleyicisiz .torrent dosyası oluşturduğunda (yani, birisi BitTorrent aracılığıyla yeni bir şey paylaşmaya hazırlanırken), bir "düğüm" anahtarı ekler ("anahtar / değer çiftinde" olduğu gibi; bölüm başlığı gibi, şifreli bir anahtar değil) bu müşterinin bildiği en yakın DHT düğümünü içeren .torrent dosyasına.

http://www.bittorrent.org/beps/bep%5F0005.html#torrent-file-extensions

İzleyici olmayan bir torrent sözlüğünde bir "anons" tuşu yoktur. Bunun yerine, izleyici olmayan bir torrentin bir "düğüm" anahtarı var. Bu anahtar, torrent oluşturma istemcisinin yönlendirme tablosundaki en yakın K düğümüne ayarlanmalıdır. Alternatif olarak, anahtar, sel oluşturan kişi tarafından işletilen gibi iyi bilinen bir düğüme ayarlanabilir. Lütfen torrent dosyalarına otomatik olarak "router.bittorrent.com" eklemeyin veya bu düğümü istemcilerin yönlendirme tablolarına otomatik olarak eklemeyin.

Bu nedenle, BitTorrent istemcinizi indirmek istediğiniz izleyicisiz bir torrent dosyasının .torrent dosyasını beslediğinizde, ilk birkaç DHT düğümünü bulmak için .torrent dosyasındaki bu "düğüm" anahtarının değerini kullanır.


3
Bu iyi, açıklayıcı bir bilgidir. Sanırım cevabınız mevcut BitTorrent istemcilerinin cevabımda tanımlanan teorik kısıtlamaları ve sorunları çözmek için ne yaptığını açıkladığını düşünüyorum . Umarım cevabın farklı yönlerini açıkladıkları için her iki cevabımız da yenilenir.
allquixotic

3
Bu yüzden birçok istemcideki "torrenti indiren yeni torrent dosyasını birleştir" in ölü bir torrenti canlı hale getirmesini sağlıyor mu?
Jesvin Jose

2
@aitchnyu evet, ancak torrent dosyasının da ek / farklı izleyicileri olabilir.
longneck

2
Hiçbir BitTorrent istemcisinin gerçekte düğüm bilgisini içermediği anlaşılmaktadır. Transmission, Vuze, Deluge, Mainline ve diğerlerini test ettim.
Aeyoun

1

yapamazsın! sürünün birinin en az bir IP'sini bilmeniz gerekir, bu bir p2p ağının zayıflığıdır. İlk IP'yi bulmak için körü körüne yayın yapabilirsiniz, ancak eğer herkes bunu yapıyorsa büyük bir ağda tıkanıklık sorunu yaşayacağız. Önbellek kullanabilirsiniz, ancak yalnızca büyük sürüler için mümkündür (daha büyük eş adres önbelleği). Yalnızca ilk IP'yi sormak için her zaman bir izleyici bağlamak zorundasınız.

DHT'de dağıtılan istemcilerin, paylaşılan dosya adının md5 toplamını içeren tüm listeyi karşılık gelen eşlerle tutmak zorunda olmadıkları anlamına gelir. Karma listesi, eşit parçalara ayrılmıştır ve sürünün üzerinde fazlalık olmasıyla dağılmıştır. Eğer bir akran bağlantısı kesilirse, hashlistin aynı kısmı olan başka bir yer vardır. Akranlar, diğerlerini adresi, hashlist kısmın iyi sahibi ile paylaşırlar.

torrent-freak bu konuda bir mesaj yazdı


0

Yeni bir müşteri, bir izci olmadan veya sürünün en az bir üyesinin bilgisi olan akranlarla değiş tokuş yapmadan nasıl bir sürüye katılabilir?

Bunu ister.

DHT'yi destekleyen Bittorrent istemcileri iki ayrı eşler arası uygulama çalıştırır.

İlki dosya paylaşımını gerçekleştirir: bittorrent lingo içindeki bir sürü , bir bittorrent nesnesini (örneğin bir dosya veya dizin yapısı) paylaşan bir grup eş. Her bittorent nesnesinin bir .torrent dosyasına kaydedilen bazı meta verileri vardır. (Nesne boyutu, klasör adı, muhtemelen izci bilgileri veya düğümleri içerir. Vb.) Bu bittorrent nesnesini indirmek için gereken meta verilerin karması infohash olarak adlandırılır.

DHT, temel olarak, izleyicileri değiştirmeyi amaçlayan ikinci bir P2P uygulamasıdır: Duyuru mesajları alırsa, çiftlerini (infohash, swarm) depolar ve sürüyü günceller. Yeni bir müşteri, DHT hakkındaki bilgileri önyüklemek için bazı "düğüm" (DHT'nin eşi için bittorrent lingo) bilgisine sahip olmalıdır. Burada @ allquixotic tarafından verilen argümanlar geçerlidir. MDHT şu anda 7 milyondan fazla akrandan oluştuğundan, sürekli bir hizmet reddi saldırısı olasılığı düşük görünmektedir.

Daha sonra DHT'yi infohash'a göre sorgulayabilir ve bir izleyici kullanmak zorunda değildir veya daha önce sürünün bir parçası olan bir eş bilmek zorunda değildir. Temas ettiği eşlerden biri meta veri paylaşımını destekliyorsa , yalnızca infohash'ın .torrent dosyasını sürüden alabilmesi gerekir.


0

Çoğu p2p ağ istemcisi, başlangıçta bağlandıkları bir tohum grubu listesinden önyüklenir ... bir bootstrapped eşine bağlandıktan sonra geri kalanını dağıtılmış şekilde indirir. Önyükleme eşine bağlanır ve DHT eş listesini indirir ve sonra bunların her birine gider ve aynısını yapar.

Örneğin:

Önyükleme düğümlerinin bir listesi:

https://github.com/dontcontactme/p2pspider/blob/master/lib/dhtspider.js#L10

Müşterinin eş listesini nemlendirmek için onlara bağlandığı yer:

https://github.com/dontcontactme/p2pspider/blob/master/lib/dhtspider.js#L60

Bu, bir izleyicinin çalışma biçimine benzer, ancak hemen hemen herkes önyükleme düğümü olabilir, bu yüzden onları kapatmak neredeyse imkansızdır.

Bitcoin çekirdek cüzdanı aynı şekilde çalışır. Varsayılan nedenlerden biri kapanırsa, önyükleme tohumlarının eşlerini değiştirmenize izin verir.


Bağlantılar öldü
zella
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.