بيت تورنت BitTorrent
شبكهی منزل به منزل تنها شبكهای است كه اختلاف طبقاتی در آن وجود ندارد و صلاحیت و اعتبار هر عضو آن به اندازهی سایر اعضا و همسایگان او در شبكه است. كلیهی اعضای این شبكه در یك تراز قرار میگیرند و پهلو به پهلوی هم در داد و ستد فایلها مشاركت مینمایند.
***
مفهوم بیتتورنت به وسیلهی برنامهنویسی به نام «برامكوهن» اختراع گردید. این آدم نابغه ، بیتتورنت را به این دلیل طراحی كرد تا حجم عظیمی از دادهها را بدون آنكه منابع عرضِ باند و توان میزبانها را مصروف خود نمایند، در سطحی وسیع و در حجمی انبوه، توزیع نموده و در اختیار همه قرار دهد. به همین خاطر، در حال حاضر ترافیك مبتنی بر بیتتورنت تقریباً 35 درصد كل ترافیك اینترنت را به خود مشغول كرده است.
نرمافزار اصلی بیتتورنت به زبان «پیتون» نوشته شد و از آنجا كه صورت برنامهی آن تحت گواهینامهی منابع آزاد بیتتورنت منتشر گردید، خیلیها بخت خود را در نوشتن نرمافزارهای مشابهاش آزمودند. به همین جهت در حال حاضر، تعداد زیادی برنامههای متولی بیتتورنت وجود دارد كه به زبانهای مختلفی نوشته شدهاند و روی طیف زیادی از سیستمهای عامل به اجرا در میآیند.
نتیجهای كه از این چند جمله گرفتهمیشود از این قرار است:
بیتتورنت یك نوع شبكهی اشتراكی است كه برای دانلودكردن فایلهای قطور چندصد مگابایتی و حتا چند گیگابایتی جان میدهد!
بیتتورنت چطور كار میكند...
بیتتورنت به میزانی باورنكردنی، فشار وارد بر میزبانها را تقلیل میدهد، زیرا كاربران در عمل فایلها را از روی كامپیوترهای یك دیگر دانلود میكنند و نه از روی یك كامپیوتر مركزی واحد. در این روش، كامپیوتر مركزی.....
در این روش، كامپیوتر مركزی (كه به آن «بذرافشان» میگویند)، فقط یك نسخه از یك فایل را (كه به آن «بذر» میگویند) برای تمام متقاضیان یا اعضای شبكه ارسال میكند، آنهم به این ترتیب كه ابتدا آن را مانند یك جورچین به تعدادی بُرش یا قطعات كوچكتر تقسیم كرده و سپس هركدام از این قطعات، به تنهایی از جانبِ یك عضو به طرف عضو دیگر فرستاده میشوند. در نتیجه هر عضوی قطعات مورد نیازش را- كه برای تكمیل جورچینِ فایل اصلی لازم دارد- از اعضای دیگر میگیرد.
همانطور كه گفته شد، بر طبق موازین بیتتورنت، ابتدا فایل اصلی یا به اصطلاح «بذر» به برشهایی كوچك تقسیم میگردد كه معمولاً قطر هركدام از آنها به یكچهارم مگابایت (یعنی 256 كیلوبایت) میرسند. منتها هرقدر فایل مورد نظر بزرگتر باشد، اندازهی هر بُرش یا هر قطعهی آن نیز به همان نسبت بزرگتر میشود؛ برای مثال یك فایل 37/4 گیگابایتی دارای برشهایی به اندازهی 4 مگابایت (4096 كیلوبایت) خواهد بود.
به این ترتیب، بیتتورنت را میتوان یك نوع جورچین اینترنتی به حساب آورد، چرا كه یك فایل بسیار قطور به تعداد زیادی قطعهی كوچك تقسیم میشود و سپس تمام این قطعات در بین یك سری از اعضا تقسیم میشود، طوری كه هر عضو فقط صاحب تعدادی از این قطعات میشود. از آن به بعد، خودِ اعضا با هم طرف میشوند و هر كدام از آنها قطعاتی را كه ندارند از اعضایی كه آن قطعهها را ندارند، میگیرند. وقتی، هر عضوِ شبكه صاحب تمام قطعات فایل مورد نظر گردید، درست كردنِ جورچین را تمام خواهد كرد و یك فایل درُسته به دست خواهد آورد.
در این روش، هیچ عضوی نمیتواند فقط دریافت كند، و یا فقط ارسال نماید. در حقیقت، صلاحیت هر عضو شبكه، مشروط به ارسال كردن (دادن یا به اصطلاح آپلود) و دریافت كردن (ستاندن یا به اصطلاح دانلود) در آنِ واحد است.
برای آنكه بهتر متوجه این تفاوت شوید، آن را با روش معمول میزبان-متقاضی (كه نوعی شبكهی ارباب-رعیتی است) مقایسه میكنیم كه در حال حاضر، متداولترین روش داد و ستد و نقل و انتقال فایلها در اینترنت است.
در مدل میزبان- متقاضی یك میزبان مركزی (ارباب) وجود دارد كه كل فایل را برای هر یك از متقاضیان آن (رعیتها) ارسال میكند ( این همان مدلی است كه آییننامههای HTTP و FTP بر طبق آن تدوین شدهاند). در این روش، متقاضیان فقط با میزبان صحبت میكنند، و هیچ وقت با هم دیگر طرف نمیشوند. مهمترین حسن این روش آن است كه اولاً ترتیب دادنِ آن خیلی ساده است، و ثانیاً فایلها معمولاً همیشه در دسترس قرار دارند؛ البته به شرط آنكه میزبانی كه خود را وقف این كار كرده است، همیشه روشن باشد و همیشه هم متصل به اینترنت بماند.
منتها این مدل یك مشكل عمده نیز دارد كه به فایلهایی مربوط میشود كه یا خیلی حجیم هستند و یا خیلی پر طرفدار، و یا هردو. در حقیقت، برای توزیع چنین فایلی و ارسال آن برای هر یك از متقاضیان، مقدار بسیار زیادی از پهنای باند و منابع میزبان صرف میشود. شاید بارها با این مشكل برخورد كرده باشید كه وقتی خواستهاید فایلی را دانلود كنید، به علت زیادی تعداد متقاضیان، مدت زیادی در صف به انتظار ایستادهاید.
از طرف دیگر، بسیاری از میزبانهای HTTP (مبتنی بر شبكهی ارباب-رعیتی) برای چندین ساعت از كار میافتند، در حالی كه بسیاری از تورنتها تا چند روز باقی میمانند تا یك دانلود چند روزه نیز به اتمام رسد؛ چیزی كه معمولاً برای فایلهای خیلی قطور لازم است.
به همین دلیل است كه بیتتورنت به صورت پروتكل مناسبی برای كاربران اینترنت پرسرعت درآمده است، و كمتر به درد اینترنت تلفنی میخورد زیرا قطع و وصلهای متعددی در این روش اتصال رخ میدهند كه موجب اختلال میگردد. .
در مقایسه با شبكهی اربابرعیتی (میزبان- متقاضی)، هرچند بیتتورنت نیز پروتكلی است كه برای رد و بدل كردن فایلها طراحی شده است، ولی ذاتاً یك ماهیت غیر طبقاتی و مبتنی بر یك سطح دارد، به این معنی كه خود كاربران مستقیماً به كامپیوتر یكدیگر وصل میشوند تا بخشهایی از فایل را برای هم ارسال كرده و یا دریافت كنند. در این روش، افراد متقاضی، بخشهایی را كه از یك فایل خاص دارند، برای دیگران ارسال میكنند، و بخشهایی از همان فایل را كه ندارند از دیگران دریافت مینمایند.
در تشكیلات بیتتورنت، یك كامپیوتر مركزی به نام «ردیاب» وجود دارد كه نقشِ هماهنگ كنندهی عملیات را برای تمام چنین منزلهایی بازی میكند. ردیاب فقط اتصالات را زیر نظر میگیرد، و اصلاً هیچ اطلاعی از مندرجات فایلهایی كه در حال رد و بدل شدن هستند، ندارد. در نتیجه تعداد بسیار زیادی از كاربران میتوانند با اشغال عرض نسبتاً كمی از باند ردیاب، به عضویت این شبكه درآیند.
فلسفهی كلیدی بیتتورنت در این است كه كاربران موظف هستند در همان زمانی كه مشغول دانلود كردناند (دریافت به داخل)، آپلود هم بكنند (ارسال به بیرون). در این صورت، از پهنای باند شبكه تا حد امكان، استفادهی بهینه میشود. در واقع هر قدر تعداد افراد علاقهمند به یك فایل خاص بیشتر باشند، بیتتورنت بهتر میتواند كار كند، كه این هم در مقایسه با سایر پروتكلهای انتقال فایل و از جمله پروتكل سنتی میزبان و متقاضی، از برتری خاصی برخوردار است.
برای آنكه تصور بهتری از این بدهبستان پیدا كنید، بهتر است گروهی از افراد را كه دور یك میز نشستهاند، در نظر بگیرید.
هدف از این جلسه، توزیع یك نسخه از یك كتاب در بین تمام حاضرین است. ریاست این جلسه به عهدهی شخصی است كه در صدر میز نشسته است و خود را آقای «بذرافشان» میخواند.
قرار است آقای بذرافشان، به هر یك از حاضرین تعدادی از صفحات این كتاب را بدهد و سپس خود را كنار بكشد تا آنها این صفحات را بین هم بچرخانند و همگی صاحب یك نسخهی كامل از كتاب مورد نظر شوند.
بنابراین در ابتدای جلسه و همان لحظهای كه هر یك از مدعوین وارد میشوند، ابتدا باید خود را به رییس جلسه معرفی كرده و سپس تعدادی از فصلهای كتاب را از دست او بگیرند. منتها این افراد آنقدر حواسشان جمع است كه همهی آنها یك سری صفحات تكراری را از او نگیرند. پس از رسمیت یافتنِ جلسه، هر چند حجم زیادی از كل كتاب بین همهی حاضرین تقسیم شده است، امّا حتا یك نفر هم پیدا نمیشود كه كل كتاب را به تنهایی داشته باشد.
هر شخصی كه دور این میز نشسته باشد، هم میتواند با هر یك از افراد دیگر حرف بزند، و هم میتواند به حرفهای او گوش دهد. هر كدام از این افراد سعی دارند یك نسخهی كامل از یك كتاب را بگیرند. شخص «الف» اعلام میكند كه صفحاتِ 1 تا 10، 23، 42 تا 50، و 75 را دارد. هركدام از اشخاص «ب»، «ج»، و «د» نیز دنبال تعدادی از صفحاتی میگردند كه شخص «الف» دارد.
بنابراین این قرار و مدار را بین هم میگذارند تا شخص «الف» به هریك از آنها، یك كپی از صفحاتی را كه ندارند، بدهد.
شخص «ب» نیز اعلام میكند كه او صفحات 11 تا 12، 31 تا 37، و 63 تا 70 را دارد. اشخاص «الف»، «د»، و «ج» نیز به او میگویند كه به تعدادی از صفحات او هم احتیاج دارند، بنابراین او نیز یك كپی از صفحاتی را كه دارد، به آنها میدهد. این گفتوگوها آنقدر ادامه پیدا میكند تا هر یك از حاضرین بگوید كه چه صفحاتی را دارد (و همچنین چه صفحاتی را ندارد.)
در آخر ، افراد دور میز با هم هماهنگ میكنند كه بخشهایی از این كتاب را با هم رد و بدل نمایند تا آنكه، هر یك از آنها، صاحب یك نسخهی كاملِ كتاب گردد. البته، در این میان، تنها كسی كه نیازی ندارد كه كسی برایش چیزی بفرستد، همان آقای بذرافشان است چرا كه از اول یك نسخهی كامل از كتاب را داشته است. آقای بذرافشان فقط در مورد صفحاتی جواب پس میدهد كه نزدِ هیچ كس دیگری از حاضرین این میزِ گرد نباشند.
به این ترتیب، ریاست این جلسه میتواند كتابی را كه دارد با افراد زیادتری تقسیم كند، آن هم بدون اینكه مجبور باشد یك نسخهی كامل از آن را به هر كس كه میخواهد، بدهد.
***
مفهوم بیتتورنت به وسیلهی برنامهنویسی به نام «برامكوهن» اختراع گردید. این آدم نابغه ، بیتتورنت را به این دلیل طراحی كرد تا حجم عظیمی از دادهها را بدون آنكه منابع عرضِ باند و توان میزبانها را مصروف خود نمایند، در سطحی وسیع و در حجمی انبوه، توزیع نموده و در اختیار همه قرار دهد. به همین خاطر، در حال حاضر ترافیك مبتنی بر بیتتورنت تقریباً 35 درصد كل ترافیك اینترنت را به خود مشغول كرده است.
نرمافزار اصلی بیتتورنت به زبان «پیتون» نوشته شد و از آنجا كه صورت برنامهی آن تحت گواهینامهی منابع آزاد بیتتورنت منتشر گردید، خیلیها بخت خود را در نوشتن نرمافزارهای مشابهاش آزمودند. به همین جهت در حال حاضر، تعداد زیادی برنامههای متولی بیتتورنت وجود دارد كه به زبانهای مختلفی نوشته شدهاند و روی طیف زیادی از سیستمهای عامل به اجرا در میآیند.
نتیجهای كه از این چند جمله گرفتهمیشود از این قرار است:
بیتتورنت یك نوع شبكهی اشتراكی است كه برای دانلودكردن فایلهای قطور چندصد مگابایتی و حتا چند گیگابایتی جان میدهد!
بیتتورنت چطور كار میكند...
بیتتورنت به میزانی باورنكردنی، فشار وارد بر میزبانها را تقلیل میدهد، زیرا كاربران در عمل فایلها را از روی كامپیوترهای یك دیگر دانلود میكنند و نه از روی یك كامپیوتر مركزی واحد. در این روش، كامپیوتر مركزی.....
در این روش، كامپیوتر مركزی (كه به آن «بذرافشان» میگویند)، فقط یك نسخه از یك فایل را (كه به آن «بذر» میگویند) برای تمام متقاضیان یا اعضای شبكه ارسال میكند، آنهم به این ترتیب كه ابتدا آن را مانند یك جورچین به تعدادی بُرش یا قطعات كوچكتر تقسیم كرده و سپس هركدام از این قطعات، به تنهایی از جانبِ یك عضو به طرف عضو دیگر فرستاده میشوند. در نتیجه هر عضوی قطعات مورد نیازش را- كه برای تكمیل جورچینِ فایل اصلی لازم دارد- از اعضای دیگر میگیرد.
همانطور كه گفته شد، بر طبق موازین بیتتورنت، ابتدا فایل اصلی یا به اصطلاح «بذر» به برشهایی كوچك تقسیم میگردد كه معمولاً قطر هركدام از آنها به یكچهارم مگابایت (یعنی 256 كیلوبایت) میرسند. منتها هرقدر فایل مورد نظر بزرگتر باشد، اندازهی هر بُرش یا هر قطعهی آن نیز به همان نسبت بزرگتر میشود؛ برای مثال یك فایل 37/4 گیگابایتی دارای برشهایی به اندازهی 4 مگابایت (4096 كیلوبایت) خواهد بود.
به این ترتیب، بیتتورنت را میتوان یك نوع جورچین اینترنتی به حساب آورد، چرا كه یك فایل بسیار قطور به تعداد زیادی قطعهی كوچك تقسیم میشود و سپس تمام این قطعات در بین یك سری از اعضا تقسیم میشود، طوری كه هر عضو فقط صاحب تعدادی از این قطعات میشود. از آن به بعد، خودِ اعضا با هم طرف میشوند و هر كدام از آنها قطعاتی را كه ندارند از اعضایی كه آن قطعهها را ندارند، میگیرند. وقتی، هر عضوِ شبكه صاحب تمام قطعات فایل مورد نظر گردید، درست كردنِ جورچین را تمام خواهد كرد و یك فایل درُسته به دست خواهد آورد.
در این روش، هیچ عضوی نمیتواند فقط دریافت كند، و یا فقط ارسال نماید. در حقیقت، صلاحیت هر عضو شبكه، مشروط به ارسال كردن (دادن یا به اصطلاح آپلود) و دریافت كردن (ستاندن یا به اصطلاح دانلود) در آنِ واحد است.
برای آنكه بهتر متوجه این تفاوت شوید، آن را با روش معمول میزبان-متقاضی (كه نوعی شبكهی ارباب-رعیتی است) مقایسه میكنیم كه در حال حاضر، متداولترین روش داد و ستد و نقل و انتقال فایلها در اینترنت است.
در مدل میزبان- متقاضی یك میزبان مركزی (ارباب) وجود دارد كه كل فایل را برای هر یك از متقاضیان آن (رعیتها) ارسال میكند ( این همان مدلی است كه آییننامههای HTTP و FTP بر طبق آن تدوین شدهاند). در این روش، متقاضیان فقط با میزبان صحبت میكنند، و هیچ وقت با هم دیگر طرف نمیشوند. مهمترین حسن این روش آن است كه اولاً ترتیب دادنِ آن خیلی ساده است، و ثانیاً فایلها معمولاً همیشه در دسترس قرار دارند؛ البته به شرط آنكه میزبانی كه خود را وقف این كار كرده است، همیشه روشن باشد و همیشه هم متصل به اینترنت بماند.
منتها این مدل یك مشكل عمده نیز دارد كه به فایلهایی مربوط میشود كه یا خیلی حجیم هستند و یا خیلی پر طرفدار، و یا هردو. در حقیقت، برای توزیع چنین فایلی و ارسال آن برای هر یك از متقاضیان، مقدار بسیار زیادی از پهنای باند و منابع میزبان صرف میشود. شاید بارها با این مشكل برخورد كرده باشید كه وقتی خواستهاید فایلی را دانلود كنید، به علت زیادی تعداد متقاضیان، مدت زیادی در صف به انتظار ایستادهاید.
از طرف دیگر، بسیاری از میزبانهای HTTP (مبتنی بر شبكهی ارباب-رعیتی) برای چندین ساعت از كار میافتند، در حالی كه بسیاری از تورنتها تا چند روز باقی میمانند تا یك دانلود چند روزه نیز به اتمام رسد؛ چیزی كه معمولاً برای فایلهای خیلی قطور لازم است.
به همین دلیل است كه بیتتورنت به صورت پروتكل مناسبی برای كاربران اینترنت پرسرعت درآمده است، و كمتر به درد اینترنت تلفنی میخورد زیرا قطع و وصلهای متعددی در این روش اتصال رخ میدهند كه موجب اختلال میگردد. .
در مقایسه با شبكهی اربابرعیتی (میزبان- متقاضی)، هرچند بیتتورنت نیز پروتكلی است كه برای رد و بدل كردن فایلها طراحی شده است، ولی ذاتاً یك ماهیت غیر طبقاتی و مبتنی بر یك سطح دارد، به این معنی كه خود كاربران مستقیماً به كامپیوتر یكدیگر وصل میشوند تا بخشهایی از فایل را برای هم ارسال كرده و یا دریافت كنند. در این روش، افراد متقاضی، بخشهایی را كه از یك فایل خاص دارند، برای دیگران ارسال میكنند، و بخشهایی از همان فایل را كه ندارند از دیگران دریافت مینمایند.
در تشكیلات بیتتورنت، یك كامپیوتر مركزی به نام «ردیاب» وجود دارد كه نقشِ هماهنگ كنندهی عملیات را برای تمام چنین منزلهایی بازی میكند. ردیاب فقط اتصالات را زیر نظر میگیرد، و اصلاً هیچ اطلاعی از مندرجات فایلهایی كه در حال رد و بدل شدن هستند، ندارد. در نتیجه تعداد بسیار زیادی از كاربران میتوانند با اشغال عرض نسبتاً كمی از باند ردیاب، به عضویت این شبكه درآیند.
فلسفهی كلیدی بیتتورنت در این است كه كاربران موظف هستند در همان زمانی كه مشغول دانلود كردناند (دریافت به داخل)، آپلود هم بكنند (ارسال به بیرون). در این صورت، از پهنای باند شبكه تا حد امكان، استفادهی بهینه میشود. در واقع هر قدر تعداد افراد علاقهمند به یك فایل خاص بیشتر باشند، بیتتورنت بهتر میتواند كار كند، كه این هم در مقایسه با سایر پروتكلهای انتقال فایل و از جمله پروتكل سنتی میزبان و متقاضی، از برتری خاصی برخوردار است.
برای آنكه تصور بهتری از این بدهبستان پیدا كنید، بهتر است گروهی از افراد را كه دور یك میز نشستهاند، در نظر بگیرید.
هدف از این جلسه، توزیع یك نسخه از یك كتاب در بین تمام حاضرین است. ریاست این جلسه به عهدهی شخصی است كه در صدر میز نشسته است و خود را آقای «بذرافشان» میخواند.
قرار است آقای بذرافشان، به هر یك از حاضرین تعدادی از صفحات این كتاب را بدهد و سپس خود را كنار بكشد تا آنها این صفحات را بین هم بچرخانند و همگی صاحب یك نسخهی كامل از كتاب مورد نظر شوند.
بنابراین در ابتدای جلسه و همان لحظهای كه هر یك از مدعوین وارد میشوند، ابتدا باید خود را به رییس جلسه معرفی كرده و سپس تعدادی از فصلهای كتاب را از دست او بگیرند. منتها این افراد آنقدر حواسشان جمع است كه همهی آنها یك سری صفحات تكراری را از او نگیرند. پس از رسمیت یافتنِ جلسه، هر چند حجم زیادی از كل كتاب بین همهی حاضرین تقسیم شده است، امّا حتا یك نفر هم پیدا نمیشود كه كل كتاب را به تنهایی داشته باشد.
هر شخصی كه دور این میز نشسته باشد، هم میتواند با هر یك از افراد دیگر حرف بزند، و هم میتواند به حرفهای او گوش دهد. هر كدام از این افراد سعی دارند یك نسخهی كامل از یك كتاب را بگیرند. شخص «الف» اعلام میكند كه صفحاتِ 1 تا 10، 23، 42 تا 50، و 75 را دارد. هركدام از اشخاص «ب»، «ج»، و «د» نیز دنبال تعدادی از صفحاتی میگردند كه شخص «الف» دارد.
بنابراین این قرار و مدار را بین هم میگذارند تا شخص «الف» به هریك از آنها، یك كپی از صفحاتی را كه ندارند، بدهد.
شخص «ب» نیز اعلام میكند كه او صفحات 11 تا 12، 31 تا 37، و 63 تا 70 را دارد. اشخاص «الف»، «د»، و «ج» نیز به او میگویند كه به تعدادی از صفحات او هم احتیاج دارند، بنابراین او نیز یك كپی از صفحاتی را كه دارد، به آنها میدهد. این گفتوگوها آنقدر ادامه پیدا میكند تا هر یك از حاضرین بگوید كه چه صفحاتی را دارد (و همچنین چه صفحاتی را ندارد.)
در آخر ، افراد دور میز با هم هماهنگ میكنند كه بخشهایی از این كتاب را با هم رد و بدل نمایند تا آنكه، هر یك از آنها، صاحب یك نسخهی كاملِ كتاب گردد. البته، در این میان، تنها كسی كه نیازی ندارد كه كسی برایش چیزی بفرستد، همان آقای بذرافشان است چرا كه از اول یك نسخهی كامل از كتاب را داشته است. آقای بذرافشان فقط در مورد صفحاتی جواب پس میدهد كه نزدِ هیچ كس دیگری از حاضرین این میزِ گرد نباشند.
به این ترتیب، ریاست این جلسه میتواند كتابی را كه دارد با افراد زیادتری تقسیم كند، آن هم بدون اینكه مجبور باشد یك نسخهی كامل از آن را به هر كس كه میخواهد، بدهد.
+ نوشته شده در شنبه بیست و سوم بهمن ۱۳۸۹ ساعت 15:10 توسط لادن ثمری
|