Bittorrent nasıl çalışır?


34

Dosya paylaşımının acı yolu hakkında daha fazla bilgi edinmek istiyorum. Ben teknik olarak ileri düzey bir kullanıcıyım (programcı), bu nedenle teknik olarak gelişmiş malzeme sorun değil, ancak kısa ve özlü olması gerekiyor. Genel bittorrent mimarisini açıklayan iyi bir kaynak kitap / web'e ihtiyacım var.

Detaylarla ilgilenmiyorum, sadece genel mimari ve tohumlar, akranlar vb. Terminoloji.

Baska öneri?

Yanıtlar:


29

Bittorrent'in nasıl çalıştığına genel bakış:

  • You have ve bir izci . Herhangi bir anda bir araya Tüm yaşıttır sürüsü . Genel durum, bir veya birkaç eş tam dosya setine sahiptir ve diğer eşler için de kullanılabilir olmasını ister.

  • Bir eş, başka şeylerin yanı sıra bir .torrent dosyası edinir. Her parçanın bir SHA-1 karma. Parçaların büyüklüğü torrentin kendisi tarafından belirlenir.

  • Eş, daha sonra torrent'de belirtilen URL'yi kullanarak izleyiciye bağlanır. İzleyici, bir eş listesiyle yanıt verir. İzleyiciler 80 veya 443 numaralı bağlantı noktasından HTTP konuşuyor.

  • Eş, daha sonra, izleyiciden gelen bilgileri kullanarak başka bir eş seçer ve bir parça almaya çalışarak değişim oturumu kurmak için doğrudan iletişim kurar. Değişim oturumlarının doğrudan meslektaşlar tarafından yapıldığını ve izleyicinin aktarıma dahil OLMADIĞINI unutmayın. İzleyici sadece bilgi sağlar.

  • Eşin bir parçası olduğunda, onu SHA-1 karmasına karşı doğrular ve dosyaya yazar. Daha sonra başka bir eş seçerken o parçayı sunabilir. Sonraki takas oturumları "işlem" parçalarını içerir. Başka bir parçanız yoksa, arkadaşlarınızın yalnızca size ilk parçayı vereceğine inanıyorum.

  • Eş, güncellenmiş bir eş listesi elde etmek için izleyiciye her zaman yeniden danışır. Eşin birden fazla parça varsa diğerine başlamadan önce bir değişimin bitmesini beklemesi gerekmez, bu nedenle eşin bir parça parçası olduğunda transfer gerçekten hızlanabilir. Bu nedenle, torrentler yavaş başlar, ancak eşler parçaları satın aldıkça hızla hız kazanırlar.

  • Bir eş tüm parçaları varsa, tüm dosya SHA-1 karma dosya kümesi ile doğrulanır. Ardından, bir ekim makinesi haline gelir ve şimdi dosya kümesinin daha fazla erişilebilir olmasına yardımcı olmaktan başka bir şey yapmaz. Tüm parçaları olmayan akranlar sülüklerdir .

  • Eğer bir torrent'de tohum yoksa, o ölüdür, ancak dosyanın bütün kopyası, tüm meslektaşları tarafından tutulan tüm parçalar arasında mevcutsa, sonunda kendi aralarında tam bir kopya almak için işlem yapacaktır.

  • SHA-1 karması, izleyicinin ve meslektaşlarının hangi dosyanın çevrilmesi gerektiğini "nasıl bildiğini" ifade eder. Torrent'teki dosya adları verileri tanımlamak için kullanılmaz. .Torrent dosyasındaki karelere karşı doğrulama yapmayan parçalar atılır. Sürekli olarak kötü parçalar gönderen akranlar diğer akranlar tarafından tıkanır ve sonunda sürünün içinde kimseyle bağlantı kuramazlar.

  • Daha küçük bir parça büyüklüğü, eşler daha hızlı işlem yapabildikleri için torrentin daha sağlam olduğu anlamına gelir, ancak .torrent dosyasındaki parçaların daha fazla parçalanmasının listelenmesi gerektiği ve dolayısıyla .torrent dosyasının büyük olabileceği anlamına gelir.

  • BitTorrent üzerinden bir şey yayınlıyorsanız, dosyayı kullanıma sunmak istediğinizde tohum ekmeniz en iyisidir. Diğer meslektaşlar size yardımcı olacaktır, çünkü çoğu BitTorrent yazılımı, birbirine bağlı bağlantıları en üst düzeye çıkarmak için akranlar arasında işleri mümkün olduğunca yaymaya çalışan algoritmalar uygulamaktadır. Bu şekilde BitTorrent bir şeyler yayınlamanıza ve bant genişliği maliyetlerinden tasarruf etmenize yardımcı olabilir.


1
Güzel bir cevap! Bir quip: Tohumların ilk önce değil, nadir görülen tohumlardan birini tercih ettiğine inanıyorum . Bunun bir algoritma olup olmadığından emin değilim, fakat ayarlarla uğraşırken bir torrent programından aldım.
Gallifreyan


8

Bir var YouTube'da oldukça güzel bir video karton kesiklere ile görsel bir biçimde bu açıklayan. Son derece teknik bir açıklama değil, BitTorrent'in arkasındaki fikri insanlara basit, anlaşılır bir şekilde açıklamak için harika.

bittorrent youtube üzerinde nasıl çalışır


3
+1 Faydalı video. Bunu babama gösterdi. Daha sonra hiç sorusu yoktu. Şaşırtıcı. :)
zero2cx 20:12

2

Akran mesajları protokolüne genel bakış .

İstemci eşler ile, TCP veya uTP (UDP üzerinden) ile bilgi paylaşmak için iki protokol kullanabilir. Bu veri bittorrent protokolü spesifikasyonlarını , bölüm eş mesajlarını takip eder .

Bu nedenle programlı olarak, iki istemci arasında bir bağlantı başlamalıdır. Bağlantı (TCP veya UTP yoluyla) ayarlandıktan sonra, bir bittorrent el sıkışma izci veya üzerinden uzak konağın bilgilerini (ip ve bağlantı noktası) alıp, istemci tarafından başlatılır DHT . Bu el sıkışma, bu bağlantının olacağı torrenti tanımlayan info_hash'ı içerir .

İlk olarak Torrent verilerinin protokolde nasıl kesildiğini görelim. Bir parça , ağ üzerinden paylaştığınız verilerin bir parçasıdır. Paket içine sarılmış bir parçanın bir parçası olan bir blok ile karıştırılmaması . Blok , bir paylaşma taneliliği parça paketleri ile ve bir parçası eş ile Torrent paylaşmak boyutudur.

Bağlantı başladığında, her iki müşteri de ( LC ve uzak istemci, RC diyeceğim yerel istemci ) boğulur ve ilgisiz kalır . Boğulmuş , "Mesajlarınızın hiçbirine cevap vermeyeceğim, çok meşgul, ancak onları dikkate alabilirim" anlamına gelir. Unchocked bu nedenle “mesajlarınıza cevap vereceğim” anlamına gelir. İlgilendiğiniz araçlar elbette sahip olduğunuz bazı parçaları istiyorum. Bu nedenle, iki akran arasındaki bağlantının durumu şu dört durumla tanımlanabilir: LC_chocked ?, LC_interested ?, RC_chocked?, RC_interested? RC'yi (un) takılı olduğumu veya (un) ilgilendiğim konusunda uyarmak için, Ona (ilgisiz) ve kesilmiş mesajlar ve karşılıklı olarak göndermek zorundayım .

Hangi parçalara sahip olduklarını bildirmek için, el sıkışmalarından hemen sonra bir bitfield mesajı gönderebilirler . 'S Adından da anlaşılacağı gibi, her bit olarak ayarlanır biraz dizedir 1istemci bu tuhaf sahipse parça , 0aksi.

Yani eğer LC edilir chocked ve ilgi ve RC vardır unchocked onu, o bir gönderebilirsiniz isteği bir istemek için mesaj bloğunda bir ait parça o bilir LC sayesinde sahip saklayıcısında mesajla.

Bir akran tüm parçayı aldığında, tuttuğu ilişkili bit alanını güncellemeleri için tüm uzak akranlarını bilgilendirmek için bir parça mesajı gönderebilir .

Bu çok basit bir genel bakış ve elbette boğulma algoritması vb. Gibi tüm detaylar burada sunulmuyor. bir gönderide ikiden fazla bağlantı yok).

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.