Bittorrent P2p Çalışma Mekanizması

3 minute read

Bu yazıda Bittorrent ve P2P mekanizmalarının işleyişi ve bazı teknik kavramlarla alakalı bilgiler verilecektir.

BitTorrent Nedir?

Bittorrent P2P (peer to peer) esaslarına göre kurgulanmış bir dosya paylaşım protokolüdür.

Leechers

Bittorrent swarm’ı içinde indirme yapan kullanıcılara leechers denir.

Seeders

Bittorrent swarm’ı içinde upload yapan kullanıcılara seeders denir.

Torrent File

BitTorrent sisteminde dağıtılan dosya veya klasörlerle alakalı metadataları içeren dosyadır. Dağıtılan içeriğin dosya hiyerarşisi , trackerların IP adresleri gibi bilgileri içerir.

Magnet, magnet linklerin formatını belirleyen bir URI şemasıdır. Magnet linkler torrent dosyalarının bir sunucuya ihtiyaç duyulmadan ağdaki kullanıcılardan direkt indirilebilmesini sağlar. Bir URl’den ibaret olduğundan magnet linkler mail veya mesaj gibi yollarla kolayca yayılabilir.

Örnek bir Magnet Link:

magnet:?xt=urn:btih:c12fe1c06bba254a9dc9f519b335aa7c1367a88a

Magnet linkler torrent dosyalarını sunucularda taşıma maliyetinden kurtulmayı da sağlar. 100kb boyutlarında torrent dosyaları olabildiği düşünüldüğünde aradaki fark tebarüz edecektir.

Seedbox

Bittorrent ağında yükleme ve indirme işlemleri yapan yüksek bant genişliğine sahip sunuculardır. Yani bittorrent ağı içerisinde çalışması için bir sunucu kiralarsanız bir seedbox’ınız olur.

Torrent Trackers

Bittorrent ağın üzerindeki kullanıcıların iletişimini sağlayan özel sunuculardır.

Public Torrent Trackers

Kayıt olma gerekliliği olmadan kullanılabilen torrent trackerlardır. Misal: The Pirate Bay

Private Torrent Trackers

Kullanabilmek için kayıtlı olunması gereken trackerlardır. Genelde doğrudan değil üyelerden davetiye gibi yöntemlerle private trackerlara sahip sitelere kayıt olunabilmektedir.

Ayrıca belirli bir indirme ve yükleme (upload) oranını (ratio) tutturmanız şart koşulabilir.

Peki hangi kullanıcının ne kadar indirme ve yükleme yaptığı nasıl takip ediliyor?

Bunun için 2 yol var.

  1. BitTorrent client’ı kullanıcının hareketlerini (indirme ve yükleme miktarları da dahil) tracker’a raporlar. Bu sayede private trackerlar kimin ne kadar indirme ve yükleme yaptığını takip edebilirler.

  2. Private trackera sahip siteler kullanıcıya özel torrent dosyası üretebilirler. Torrent dosyasında kullanıcının IP’sinin bulunduğu “announce IP” kısmına dosyayı kullanmak isteyen kullanıcının IP adresi yazılır. Böylece BitTorrent client’ının raporlarının yanı sıra bu yöntemle de istatistikler takip edilebilir.

Trackerları aldatma maksadıyla hatalı raporlar yollayan bazı client programları da vardır fakat trackerlar, indirme/yükleme işleminin birlikte yapıldığı diğer eş bilgisayarların raporlarıyla cross check ederek hatalı rapor gönderen kullanıcıyı banlayabilirler.

NOT: Çoğu zaman tracker kavramı ile trackerları kullanan websiteleri birbirine karıştırılır. Örneğin pirate bay esasen bir tracker değil public tracker sunucuları kullanan bir websitesidir.

Trackless Torrents

DHT (Distributed Hash Table) kullanılarak trackerlar olmadan çalışan torrent ağlarıdır.

DHT (Distributed Hash Table)

DHT, ağa dağıtılmış bir anahtar-değer veritabanıdır. Anahtarlar bir algoritma ile ağdaki düğümlere dağıtılmıştır. Yani her düğüm hash tablosunun bir kısmından sorumludur.

Bir veriye ihtiyacım var diyelim; bendeki DHT tablosuna bakarak bunu en yakınımdaki düğümden talep ediyorum. Eğer onda yoksa o da kendisine yakın bir düğümden talep ediyor. Eğer veriye sahip düğüm bulunursa, adres bilgisi bana aktarılıyor ve ona bağlanarak veriyi çekebiliyorum. Böylece tüm kullanıcıları içeren tabloya sahip olmadan veriye ulaşabilmiş oluyorum.

NOT: Blockchain de mantık olarak DHT gibi çalışmakla beraber temel amacı yapılan işlemlerin (transaction) değiştirilemez defterlerini dağıtık saklamak olduğu için ağa dahil olan her kullanıcı full datayı saklamak zorundadır.

Bootstrapping

P2P ağı üzerindeki ilk node’u bulma işlemine verilen isim.

Sualler ve Cevapları

Sual: Ağ üzerindeki kullanıcılar birbirlerini nasıl bulur?

El cevap:

BitTorrent ağında düğümler arasında iletişim için 2 yöntem kullanılır:

  1. Torrent Trackers: Klasik yöntem. Tracker’dan ağdaki diğer düğümlerin bilgilerine erişilir.
  2. Trackerless Torrent: DHT kullanılarak ağa bağlanılır ve istenilen veri çekilir.

Pratikte işlerin nasıl işlediğiyle ilgili somut 2 madde yazarsak;

  1. Client uygulamasında kayıtlı “iyi bilinen clientlar” listesi aracılığı ile ağa bağlanılabilir. (DHT)
  2. Ağ üzerindeki kullanıcılar arasında yapılan bilgi alışverişi ile ağdan veri çekilir. (DHT)

Sual: Ağ üzerinden parçalar halinde indirilen dosyalar nasıl birleştirilir?

El cevap:

Torrent dosyası içerisinde, dosyaların belirli büyüklükteki parçalarına (32 kb, 512 kb, 4mb vb.) karşılık gelen hash’ler bulunur. Ağ üzerinden indirilen bir dosya parçasının geçerli olup olmadığı bittorrent client’ı tarafından torrent dosyası içerisindeki hash tablosu kullanılarak kontrol edilir. İndirilen dosya parçasının hash değeri torrent dosyasında var ise bu parça geçerlidir ve hard disk’te doğru pozisyona yazılır. Böylece indirilen içeriğin farklı farklı kısımlarına ait olan dosya parçacıkları indirme işlemi sonunda puzzle gibi birleştirilmiş olur.

Sual: Ağ üzerindeki kullanıcının ne kadar indirme/yükleme yaptığı trackerlar tarafından nasıl takip edilir? (Bu soru ve cevabı “Private Torrent Trackers” başlığı altında yazılmıştı fakat önemine binaen buraya da yazmayı gerekli gördüm.)

El cevap:

Bunun için 2 yol vardır.

  1. BitTorrent client’ı kullanıcının hareketlerini tracker’a raporlar. Bu sayede private trackerlar kimin ne kadar indirme ve yükleme yaptığını takip edebilirler.

  2. Private trackera sahip siteler kullanıcıya özel torrent dosyası üretebilirler. Torrent dosyasında kullanıcının IP’sinin bulunduğu “announce IP” kısmına dosyayı kullanmak isteyen kullanıcının IP adresi yazılır. Böylece BitTorrent client’ının raporlarının yanı sıra bu yöntemle de istatistikler takip edilebilir.

Trackerları aldatma maksadıyla hatalı raporlar yollayan bazı client programları da vardır fakat trackerlar, indirme/yükleme işleminin birlikte yapıldığı diğer eş bilgisayarların raporlarıyla cross check ederek hatalı rapor gönderen kullanıcıyı banlayabilirler.

Kaynaklar

https://www.howtogeek.com/141257/htg-explains-how-does-bittorrent-work/

https://superuser.com/questions/219574/how-do-torrent-clients-reassemble-and-store-pieces

https://en.wikipedia.org/wiki/Magnet_URI_scheme

https://jsantell.com/p2p-peer-discovery/

https://stackoverflow.com/questions/26415908/whats-the-difference-between-distributed-hashtable-technology-and-the-bitcoin-b

https://superuser.com/questions/211264/how-do-private-bittorrent-trackers-monitor-how-much-users-upload-download

https://stackoverflow.com/questions/3844502/how-do-bittorrent-magnet-links-work

Updated:

Leave a comment