شبکه P2P یا همتا به همتا ، شبکه ای است که در آن گروهی از افراد یا ماشین ها به صورت کاملاً غیرمتمرکز مشارکت می کنند. به این معنا که شبکه ای است که در آن نقطه مرکزی اتصال یا کنترل متمرکز وجود ندارد و طرفین به طور مستقل با یک پروتکل ارتباطی و اجماع مشترک پاسخ می دهند . به این ترتیب اعضای شبکه می توانند به صورت مستقیم و بدون واسطه به تبادل اطلاعات بپردازند.

برای رسیدن به این هدف، شبکه‌های P2P بر روی پروتکل‌هایی ساخته می‌شوند که روی پروتکل‌های اینترنت (همچنین به عنوان TCP/IP شناخته می‌شوند) اجرا می‌شوند. از این رو، پروتکل‌های P2P ، طبق مدل Open Systems Interconnection یا OSI ، پروتکل‌های کاربردی یا لایه ۷ نامیده می‌شوند . این بدان معناست که پروتکل‌های P2P برای عملکرد به استفاده از پروتکل‌های انتزاعی‌تر دیگری نیاز دارند، اما در عین حال ساخت و عملکرد آنها را آسان‌تر می‌کند.

به همین دلیل، پروتکل‌های P2P از زمان ایجادشان برای کاربردهای مختلف به طور گسترده مورد استفاده قرار گرفته‌اند. یک چیز بسیار واضح وجود دارد، پروتکل‌های P2P بسیار قدرتمند هستند و اجازه ایجاد ساختارهای غیرمتمرکز را می‌دهند که به سختی قابل اعتراض و استفاده رایگان هستند. به همین دلیل، ارزهای رمزپایه مانند بیت کوین بر اساس پروتکل های P2P ساخته شدند.

با این حال، اجازه دهید کمی بیشتر در مورد این پروتکل ها و تکامل آنها بیاموزیم.

منشا و تاریخچه P2P

منشاء اولین شبکه P2P، ما می توانیم آن را تا زمان ایجاد پروتکل UUCP یا Unix to Unix Copy Protocol در سال ۱۹۸۰ ردیابی کنیم. این پروتکل ساده باعث ایجاد شبکه معروف USENET و BBS شبکه هایی شد که هنوز هم فعال هستند. یک مثال خوب از این شبکه، BBS EffectLinux است که هنوز برای کسانی که طرفدار سیستم ارتباطی نوستالژیک خود هستند فعال است.

اصل کار این سیستم ها ساده است: دستگاه با استفاده از یک مودم یک تماس اتصال (اتصال dial-up) برقرار می کند، با دستگاه مورد نظر ارتباط برقرار می کند و آنها می توانند اطلاعات را نقطه به نقطه بدون واسطه به اشتراک بگذارند . در پایان تماس اتصال، کاربر می‌تواند اتصال دیگری را با دستگاه دیگری آغاز کند و فرآیند را دوباره شروع کند. شایان ذکر است که همه اینها بدون ساختاری مانند اینترنت که امروزه می شناسیم امکان پذیر بود، شبکه و فناوری که در آن زمان هنوز در حال توسعه بود.

در آن زمان USENET و پروتکل UUCP اوج ارتباطات بودند. در واقع حرکت سایفرپانک با استفاده از این پروتکل شروع شد. شخصیت هایی مانند Saint Jude ، Eric Hughes ، Timothy C. May ، David Chaum از این سیستم ها برای به اشتراک گذاشتن اطلاعات در تابلوهای BBS جامعه Cypherpunks استفاده کردند. این سال‌های اولیه محاسبات بود، و در آن زمان، نگاهی اجمالی به احتمالات آینده این نوع پروتکل‌ها و رایانه‌های بسیار قدرتمندتر و توانمندتر وجود داشت.

بعداً در سال ۱۹۸۳ پروتکل TCP/IP . اساساً، این پروتکل جدید به دنبال ایجاد انعطاف‌پذیری بیشتر در ایجاد شبکه‌های بزرگ جهانی بود، در واقع پایه و اساس ساخت چیزی است که امروزه به نام اینترنت می‌شناسیم. مورد دوم زمانی واقعاً ممکن شد که سیستم یا مدل OSI (تعریف هفت لایه انتزاعی که در حال حاضر در اینترنت داریم) در سال ۱۹۸۹ و سرانجام با ورود پروتکل WWW (وب جهانی) در سال ۱۹۹۰ امکان پذیر شد.

انواع شبکه های P2P

از انواع شبکه های P2P موجود می توان موارد زیر را مشخص کرد:

  • شبکه غیر متمرکز و ساختار یافته این نوع شبکه ها به شبکه های ترکیبی P2P معروف هستند. در این نوع شبکه ها هیچ دایرکتوری روی سرور مرکزی وجود ندارد، بلکه یک سری گره یا همتا وجود دارد که توانایی دریافت درخواست اطلاعات و پاسخگویی به آنها برای تسهیل دسترسی به منابع را دارند. برای جلوگیری از متمرکز شدن این عملکرد، گره‌ها یا همتایان خاص می‌توانند توسط هر کسی نصب و پیکربندی شوند، در نتیجه به دنبال این هستند که همان جامعه کاربران، عملکرد شبکه را گسترش داده و امکان عملکرد صحیح آن را فراهم کنند. نمونه بارز این نوع شبکه، شبکه های فدرال مانند Diaspora یا Mastodon است.
  • شبکه غیرمتمرکز و بدون ساختار در این نوع شبکه P2P هیچ کامپیوتر یا گره ای وجود ندارد که به عنوان کنترل کننده مرکزی درخواست ها عمل کند. برعکس، هر گره در شبکه عملکردهای مشابهی با بقیه گره ها دارد، بنابراین هر گره جدید همان اختیارات را اعمال می کند. در این مرحله، شبکه‌هایی مانند بیت‌کوین این ویژگی‌ها را دارند، زیرا هر گره متصل قابلیت‌های مشابهی با بقیه دارد.

یک شبکه P2P چگونه کار می کند؟

عملکرد یک شبکه P2P نسبتا ساده است. اساساً کاری که انجام می شود ساخت یک پروتکل (زبان) ارتباطی است که به افرادی که از نرم افزار مذکور استفاده می کنند اجازه می دهد مستقیماً و بدون واسطه با رایانه های دیگر ارتباط برقرار کنند. با این حال، بزرگترین مشکل در هنگام ساخت این سیستم ها این است. چگونه سیستمی طراحی کنیم که برای برقراری ارتباط با رایانه های دیگری که همان نرم افزار را اجرا می کنند، نیازی به دایرکتوری متمرکز نداشته باشد؟ 

یک مشکل پیچیده، اما این وضعیت را می توان به طور کاملا موثر با دو اقدام کاملاً تعریف شده حل کرد:

  1. ابتدا نرم افزار را قادر به اشتراک گذاری اطلاعات اتصال در مورد کسانی کنید که آن را اجرا می کنند. بنابراین، هر رایانه ای که نرم افزار را اجرا می کند، می تواند فهرستی از رایانه های متصل را داشته باشد و از آنها برای اتصال به گره مورد نظر خود استفاده کند.
  2. ترغیب حداکثر غیرمتمرکز ممکن شبکه. یعنی افراد زیادی را با ایجاد گره های خود و در نتیجه افزایش اندازه شبکه، نرم افزار را اجرا کنید. به این ترتیب دامنه و امکانات آن بهبود می یابد.

یعنی هر چه همتایان (کامپیوترهای دارای نرم افزار P2P) شبکه بیشتر باشد، احتمال سانسور شدن شبکه بیشتر می شود، عملکرد آن مقاوم تر و قابلیت های بهتری خواهد داشت. در سیستم‌های P2P اولیه، مانند USENET یا IRC ، سیستم‌ها و اتصالات آن‌ها از طریق ابزارهای مکتوب، تماس‌ها یا همان سیستمی که دارای بردی از همتایان برای اتصال بود، شناخته می‌شد. بنابراین، هر یک از اعضای جدید در شبکه به لیست همتایان دسترسی داشتند و خود را اضافه می کردند تا در صورت نیاز دیگران بتوانند با آنها ارتباط برقرار کنند. نه تنها این، آن همتای جدید می تواند دروازه ای برای دسترسی به اطلاعات همتایان باشد که می توانند مسدود شوند.

اما شبکه‌های بزرگ‌تری مانند IRC، DCC ، DC ++ ، Napster ، Gnutella ، BitTorrent و حتی بیت‌کوین به‌شدت این را تغییر دادند. اکنون هر گره به یک نقطه متصل شده است، آنها لیستی از همتایان اولیه (یا گره های seed) را دریافت می کنند. و از آنجا که، هر گره قادر است لیست خود را از گره هایی که به شبکه تعلق دارند را دوباره ایجاد کند. در نتیجه، مقاومت سانسور بهتری به دست می آید و شبکه می تواند سریعتر رشد کند.

البته عملکرد هر پروتکل متفاوت است. به عنوان مثال، IRC یک سیستم توزیع شده (تقریبا متمرکز) از سرورها است که می تواند به شما امکان اتصال نقطه به نقطه با یک شخص را بدهد. اما DC + و Gnutella کاملاً غیرمتمرکز هستند، شبکه های آنها به گونه ای طراحی شده اند که شبکه به طور خودکار با ورود و خروج گره های جدید به شبکه تنظیم می شود.

همین اتفاق در بیت کوین رخ می دهد، جایی که شبکه با یک seed شروع شد، همان چیزی که توسط ساتوشی ناکاموتو شروع شد ، و از آن زمان، شبکه به تدریج رشد کرد و به شبکه ای با اندازه بیش از ۱۰ هزار گره فعال تبدیل شد. البته، هدف بیت کوین با هدف شبکه ای مانند Gnutella متفاوت است، اما اصول پروتکل همچنان باقی است: ارتباط با دو طرف بدون واسطه.

مزایا و معایب این فناوری

مزایای

  1. یک شبکه P2P در برابر سانسور مقاوم است. سانسور یک شبکه P2P بسیار غیرمتمرکز عملا غیرممکن است.
  2. آنها انعطاف پذیری بی نظیری را ارائه می دهند. اگر یک گره بیفتد، گره دیگری می تواند جای آن را بگیرد. به همین دلیل است که می‌گویند شبکه‌های P2P می‌توانند از یک فاجعه هسته‌ای جان سالم به در ببرند، زیرا می‌توانند بسیاری از گره‌ها را از بین ببرند، اما اگر تنها یکی زنده بماند، می‌توان شبکه را به طور کامل بازسازی کرد.
  3. شبکه‌های P2P می‌توانند به راه‌حل‌های مقیاس‌پذیری قدرتمند برای ارائه خدمات منحصربه‌فرد با دسترسی جهانی منجر شوند.
  4. با عدم وابستگی به نهادهای مرکزی، P2P ها اعتماد بیشتری را در کاربران خود ایجاد می کنند. 
  5. آنها سطح بالایی از پهنای باند را ارائه می دهند. این به لطف این واقعیت است که آنها از پهنای باند هر شرکت کننده استفاده می کنند تا آن را به شبکه خود تبدیل کنند.
  6. آنها برای انتقال اطلاعات دیجیتال از هر نوع خدمت می کنند . از آهنگ مورد علاقه شما تا صدها میلیون دلار، در چند ثانیه.

معایب

  1. یک شبکه P2P در برابر سانسور مقاوم است، اما شما را ناشناس نمی کند مگر اینکه برای آن طراحی شده باشد، حتی اگر آن شبکه از رمزگذاری استفاده کند. بهترین مثال BitTorrent است، جایی که ISP ها می توانند استفاده از پروتکل را تشخیص دهند و در نتیجه به مقامات در مورد دانلود غیرقانونی توسط کاربر هشدار دهند.
  2. طراحی شبکه های P2P به این معنی است که هر چه زمان تاخیر بیشتر شود، افزایش می یابد. یعنی برای اینکه اطلاعات به تمام قسمت های تشکیل دهنده شبکه برسد، در یک شبکه بزرگ P2P نسبت به شبکه کوچکتر زمان بیشتری نیاز است. از این رو، الگوریتم‌ها و پروتکل‌های جدیدی برای کمک به غلبه بر این مشکل به‌دنبال هستند.
  3. پروتکل های P2P تعدادی مشکلات ساختاری شناخته شده دارند. مواردی مانند حملات MITM برای کنترل گره ها، زیرا باید همیشه به صورت عمومی متصل شوند، یکی از این شکست هاست. همچنین پروتکل ها مستعد حملات مسیریابی یا چیزهایی به مخفی کاری مانند حمله کسوف یا حمله Erebus هستند.

بیت کوین، یک شبکه P2P برای مدیریت ارزش

بیت کوین یکی از بزرگترین شبکه های P2P است که امروزه وجود دارد، با بیش از ۱۰ هزار گره فعال ، بیت کوین یک شبکه جهانی است که به کاربران خود اجازه می دهد ارزش را بدون واسطه مدیریت کنند. تنها کاری که باید انجام دهید این است که نرم افزاری را دانلود کنید که به شما امکان تعامل با این شبکه را می دهد و اکنون می توانید از آن استفاده کنید.

ساخت بیت کوین به عنوان یک شبکه P2P به نیاز به تمرکززدایی از قابلیت های آن پاسخ می دهد. ایجاد یک ارز دیجیتال بی فایده است، اگر توسط یک نهاد مرکزی مدیریت شود. این به سادگی ایجاد یک بانک مرکزی جدید خواهد بود. در عوض، ساتوشی ناکاموتو خواهان یک شبکه جهانی، بدون سانسور، امن و خصوصی بود که امکان مدیریت ارزش را فراهم کند. بنابراین برای این کار، ناکاموتو بیت کوین را بر اساس یک شبکه P2P با استفاده از پروتکل خود طراحی کرد که تحت اصول پروتکل Kademlia و پروتکل Gossip طراحی شده است .

نتیجه این است که بیت کوین یک شبکه P2P است که عملا نمی توان آن را متوقف کرد. حتی با وجود ایرادات ساختاری، پروتکل P2P بهترین تصمیم ناکاموتو در طراحی بیت کوین بود. با این کار، او مطمئن شد که پول دیجیتالی ایجاد می کند که در خدمت منافع جهان و کاربران آن باشد.

 

P2P برای حل مشکلات پول دیجیتال

بهتر از همه، بیت کوین با سیستم P2P خود توانسته است یک سیستم حسابداری توزیع شده ایجاد کند که در آن مشکلاتی مانند هزینه مضاعف مربوط به گذشته است. دوبرابر کردن یکی از مشکلات اصلی پول دیجیتال بود. امکان دو برابر کردن پول و جعل آن چیزی بود که هیچ راه حلی نداشت تا اینکه ساتوشی ناکاموتو بلاک چین و پروتکل P2P آن را برای بیت کوین طراحی کرد.

از آن زمان، ما می‌توانیم از ارزهای رمزپایه با امنیت کامل استفاده کنیم، زیرا می‌دانیم که پول ما نه تنها در یک پروتکل باز، شفاف و رایگان است، بلکه هرگز نمی‌توان آن را جعل کرد. و همه اینها به این دلیل است که هر گره دارای تاریخچه ای از تراکنش های شبکه است که شاهد هر عملیات روی آن است. این شبکه عظیم شاهدان، به‌عنوان یک رکورد تغییرناپذیر از هر اتفاقی باقی می‌ماند و به ما این اطمینان را می‌دهد که سیستم قابل دستکاری نیست.

چیزی واقعا مفید است که به شما امکان می دهد بیت کوین را به یک پول دیجیتال امن تبدیل کنید، امن ترین و شفاف ترین از همه.

یک شبکه P2P به خودی خود حریم خصوصی یا ناشناس بودن ما را تضمین نمی کند. برای دستیابی به این هدف، پروتکل باید بر اساس دستیابی به هر دو ویژگی ساخته شود. در کریپتوکارنسی ها به وضوح می توانیم این وضعیت را ببینیم. به عنوان مثال، بیت کوین که برای حفظ حریم خصوصی در نظر گرفته شده بود اما ناشناس نبود، در حالی که Monero، اگر برای هر دو عملکرد از پایه خود در نظر گرفته شده بود. تفاوت بین هر دو ارز دیجیتال، شبکه آنها و نحوه عملکرد هر یک وجود دارد.

سایر رویدادهای مهم در منشاء P2P

تولد IRC

در سال ۱۹۸۸، مرد جوانی به نام Jarkko Oikarinen پروتکل IRC را طراحی کرد تا جایگزین برنامه ای به نام MUT (MultiUser Talk) در BBS به نام OuluBox در دانشگاه Oulu در فنلاند شود، جایی که او در بخش علوم پردازش اطلاعات کار می کرد.

قصد او گسترش نرم‌افزار BBS بود که موفق شد اخبار سبک USENET، بحث‌های بی‌درنگ و ویژگی‌های مشابه BBS را مجاز کند. اولین قسمتی که او اجرا کرد قسمت چت بود که با قطعات قرضی نوشته شده توسط دوستانش Jyrki Kuoppala و Jukka Pihl انجام داد. اولین شبکه IRC بر روی یک سرور به نام tolsun.oulu.fi در حال اجرا بود.

این واقعیت که پروتکل برای استفاده از TCP / IP طراحی شده بود، در آینده به آن انعطاف پذیری زیادی داد. در واقع، تا سال ۱۹۹۰ اولین شبکه بزرگ IRC، EFNet، تأسیس شد. نقش EFNet برای ارتباطات جهانی در طول مناقشه خلیج فارس حیاتی بود. در واقع، این شبکه ترجیح داده شده بود که در زمان واقعی از آنچه در میدان جنگ رخ می دهد مطلع شود. بنابراین نشان داد که پتانسیل IRC در مقایسه با نامه، حداقل از نظر فوری بودن و تعامل ارتباطات برتر است. همین امر در مورد سقوط اتحاد جماهیر شوروی اتفاق افتاد، جایی که IRC در نقش انتقال آنچه که در زمان واقعی برای جهان اتفاق می‌افتد، حیاتی بود.

از آن زمان، پروتکل IRC توسعه و پذیرش زیادی را تجربه کرد و شبکه هایی مانند Undernet ، DALnet ، Freenode (که به طور گسترده برای پروژه های نرم افزار رایگان استفاده می شود)، Rizon و  Immortal-Anime (در حال حاضر Xertion) ایجاد کرد. گسترش پذیرش آن باعث توسعه بیشتر پروتکل شد و از آنجا یکی از اولین سیستم های P2P در اینترنت به نام IRC-DCC یا IRC Direct Client-to-Client متولد شد. این سیستم امکان برقراری ارتباط مستقیم بین طرفین را بدون واسطه، به اشتراک گذاری فایل، ارتباطات رمزگذاری شده سرتاسر (OTR) و غیره می داد.

HotLine Connect متولد شد

برای سال ۱۹۹۶، خلقت دیگری در دنیای P2P به وجود آمد که آدام هینکلی را خلق کرد. HotLine Connect یک شبکه اشتراک گذاری فایل P2P بود که از یک سیستم ردیاب برای تبادل اطلاعات به دو کاربر استفاده می کرد. این پروتکل که تا پایان سال ۲۰۰۰ به طور گسترده مورد استفاده قرار می گرفت، به لطف ظهور پروتکل های انعطاف پذیر دیگر و ظهور قابل توجه IRC-DCC از بین رفت.

گنوتلا

Gnutella یک توسعه شبکه P2P به اشتراک گذاری فایل است که در سال ۲۰۰۰ توسط جاستین فرانکل و تام پپر توسعه یافت. فرانکل و پپر کارمندان Nullsoft بودند، شرکتی که پخش کننده Winamp و سرویس پخش صدا را ایجاد کرد. پخش صدا  .

از آن زمان و تاکنون، Gnutella بزرگترین شبکه P2P است که در جهان وجود دارد. در واقع این شبکه دارای بیش از ۱۲ میلیون نود در سراسر جهان است.

تولد Napster

Napster نرم افزاری بود که توسط Shawn Fanning در سال ۱۹۹۸ توسعه یافت و امکان دانلود رایگان موسیقی را فراهم کرد. اگرچه Napster یک شبکه P2P خالص نبود (همانطور که در مورد IRC نیز اتفاق افتاد)، اما به دو نفر اجازه داد بدون واسطه‌های خارج از شبکه و سرورهای آن، موسیقی را مبادله کنند. اما Napster به جیب صنعت موسیقی دست برد زد و پس از یک آزمایش طولانی در جولای ۲۰۰۱ بسته شد.

با این حال، کاری که Napster انجام داده بود، جهان را به توسعه سیستم‌های غیرمتمرکزتر فراخواند.