بیتتورنت
از ویکیپدیا، دانشنامهٔ آزاد.
این مقاله به تمیزکاری نیاز دارد. لطفاً آن را تا جایی که ممکن است از نظر املا، انشا، چیدمان و درستی بهتر کنید. سپس این الگو را از بالای مقاله حذف کنید. محتویات این مقاله ممکن است غیرقابل اعتماد و نادرست یا جانبدارانه باشد یا قوانین حقوق پدیدآورندگان را نقض کرده باشد. |
این مقاله نیازمند ویکیسازی است. لطفاً با توجه به راهنمای ویرایش و شیوهنامه آن را تغییر دهید. در پایان، پس از ویکیسازی این الگوی پیامی را بردارید. |
بیتتورنت (BitTorrent) هم نام برنامه کاربردی مشتری [1] بر مبنای توزیع فایل در شبکههای نظیر-به-نظیر [2] است و هم نام یک پروتکل اشتراک فایل، که هر دو در آوریل ۲۰۰۱ توسط برنامهنویسی به نام برام کوهن ایجاد شدهاند. بیتتورنت به منظور توزیع حجم بزرگی از اطلاعات بدون کاهش در مصرف منابع پر هزینه سرور و پهنای باند طراحی شدهاست.
فهرست مندرجات |
[ویرایش] بیتتورنت چیست؟
اولین برنامه کاربردی BitTorrent به زبان Python نوشته شد و source code آن با ورژن ۴٫۰ تحت لیسانس BitTorrent open source ارائه شد. تعداد زیادی از کلاینتها (نرم افزارها) با زبانهای مختلفی برای اجرا بر روی پلت فورمهای مختلف، نوشته شدهاند.
BitTorrent پروتکلی ست که به منظور ارسال فایل طراحی شدهاست. در واقع نوعی ارتباط peer-to-peer میباشد که کاربران مستقیما به یکدیگر متصل میشوند و به ارسال و دریافت قسمتی از فایل میپردازند. گر چه فعالیتهای تمامی کاربران توسط یک سرور مرکزی به نام Tracker هماهنگ میشود، اما این سرور از محتویات فایلهایی که منتقل میشود بی اطلاع است. در نتیجه تعداد زیادی از کاربران با پهنای باند محدود Tracker مربوطه قابل پشتیبانی هستند. فلسفه کلیدی BitTorrent اینست که کاربران باید همزمان با دان لود کردن اطلاعات (دریافت inbound)، آپلود (ارسال outbound) نمایند. در این صورت پهنای باند شبکه با حداکثر کارایی بکار گرفته میشود. BitTorrent به نحوی طراحی شدهاست که بر خلاف پروتوکلهای انتقال دیگر با افزایش تعداد افراد مشتاق برای دریافت یک فایل مشخص، کارا تر میشود. برای توصیف بهتر این روند میتوان آن را به گروهی از افراد تشبیه کرد که دور یک میز نشستهاند. هر کدام از این افراد سعی دارند که کپی کاملی از یک کتاب را دریافت کنند. نفر اول اعلام میکند که صفحات ۱-۱۰، ۲۳، ۴۲-۵۰ و ۷۵ را دارد و نفرات سوم، چهارم و پنجم هر کدام قسمتهایی از این صفحات را ندارند. بنابراین هر یک برای گرفتن صفحات، خود را با نفر اول هماهنگ میکنند. نفر دوم اعلام میکند که صفحات ۱۱-۲۲، ۳۱-۳۷ و ۶۳-۷۰ را دارد. نفر اول، چهارم و پنجم به نفر دوم میگویند که بعضی از صفحات او را میخواهند و او هم کپی آن صفحات را به آنها میدهد. این روند ادامه مییابد تا وقتی که همه افراد کپی تمام کتاب را به دست بیاورند. همچنین دور این میز شخص دیگری وجود دارد که کپی کل کتاب را دارد. بنابراین احتیاج ندارد که برایش کپی صفحهای فرستاده شود. او صفحاتی را که هیچ کس ندارد بین افراد پخش میکند. در ابتدا هنگامی که افراد دور میز مینشینند، باید از او بخواهند که اولین سری کپی صفحات خود را به آنها بدهد. گرچه افراد سعی میکنند که صفحات مشابه را از او نگیرند، بعد از مدتی همگی اکثر کپی کتاب را دارند. بدین ترتیب این فرد میتواند کتابی را که دارد در اختیار افراد زیاده قرار دهد بدون اینکه مجبور باشد کل کپی را به تمام افراد بدهد. او میتواند در عوض، قسمتهای مختلف کتاب را به افراد متفاوت بدهد. و آنها قادر خواهند بود که این قسمتها را در بین خود پخش کنند. به این فرد که کل کتاب را در اختیار دارد، در اصطلاح BitTorrent، Seed یا دانه گفته میشود. BitTorrent با برنامههای کاربردی peer-to-peer دیگر مانند WinMX, Kazza, Gnutella, Emule و... فرق دارد و مثل آنها محدوده مشخصی ندارد. به عبارت دیگر BitTorrent به وب اضافه شدهاست به این معنی که تمامی عملیات جستجو و تهیه لیستی از فایلهای در دسترس در وب انجام میشود و هنگامی که فایل مورد نظر را پیدا کردیم با کلیک بر روی آن، برنامه کلاینت اجرا میشود و شروع به دریافت میکند.
[ویرایش] اصطلاحات BitTorrent
مفاهیم مختلفی در ارتباط با BitTorrent وجود دارند که به معرفی آنها میپردازیم.
torrent یا سیل (جریان شدید): این اصطلاح معمولاً به فایل متادیتای کوچکی گفته میشود که از وب سرور(web server) با پسوند.torrent در یافت میکنیم. متادیتا در اینجا به معنی فایلی ست که اطلاعاتی در مورد دادهای که میخواهیم دان لود کنیم دارد و نه خود داده. این فایل هنگامی که بر روی لینک دان لود آن در یک وب سایت کلیک میکنید، به کامپیوتر ما فرستاده میشود. همچنین میتوان فایل torrent را بر روی سیستم محلی خود ذخیره کنیم و بعدها با کلیک بر روی آن، اقدام به دریافت آن کنیم.
Peer یا همتا: Peer کامپیوتر دیگری ست که به آن متصل شده و داده را منتقل میکنیم. معمولاً یک Peer تمام فایل را ندارد. در غیر این صورت به آن Seed میگوییم. همچنین به Peerها Leech یا زالو هم گفته میشود که از کامپیوترهایی که دان لود خود را کامل کردهاند و کلاینت BitTorrent خود را فعال نگهداشته و به صورت Seed عمل میکنند، متمایز شوند.
Leech یا زالو: به Peerای گفته میشود که به خاطر نسبت اشتراک پایین خود بر روی swarm تأثیر منفی میگذارد. به بیان دیگر بیشتر از اینکه آپ لود کند، دان لود میکند. اکثر Leechها، کاربرانی هستند که اتصالات نامتقارن دارند و کلاینت BitTorrent خود را بعد از اتمام دان لود برای عمل seeding باز نمیگذارند. حتی بعضی از Leechها به عمد با کلاینتهای تنظیم شده و یا محدود کردن سرعت ارسال، از آپ لود کردن جلوگیری میکنند. با این وجود اصطلاح Leech میتواند به جای Peer نیز بکار گرفته شود.
Seed یا دانه : کامپیوتری ست که کپی کامل یک torrent مشخص را دارد. هنگامی که کامپیوتر ما به طور کامل فایل را دان لود کرد، تا زمانی که روی دکمهٔ پایان کلیک نکنیم و یا به هر طریق آن را نبندیم، باز باقی میماند. به این عمل Seed بودن و یا Seeding میگویند. همچنین میتوانیم یک کلاینت BitTorrent را با فایل کاملی شروع کنیم. به محض اینکه BitTorrent فایل را امتحان کرد، متصل شده و فایل مربوطه را برای افراد دیگر Seed میکند. در کل، بهتر است بعد از اینکه فایلی را به طور کامل دریافت کردیم، برای کمک به دیگران آن را Seed کنیم. همچنین هنگامی که فایل torrent جدیدی به Tracker فرستاده میشود، باید حداقل یک Seed موجود باشد که آن را برای دیگران قابل دستیابی کند. به یاد داشته باشید که Tracker هیچ چیز در مورد محتوای واقعی فایلها نمیداند. بنابراین مهم است که بعد از upload کردن یک فایل torrent در Tracker، آن را Seed کنیم.
Reseed یا کاشت دوباره : هنگامی که هیچ Seed ای برای فایل تورنت مورد نظر موجود نباشد و Peerها با هم، کل فایل را نداشته باشند، تمامی Peerها فایل ناقصی دارند و هیچ یک، قسمتهای تکمیل کننده را ندارد. در این صورت کامپیوتری با فایل کامل (Seed)، باید به Swarm (گروه و دسته) متصل شود و قسمتهای ناقص فایل را ارسال کند. این عمل کاشت دوباره نام دارد. معمولاً یک درخواست برای عمل Reseed با تعهدی همراه است مبنی بر اینکه بعد از دان لود کامل فایل، فرد درخواست کننده باید برای مدت زمان مشخصی به منظور افزودن طول عمر به فایل تورنت به عنوان یک Seed عمل کند.
Swarm یا گروه و دسته : به گروهی از ماشینها گفته میشود که به طور مشترک و جمعی برای یک فایل خاص به یکدیگر متصل هستند. برای مثال اگر یک کلاینت BitTorrent را راه اندازی کنیم و به ما بگوید که به ۱۰ Peer و ۳ Seed متصل هستیم، Swarm شامل کامپیوتر ما و ۱۳ نفر دیگر است.
Tracker یا ردیاب : سروری ست در اینترنت که فعالیتهای کلاینتهای BitTorrent را هماهنگ میکند. هنگامی که تورنتی را باز میکنیم، ماشین ما با Tracker ارتباط برقرار میکند و لیستی از Peerها را برای تبادل اطلاعات دریافت میکند. این کار به طور دورهای و متناوب صورت میگیرد و Tracker میزان دان لود و آپ لود، میزان باقی مانده از فایل و وضعیتی که در حال حاضر داریم (شروع، پایان دان لود و توقف) را به ما نشان میدهد. اگر Tracker از کار بیفتد و بخواهیم یک تورنت را باز کنیم، قادر نخواهیم بود. اگر بعد از اتصال در حین ارتباط با Peerها و دان لود کردن فایل تورنت، Tracker از کار بیفتد، قادر به ادامه انتقال با آن Peerها خواهیم بود ولی هیچ Peer جدیدی قادر به برقرار کردن ارتباط با ما نخواهد بود. معمولاً خطاهای Trackerها موقتی هستند. بنابراین بهترین کار اینست که صبر کنیم و کلاینت را باز نگهداریم تا به سعی خود ادامه دهد.
Downloading یا دریافت کردن : به عمل دریافت داده از کامپیوتر دیگر دان لود کردن میگویند.
Uploading یا ارسال : به عمل فرستادن و ارسال داده به کامپیوتر دیگر گفته میشود.
Share rating یا سرعت اشتراک : اگر از یک کلاینت آزمایشی با stats-patch استفاده میکنیم، میتوانیم سرعت اشتراک را در یک پنل GUI مشاهده کنیم. که نشان دهندهٔ نسبت مقدار آپ لود شده به مقدار دان لود شدهاست. مقدارهای بکار برده شده، تنها برای قسمتهای در حال انتقال هستند نه برای کل فایل. اگر نسبت اشتراک نشان داده شده برابر با ۱ باشد، بدین معنی ست که به همان میزانی که آپ لود نمودهایم، دان لود کردهایم. هر چه این عدد بزرگ تر باشد نشان دهنده اینست که یه میزان بیشتری ارسال کردهاید. اگر این نسبت ۰ بود، به این معنی ست که شما کل فایل را دریافت نمودهاید و به عنوان Seed فعالیت میکنید. بنابراین هر چه بیشتر به ارسال ادامه دهید میزان این نسبت به سمت بی نهایت میرود. این نسبت تنها به منظور آگاهی کاربران محاسبه میشود. در کل برای کمک به دیگران بهتر است همیشه این نسبت را به حداکثر مقدار برسانیم.
Distributed Copies یا کپیهای توزیع شده : در بعضی از ورژنهای کلاینتها (نرم افزارها)، عبارت «متصل به n عدد seed و در حال مشاهده n.nnn کپی توزیع شده» را مشاهده میکنید. یک Seed ماشینی با فایل کامل است. با این وجود، Swarm میتواند در مجموع، کل فایل را داشته باشد بدون اینکه Seedای داشته باشد. و این همان چیزی ست که این عبارت بیان میکند.
Choked یا مسدود شده : این اصطلاحی ست که در پروتوکل BitTorrent بکار رفتهاست و به حالتی از یک ارسال کننده فایل (uploader)اشاره دارد. وقتی که یک اتصال مسدود شدهاست به معنی ست که ارسال کننده در حال حاضر نمیخواهد دادهای به آن لینک ارسال کند. کلاینت BitTorrent، بنا به دلائلی سیگنالی به کلاینتهای دیگر میفرستد که مسدود شدن این لینک را اعلام کند. اما معمولاً بطور پیش فرض یک کلاینت (کلاینتی که بیشترین آپ لود را داشتهاست) آپ لودهای فعال خود را باز میگذارد و بقیه کلاینتها مسدود اعلام میشوند. مقدار پیش فرض ۴ میباشد که مشابه تنظیمات کلاینت BUI آزمایشی ست که میتوان تغییر داد. یک اتصال میتواند به دلائل دیگری نیز مسدود شود. به طور مثال هنگامی که یک Peer مشغول دریافت فایلی از یک Seed است که نمیخواهد دادهای را ارسال کند، اتصالش مسدود شده اعلام میشود. توجه داشته باشید که اگر هر اتصال دوطرفه و قرینه باشد، دو علامت نمایش انسداد برای هر اتصال (انتهای هر ارسال کننده) خواهیم داشت.
Interested یا مشتاق : اصطلاح دیگری ست که در پروتوکل BitTorrent بکار برده میشود که در نتیجهٔ علامت انسداد ایجاد شدهاست و به نشان دهندهٔ حالتی ست که فرد دان لود کننده در انتظار اتصال و دریافت قسمتی از فایل است. فرد دان لود کننده هنگامی مشتاق نامیده میشود که در کلاینت مقابل، قسمتی از فایل موجود باشد که این فرد احتیاج دارد.
Snubbed یا منع شده : اگر کلاینت هیج دادهای را بعد از مدت زمان مشخصی (بطور پیش فرض ۶۰ ثانیه) دریافت نکند، منع شده نامیده میشود. این حالت هنگامی رخ میدهد که از ارسال Peer مقابل، برای مدتی جلوگیری شده باشد. بعضی از اوقات کلاینت در حالتی قرار میگیرد که با اینکه به تعداد زیادی از Peerها متصل است، ولی توسط تمام آنها مسدود شدهاست. این کلاینت از علامت منع شده استفاده میکند تا از این موقعیت خارج شود. این علامت نشان میدهد که یک Peer که میخواهد تکههایی از فایل را انتقال دهد، برای مدتی چیزی ارسال نکردهاست.
Optimistic unchoking یا اتصال مجدد خوشبینانه : کلاینتها به طور متناوب، لیستی از ارسال کنندهها را بازنگری میکنند و تلاش میکنند تا اتصالات جدیدی را که قبلا مسدود شده بودند، برقرار کنند و اتصالاتی را که برقرار کرده بودند را مسدود کنند. این اعمال را میتوان هر ۱۰ یا ۲۰ ثانیه با مشاهدهٔ "Advanced" از یکی از کلاینتها بررسی کرد.
[ویرایش] BitTorrent چگونه کار میکند؟
پروتوکل BitTorrent فایلها را به تکههای کوچک، معمولاً یک چهارم مگابایت (۲۵۶ KB) میشکند. هر چه اندازهٔ فایل بزرگتر باشد، تکهها نیز بزرگتر خواهند بود. به طور پیش فرض اندازه تکهها برای یک فایل ۴٫۳۷ گیگا بایتی، ۴ مگابایت میباشد. Peerها تکههایی را که ندارند از یکدیگر دانلود میکنند و تکههایی را که Peerهای دیگر ندارند برایشان آپلود میکنند. این پروتوکل به اندازهٔ کافی هوشمند است که Peerای را انتخاب کند که بهترین اتصال را داشته باشد. برای بالا بردن کارایی کل swarm، کلاینتهای BitTorrent قسمتهایی را درخواست میکنند که کمیاب ترند. به عبارت دیگر قسمتهایی که در Peerهای کمتری وجود دارند، میتوانند برای Peerهای بیشتری مفید باشند. تکههای فایلها معمولاً به ترتیت دان لود نمیشوند و احتیاج به مرتب سازی در ماشین دریافت کننده دارند. توجه داشته باشید که کلاینتها قبل از اینکه کل فایل دان لود شود، تکهها را برای Peerهای دیگر آپ لود میکنند. بنابراین اشتراک گذاری برای هر Peer با یک فایل کوچک با پسوند.torrent آغاز میشود که یک فایل اشاره گر (pointer) است که شامل اطلاعاتی از قبیل نام فایل و اندازه آن دارد.
دانلود کردن با BitTorrent بسیار آسان است. با یک فایل با پسوند.torrent آغاز میشود. هر فرد که میخواهد فایل را دانلود کند، ابتدا باید این فایل کوچک را دریافت نماید و آن را توسط نرم افزارهای کلاینت BitTorrent باز کند. فایل تورنت، آدرس tracker ای را که لیستی از کاربرانی که مشغول دانلود فایل هستند و محل قرار گرفتن تکههای فایل را میداند، به کلاینت میدهد. برای هر منبع قابل دسترس، کلاینت متوجه میشود که کدام بلاک از فایل مورد نظر قابل دستیابی هستند. به محض اینکه کلاینت دریافت یک بلاک را کامل کرد، آن را هش (Hash) میکند تا مطمئن شود که این بلاک با فایل تورنت متناسب است. سپس به دنبال کسی میگردد که این فایل را برایش آپلود کند.
اگرچه BitTorrent پروتوکل خوبی برای کاربران پهن باند (BroadBand) میباشد، برای اتصالات dial up که بطور مداوم قطع میشوند، کمتر کارایی دارد. به بیان دیگر سرورهای HTTP زیادی اتصالات خود را برای ساعات طولانی قطع میکنند. در حالیکه تورنتهای زیادی وجود دارند که هنوز دان لود خود را تکمیل نکردهاند.
[ویرایش] منابع
- وبگاه btfaq
- ویکیپدیا انگلیسی