آبجی
19th October 2009, 01:29 PM
اولین برنامه کاربردی BitTorrent به زبان Python نوشته شد و source code آن با ورژن ۴٫۰ تحت لیسانس BitTorrent open source ارائه شد. تعداد زیادی از کلاینتها (نرم افزارها) با زبانهای مختلفی برای اجرا بر روی پلت فورمهای مختلف، نوشته شدهاند.
BitTorrent پروتکلی ست که به منظور ارسال فایل طراحی شدهاست. در واقع نوعی ارتباط peer-to-peer میباشد که کاربران مستقیما به یکدیگر متصل میشوند و به ارسال و دریافت قسمتی از فایل میپردازند. گر چه فعالیتهای تمامی کاربران یک فایل توسط سرور مرکزی به نام Tracker هماهنگ میشود، اما این سرور از محتویات فایلهایی که منتقل میشود بی اطلاع است. در نتیجه تعداد زیادی از کاربران با پهنای باند محدود Tracker مربوطه قابل پشتیبانی هستند.
فلسفه کلیدی BitTorrent اینست که کاربران باید همزمان با دان لود کردن اطلاعات (دریافت inbound)، آپلود (ارسال outbound) نمایند. در این صورت پهنای باند شبکه با حداکثر کارایی بکار گرفته میشود. BitTorrent به نحوی طراحی شدهاست که بر خلاف پروتوکلهای انتقال دیگر با افزایش تعداد افراد مشتاق برای دریافت یک فایل مشخص، کارا تر میشود. برای توصیف بهتر این روند میتوان آن را به گروهی از افراد تشبیه کرد که دور یک میز نشستهاند. هر کدام از این افراد سعی دارند که کپی کاملی از یک کتاب را دریافت کنند. نفر اول اعلام میکند که صفحات ۱-۱۰، ۲۳، ۴۲-۵۰ و ۷۵ را دارد و نفرات سوم، چهارم و پنجم هر کدام قسمتهایی از این صفحات را ندارند.
بنابراین هر یک برای گرفتن صفحات، خود را با نفر اول هماهنگ میکنند. نفر دوم اعلام میکند که صفحات ۱۱-۲۲، ۳۱-۳۷ و ۶۳-۷۰ را دارد. نفر اول، چهارم و پنجم به نفر دوم میگویند که بعضی از صفحات او را میخواهند و او هم کپی آن صفحات را به آنها میدهد. این روند ادامه مییابد تا وقتی که همه افراد کپی تمام کتاب را به دست بیاورند. همچنین دور این میز شخص دیگری وجود دارد که کپی کل کتاب را دارد. بنابراین احتیاج ندارد که برایش کپی صفحهای فرستاده شود. او صفحاتی را که هیچ کس ندارد بین افراد پخش میکند. در ابتدا هنگامی که افراد دور میز مینشینند، باید از او بخواهند که اولین سری کپی صفحات خود را به آنها بدهد. گرچه افراد سعی میکنند که صفحات مشابه را از او نگیرند، بعد از مدتی همگی اکثر کپی کتاب را دارند. بدین ترتیب این فرد میتواند کتابی را که دارد در اختیار افراد زیادی قرار دهد بدون اینکه مجبور باشد کل کپی را به تمام افراد بدهد.
او میتواند در عوض، قسمتهای مختلف کتاب را به افراد متفاوت بدهد. و آنها قادر خواهند بود که این قسمتها را در بین خود پخش کنند. به این فرد که کل کتاب را در اختیار دارد، در اصطلاح Seed، BitTorrent یا دانه گفته میشود. BitTorrent با برنامههای کاربردی peer-to-peer دیگر مانند WinMX, Kazza, Gnutella, Emule و... فرق دارد و مثل آنها محدوده مشخصی ندارد. به عبارت دیگر BitTorrent به وب اضافه شدهاست به این معنی که تمامی عملیات جستجو و تهیه لیستی از فایلهای در دسترس در وب انجام میشود و هنگامی که فایل مورد نظر را پیدا کردیم با کلیک بر روی آن، برنامه کلاینت اجرا میشود و شروع به دریافت میکند.
BitTorrent چگونه کار میکند؟
http://upload.wikimedia.org/wikipedia/commons/3/3d/Torrentcomp_small.gif (http://fa.wikipedia.org/wiki/%D9%BE%D8%B1%D9%88%D9%86%D8%AF%D9%87:Torrentcomp_s mall.gif)
پروتوکل BitTorrent فایلها را به تکههای کوچک، معمولاً یک چهارم مگابایت (۲۵۶ KB) میشکند. هر چه اندازهٔ فایل بزرگتر باشد، تکهها نیز بزرگتر خواهند بود. به طور پیش فرض اندازه تکهها برای یک فایل ۴٫۳۷ گیگا بایتی، ۴ مگابایت میباشد. Peerها تکههایی را که ندارند از یکدیگر دانلود میکنند و تکههایی را که Peerهای دیگر ندارند برایشان آپلود میکنند. این پروتوکل به اندازهٔ کافی هوشمند است که Peerای را انتخاب کند که بهترین اتصال را داشته باشد. برای بالا بردن کارایی کل swarm، کلاینتهای BitTorrent قسمتهایی را درخواست میکنند که کمیاب ترند. به عبارت دیگر قسمتهایی که در Peerهای کمتری وجود دارند، میتوانند برای Peerهای بیشتری مفید باشند.
تکههای فایلها معمولاً به ترتیت دان لود نمیشوند و احتیاج به مرتب سازی در ماشین دریافت کننده دارند. توجه داشته باشید که کلاینتها قبل از اینکه کل فایل دان لود شود، تکهها را برای Peerهای دیگر آپ لود میکنند. بنابراین اشتراک گذاری برای هر Peer با یک فایل کوچک با پسوند.torrent آغاز میشود که یک فایل اشاره گر (pointer) است که شامل اطلاعاتی از قبیل نام فایل و اندازه آن دارد.
دانلود کردن با BitTorrent بسیار آسان است. با یک فایل با پسوند.torrent آغاز میشود. هر فرد که میخواهد فایل را دانلود کند، ابتدا باید این فایل کوچک را دریافت نماید و آن را توسط نرم افزارهای کلاینت BitTorrent باز کند. فایل تورنت، آدرس tracker ای را که لیستی از کاربرانی که مشغول دانلود فایل هستند و محل قرار گرفتن تکههای فایل را میداند، به کلاینت میدهد. برای هر منبع قابل دسترس، کلاینت متوجه میشود که کدام بلاک از فایل مورد نظر قابل دستیابی هستند. به محض اینکه کلاینت دریافت یک بلاک را کامل کرد، آن را هش (Hash) میکند تا مطمئن شود که این بلاک با فایل تورنت متناسب است. سپس به دنبال کسی میگردد که این فایل را برایش آپلود کند.
اگرچه BitTorrent پروتوکل خوبی برای کاربران پهن باند (BroadBand) میباشد، برای اتصالات dial up که بطور مداوم قطع میشوند، کمتر کارایی دارد. به بیان دیگر سرورهای HTTP زیادی اتصالات خود را برای ساعات طولانی قطع میکنند. در حالیکه تورنتهای زیادی وجود دارند که هنوز دان لود خود را تکمیل نکردهاند.
BitTorrent پروتکلی ست که به منظور ارسال فایل طراحی شدهاست. در واقع نوعی ارتباط peer-to-peer میباشد که کاربران مستقیما به یکدیگر متصل میشوند و به ارسال و دریافت قسمتی از فایل میپردازند. گر چه فعالیتهای تمامی کاربران یک فایل توسط سرور مرکزی به نام Tracker هماهنگ میشود، اما این سرور از محتویات فایلهایی که منتقل میشود بی اطلاع است. در نتیجه تعداد زیادی از کاربران با پهنای باند محدود Tracker مربوطه قابل پشتیبانی هستند.
فلسفه کلیدی BitTorrent اینست که کاربران باید همزمان با دان لود کردن اطلاعات (دریافت inbound)، آپلود (ارسال outbound) نمایند. در این صورت پهنای باند شبکه با حداکثر کارایی بکار گرفته میشود. BitTorrent به نحوی طراحی شدهاست که بر خلاف پروتوکلهای انتقال دیگر با افزایش تعداد افراد مشتاق برای دریافت یک فایل مشخص، کارا تر میشود. برای توصیف بهتر این روند میتوان آن را به گروهی از افراد تشبیه کرد که دور یک میز نشستهاند. هر کدام از این افراد سعی دارند که کپی کاملی از یک کتاب را دریافت کنند. نفر اول اعلام میکند که صفحات ۱-۱۰، ۲۳، ۴۲-۵۰ و ۷۵ را دارد و نفرات سوم، چهارم و پنجم هر کدام قسمتهایی از این صفحات را ندارند.
بنابراین هر یک برای گرفتن صفحات، خود را با نفر اول هماهنگ میکنند. نفر دوم اعلام میکند که صفحات ۱۱-۲۲، ۳۱-۳۷ و ۶۳-۷۰ را دارد. نفر اول، چهارم و پنجم به نفر دوم میگویند که بعضی از صفحات او را میخواهند و او هم کپی آن صفحات را به آنها میدهد. این روند ادامه مییابد تا وقتی که همه افراد کپی تمام کتاب را به دست بیاورند. همچنین دور این میز شخص دیگری وجود دارد که کپی کل کتاب را دارد. بنابراین احتیاج ندارد که برایش کپی صفحهای فرستاده شود. او صفحاتی را که هیچ کس ندارد بین افراد پخش میکند. در ابتدا هنگامی که افراد دور میز مینشینند، باید از او بخواهند که اولین سری کپی صفحات خود را به آنها بدهد. گرچه افراد سعی میکنند که صفحات مشابه را از او نگیرند، بعد از مدتی همگی اکثر کپی کتاب را دارند. بدین ترتیب این فرد میتواند کتابی را که دارد در اختیار افراد زیادی قرار دهد بدون اینکه مجبور باشد کل کپی را به تمام افراد بدهد.
او میتواند در عوض، قسمتهای مختلف کتاب را به افراد متفاوت بدهد. و آنها قادر خواهند بود که این قسمتها را در بین خود پخش کنند. به این فرد که کل کتاب را در اختیار دارد، در اصطلاح Seed، BitTorrent یا دانه گفته میشود. BitTorrent با برنامههای کاربردی peer-to-peer دیگر مانند WinMX, Kazza, Gnutella, Emule و... فرق دارد و مثل آنها محدوده مشخصی ندارد. به عبارت دیگر BitTorrent به وب اضافه شدهاست به این معنی که تمامی عملیات جستجو و تهیه لیستی از فایلهای در دسترس در وب انجام میشود و هنگامی که فایل مورد نظر را پیدا کردیم با کلیک بر روی آن، برنامه کلاینت اجرا میشود و شروع به دریافت میکند.
BitTorrent چگونه کار میکند؟
http://upload.wikimedia.org/wikipedia/commons/3/3d/Torrentcomp_small.gif (http://fa.wikipedia.org/wiki/%D9%BE%D8%B1%D9%88%D9%86%D8%AF%D9%87:Torrentcomp_s mall.gif)
پروتوکل BitTorrent فایلها را به تکههای کوچک، معمولاً یک چهارم مگابایت (۲۵۶ KB) میشکند. هر چه اندازهٔ فایل بزرگتر باشد، تکهها نیز بزرگتر خواهند بود. به طور پیش فرض اندازه تکهها برای یک فایل ۴٫۳۷ گیگا بایتی، ۴ مگابایت میباشد. Peerها تکههایی را که ندارند از یکدیگر دانلود میکنند و تکههایی را که Peerهای دیگر ندارند برایشان آپلود میکنند. این پروتوکل به اندازهٔ کافی هوشمند است که Peerای را انتخاب کند که بهترین اتصال را داشته باشد. برای بالا بردن کارایی کل swarm، کلاینتهای BitTorrent قسمتهایی را درخواست میکنند که کمیاب ترند. به عبارت دیگر قسمتهایی که در Peerهای کمتری وجود دارند، میتوانند برای Peerهای بیشتری مفید باشند.
تکههای فایلها معمولاً به ترتیت دان لود نمیشوند و احتیاج به مرتب سازی در ماشین دریافت کننده دارند. توجه داشته باشید که کلاینتها قبل از اینکه کل فایل دان لود شود، تکهها را برای Peerهای دیگر آپ لود میکنند. بنابراین اشتراک گذاری برای هر Peer با یک فایل کوچک با پسوند.torrent آغاز میشود که یک فایل اشاره گر (pointer) است که شامل اطلاعاتی از قبیل نام فایل و اندازه آن دارد.
دانلود کردن با BitTorrent بسیار آسان است. با یک فایل با پسوند.torrent آغاز میشود. هر فرد که میخواهد فایل را دانلود کند، ابتدا باید این فایل کوچک را دریافت نماید و آن را توسط نرم افزارهای کلاینت BitTorrent باز کند. فایل تورنت، آدرس tracker ای را که لیستی از کاربرانی که مشغول دانلود فایل هستند و محل قرار گرفتن تکههای فایل را میداند، به کلاینت میدهد. برای هر منبع قابل دسترس، کلاینت متوجه میشود که کدام بلاک از فایل مورد نظر قابل دستیابی هستند. به محض اینکه کلاینت دریافت یک بلاک را کامل کرد، آن را هش (Hash) میکند تا مطمئن شود که این بلاک با فایل تورنت متناسب است. سپس به دنبال کسی میگردد که این فایل را برایش آپلود کند.
اگرچه BitTorrent پروتوکل خوبی برای کاربران پهن باند (BroadBand) میباشد، برای اتصالات dial up که بطور مداوم قطع میشوند، کمتر کارایی دارد. به بیان دیگر سرورهای HTTP زیادی اتصالات خود را برای ساعات طولانی قطع میکنند. در حالیکه تورنتهای زیادی وجود دارند که هنوز دان لود خود را تکمیل نکردهاند.