# BitTorrent

**BitTorrent** (soʻzma-soʻz: inglizcha:  „bit oqimi“) – Internet orqali maʼlumotlarni almashish uchun P2P tarmoq protokoli.

Fayllar qismlarga boʻlib uzatiladi. Qismlarni olish (yuklab olish) bilan bir vaqtda ularni boshqa mijozlarga beradi (yuklaydi).

Protokol Bram Koen tomonidan yaratilgan. Birinchi versiyaning ishga tushirilishi 2-iyul 2001-yilida boʻlib oʻtgan. BitTorrent protokoli boʻyicha fayl almashish uchun koʻplab mijoz dasturlar mavjud.

## Metadata fayli

Fayl metadata.torrent kengaytmasi bilan bencode formatidagi lugʻat boʻlib, tarqatish (fayllar va boshqalar) haqidagi maʼlumotlarni oʻz ichiga oladi.

## Protokolning ishlash prinsipi

BitTorrent ishlash prinsipi: fayl tarqatuvchisi yuklamasi pasayadi, chunki mijozlar faylni oxirigacha yetkazib bermasalar ham, darhol maʼlumot almashishni boshlaydilar
Yuklab olishdan oldin mijoz torrent faylida koʻrsatilgan manzil boʻyicha trekerga ulanadi. Soʻng oʻzining manzilini va torrent faylining miqdorini maʼlum qiladi. Bunga javoban mijoz shu faylni yuklab olayotgan yoki tarqatayotgan boshqa mijozlarning manzillarini oladi. Keyin mijoz vaqti-vaqti bilan kuzatuvchini jarayon haqida xabardor qiladi va yangilangan manzillar roʻyxatini oladi. Bu jarayon eʼlon (inglizcha: *announce*) deb ataladi.

### Umumiy xususiyatlar

* Yuklab olish uchun navbatning yoʻqligi.
* Fayllar kichik fragmentlar bilan yuklanadi; fragment qanchalik kam boʻlsa, u shunchalik tez-tez uzatiladi. Shunday qilib, yuklab olish uchun toʻliq fayl bilan „Sider“ tarmogʻida boʻlish shart emas.
* Yuklab olingan fayllar boshqa mijozlarga darhol taqdim etiladi.
* Har bir fragmentning butunligi nazorat qilinadi.
* Tarqatish obyekti sifatida bir nechta fayllar (masalan, katalog) chiqishi mumkin.

## Torrent mijozisiz ishlash

Torrent tarmoqlarida fayllarni olish va tarqatish uchun maxsus dasturlardan foydalanish shart emas. Faqat brauzer yordamida fayllarni yuklab olish imkonini beruvchi bir nechta xizmatlar mavjud.

## Veb-saytlar

Foydalanish variantlaridan biri web-siding deb ataladi. Baʼzida serverda turli sabablarga koʻra toʻliq torrent mijozini ishga tushirib boʻlmaydi. Bunday holda, HTTP protokoli boʻyicha ishlaydigan server tarqatish manbai sifatida ishlaydi. Qoida tariqasida, mijozlar boshqa BitTorrent mijozlarini afzal koʻradilar va veb-saytga faqat zarurat tugʻilganda murojaat qiladilar. Shuni bilish kerakki, ushbu foydalanish varianti kamida uchta usul bilan amalga oshiriladi: BEP0017 BitTornado style webseeding, BEP0019 GetRight style webseeding va External Sourcing (Wayback Machine saytida 2018-09-23 sanasida arxivlangan).

## BTC-aloqa

Quyidagi shaklda koʻrsatiladi:

`btc: / / [manzil]: [Port] / [Peer ID] / [BTIH ]`

Ushbu turdagi aloqa tarqatish va uning manbasiga ishora qiladi. Shareazada qoʻllab-quvvatlanadi.

## Kamchiliklar va cheklovlar

### Anonimlik va shaxsiylashtirishning yoʻqligi

BitTorrent protokolining ishlash prinsipi har bir mijozga serverdan olingan boshqa mijozlarning IP manzillari maʼlum boʻlishini nazarda tutadi. Protokolning turli kengaytmalaridan foydalanish baʼzi hollarda boshqa mijozlarning manzillarini ham bilib olish imkonini beradi. Shuning uchun:

* Himoyalanmagan tizim foydalanuvchilari va maʼlum zaifliklarga ega mijozlar hujumga uchraydiydi.
* Muayyan faylni uzatayotgan yoki qabul qilayotgan foydalanuvchilarning manzillarini bilib olish mumkin.

Anonimlik muammosi Tor yordamida hal qilinishi mumkin. Lekin bu usul 100 % samarali emas.

Licher va uning guruhi.
## Manbalar

## Havolalar

* The BitTorrent Protocol Specification (Wayback Machine saytida 2014-02-08 sanasida arxivlangan)

* Ofitsialniy sayt BitTorrent

* Tekuщaya spesifikatsiya protokola BitTorrent