شبکه همتا به همتا (P2P) چیست و چطور کار میکند؟
در شبکه همتا به همتا (P2P) سرور مرکزیای در کار نیست و هر دستگاه هم از بقیه داده میگیرد و هم به آنها میدهد. تورنت و بیتکوین دو نمونه آشنای همین شبکهاند.

فهرست مطالب۷ بخش
- کلاینت-سرور و همتا به همتا چه فرقی دارند؟
- از نپستر تا تورنت: P2P چطور معروف شد؟
- تورنت چطور کار میکند؟
- بیتکوین چطور روی شبکه همتا به همتا کار میکند؟
- نود تازه چطور همتا پیدا میکند؟
- تراکنش شما چطور به همه میرسد؟
- اتریوم هم همینطور کار میکند؟
- الان چند نود در شبکه بیتکوین هست؟
- مزایا و معایب شبکه همتا به همتا
- اینها در عمل به چه کارتان میآید؟
شبکه همتا به همتا (Peer-to-Peer یا P2P) شبکهای است که در آن کامپیوترها بدون سرور مرکزی مستقیم به هم وصل میشوند و هر کدام هم از بقیه داده میگیرد و هم به آنها داده میدهد. به هر کدام از این دستگاهها «همتا» (Peer) یا «نود» (Node) میگویند. وقتی فیلمی را با تورنت دانلود میکنید، تکههایش را همزمان از چند ده نفری میگیرید که همان فایل را دارند. وقتی هم بیتکوین میفرستید، تراکنشتان بین هزاران نود دستبهدست میشود تا به ماینرها برسد.
یک نکته را همین اول روشن کنیم. «P2P» در بازار رمزارز معنای دیگری هم دارد: وقتی کسی از معامله P2P تتر حرف میزند، منظورش خرید و فروش مستقیم بین دو آدم است، نه این شبکه کامپیوتری. اگر دنبال آن هستید، معامله همتا به همتا تتر و ریسکهایش را بخوانید. اینجا از خود شبکه حرف میزنیم: اینکه چه فرقی با مدل کلاینت-سرور دارد، تورنت و بیتکوین چطور از آن استفاده میکنند و چرا شمردن نودهایش اینقدر سخت است.
کلاینت-سرور و همتا به همتا چه فرقی دارند؟
بیشتر سرویسهایی که هر روز در اینترنت با آنها سروکار دارید کلاینت-سرورند. وقتی اپ بانک را باز میکنید یا در سایتی ویدیو میبینید، گوشی شما «کلاینت» است و درخواست میفرستد و کامپیوترهای شرکت صاحب سرویس، یعنی «سرور»، جوابش را میدهند. دادهها روی سرور است و قواعد را هم صاحب سرور تعیین میکند.
در شبکه همتا به همتا این دو نقش از هم جدا نیستند. هر دستگاه مثل کلاینت چیزی از بقیه میخواهد و مثل سرور چیزی به بقیه میدهد. در تصویر زیر به دو چیز دقت کنید: سمت راست همه خطها به یک نقطه میرسند و سمت چپ یکی از همتاها خاموش شده، ولی بقیه هنوز از راههای دیگر به هم راه دارند.

جدول زیر همین فرق را در چند موقعیت واقعی نشان میدهد:
موقعیت | کلاینت-سرور | همتا به همتا |
|---|---|---|
دادهها کجاست؟ | روی سرورهای صاحب سرویس | بین خود کاربرها پخش است |
یک نقطه از کار بیفتد | سرور که بخوابد، سرویس برای همه قطع است | یک همتا که برود، بقیه کارشان را ادامه میدهند |
تعداد کاربرها زیاد شود | سرور باید بزرگتر و گرانتر شود | هر کاربر تازه کمی ظرفیت هم با خودش میآورد |
قرار است نرمافزار عوض شود | صاحب سرور یکشبه عوضش میکند | بیشتر همتاها باید نسخه تازه را نصب کنند |
کسی بخواهد سرویس را ببندد | بستن سرور کافی است | نقطه مرکزیای نیست که بسته شود |
آدرس آیپی شما را چه کسی میبیند؟ | صاحب سرور | همتاهایی که به آنها وصل میشوید |
هیچکدام در همه حال بهتر نیست. اپ بانک یا پیامرسان به یک مسئول مشخص نیاز دارد که حسابها را نگه دارد و اگر مشکلی پیش آمد جواب بدهد. ولی وقتی قرار است فایلی پرطرفدار بین هزاران نفر پخش شود، یا پولی ساخته شود که هیچ شرکتی صاحبش نباشد، شبکه همتا به همتا انتخاب بهتری است.
از نپستر تا تورنت: P2P چطور معروف شد؟
نپستر (Napster) در سال ۱۳۷۸ راه افتاد و کاربرها با آن آهنگها را مستقیم از کامپیوتر یکدیگر دانلود میکردند. خود فایلها روی کامپیوتر کاربرها بود، ولی فهرست اینکه کدام آهنگ پیش چه کسی است روی سرورهای خود نپستر بود. همین نقطه مرکزی پاشنه آشیلش شد. بعد از شکایت شرکتهای موسیقی و حکم دادگاه، نپستر در تیر ۱۳۸۰ کل شبکهاش را خاموش کرد.
درس این ماجرا برای طراحهای بعدی روشن بود: تا وقتی یک نقطه مرکزی وجود دارد، میشود کل شبکه را از همان نقطه بست. شبکههایی که بعد آمدند، از جمله تورنت و بیتکوین، سعی کردند همین نقطه مرکزی را حذف کنند، یا دستکم کاری کنند که با از کار افتادنش کل شبکه نخوابد.
تورنت چطور کار میکند؟
بیتتورنت (BitTorrent) پروتکلی برای پخش فایل است و ایدهاش ساده است: اگر صد نفر همزمان یک فایل را دانلود میکنند، بهجای اینکه همه از یک منبع بگیرند، به یکدیگر هم آپلود کنند. سند رسمی پروتکل همین را مزیت اصلیاش میداند: منبع فایل میتواند آن را به تعداد خیلی زیادی دانلودکننده برساند و بار خودش فقط کمی بیشتر شود. کار اینطور پیش میرود:
- فایل تکهتکه میشود. همه تکهها یک اندازهاند و سند پروتکل رایجترین اندازه را ۲۵۶ کیلوبایت میداند. برای هر تکه یک «هش» میسازند و فهرست هشها را در فایل کوچک تورنت میگذارند. هش را اثر انگشت دیجیتال آن تکه فرض کنید.
- همتاها پیدا میشوند. برنامه تورنت از «ترکر» (Tracker) میپرسد چه کسانی این فایل را دارند و فهرستی از همتاها میگیرد. در تورنتهای بدون ترکر، این فهرست از یک جدول توزیعشده (DHT) میآید و به گفته سند خودش در این روش هر همتا خودش یک ترکر کوچک میشود.
- تکهها از چند نفر همزمان میرسند. هر تکه که رسید، برنامه هشش را با فهرست داخل فایل تورنت مقایسه میکند. اگر جور بود، به همتاهای دیگر خبر میدهد که این تکه را دارد و از همان لحظه آن را به بقیه هم میدهد.
- هر کس بیشتر بدهد، بیشتر میگیرد. در روشی که سند پروتکل شرح میدهد، برنامه تورنت در هر لحظه فقط به چهار همتا آپلود میکند و بیشتر این جاها را به همتاهایی میدهد که بیشترین سرعت دانلود را از آنها گرفته است. یکی از این چهار جا هم به همتایی میرسد که بیتوجه به سرعتش انتخاب شده و هر ۳۰ ثانیه عوض میشود تا تازهواردها هم شانسی داشته باشند.
برای همین فایل پرطرفدار در تورنت سریعتر دانلود میشود: هر دانلودکننده تازه، آپلودکننده تازه هم هست. برعکس، فایلی که هیچ همتای آنلاینی نسخه کاملش را ندارد ممکن است روی ۹۹ درصد بماند و هیچوقت تمام نشود.
یک چیز را هم درباره امنیت تورنت بدانید. هش فقط تضمین میکند تکهای که از غریبهها گرفتهاید همانی است که سازنده فایل تورنت منتشر کرده است. اگر خود فایل اصلی آلوده باشد، هش کمکی نمیکند و همان فایل آلوده، درست و کامل به دستتان میرسد.
بیتکوین چطور روی شبکه همتا به همتا کار میکند؟
اسم وایت پیپر بیتکوین خودش همهچیز را میگوید: «بیتکوین: یک سیستم پول نقد الکترونیکی همتا به همتا». فرقش با تورنت در چیزی است که بین همتاها دستبهدست میشود. در تورنت همه یک فایل را پخش میکنند، ولی در بیتکوین همه یک دفتر حساب مشترک را نگه میدارند و کار یکدیگر را بررسی میکنند.
هر فول نود یک نسخه کامل از بلاکچین را دارد و هر تراکنش و بلاک تازه را خودش با قوانین شبکه میسنجد. انواع نود و کار هر کدام را در نود چیست مفصل توضیح دادهایم. اینجا سراغ خود شبکه میرویم.
نود تازه چطور همتا پیدا میکند؟
نودی که تازه روشن شده آدرس هیچ نود دیگری را نمیشناسد. طبق راهنمای توسعهدهندگان بیتکوین، اینطور همتا پیدا میکند:
- پرسیدن از «دیاناس سید» (DNS Seed). در خود نرمافزار Bitcoin Core چند نشانی اینترنتی نوشته شده که اعضای جامعه بیتکوین آنها را میگردانند. نود از این نشانیها میپرسد و در جواب آیپی چند نود فعال را میگیرد.
- فهرست پشتیبان. اگر هیچکدام از این نشانیها تا ۶۰ ثانیه جواب ندهد، نود سراغ فهرستی از چند ده آدرس میرود که داخل خود نرمافزار نوشته شده است.
- معرفی همتاها. بعد از اولین اتصال، همتاها آدرس نودهای دیگر را برایش میفرستند. نرمافزار این آدرسها را روی دیسک نگه میدارد تا دفعه بعد مستقیم سراغشان برود.
هر اتصال با یک احوالپرسی کوتاه شروع میشود: دو نود نسخه نرمافزار و آخرین بلاکی را که میشناسند به هم میگویند و بعد ارتباط برقرار میشود. طبق bitcoin.org، نرمافزار Bitcoin Core بهطور پیشفرض خودش به ۱۰ نود دیگر وصل میشود و در مجموع تا ۱۲۵ اتصال را میپذیرد.
راهنمای توسعهدهندگان یک هشدار هم دارد: نود راهی ندارد مطمئن شود جوابی که از دیاناس سید گرفته دستکاری نشده است. کسی که یکی از این نشانیها را میگرداند یا وسط مسیر اینترنت نشسته، میتواند فقط آدرس نودهای خودش را بدهد، نود تازه را از بقیه شبکه جدا کند و به آن تراکنش و بلاک جعلی تحویل دهد. برای همین راهنما میگوید برنامهها نباید فقط به این نشانیها تکیه کنند و باید از چند راه همتا پیدا کنند.
تراکنش شما چطور به همه میرسد؟
پخش تراکنش در بیتکوین شبیه پخش شدن یک خبر در فامیل است: هر کس میشنود، به چند نفر دیگر میگوید. به این روش «گاسیپ» (Gossip) یا پخش شایعهوار میگویند. فرقش با شایعه این است که هر نود پیش از اینکه خبر را به بقیه بدهد، درستیاش را میسنجد:
- کیف پول شما تراکنش امضاشده را به یک یا چند نود میدهد.
- نود تراکنش را با قوانین شبکه میسنجد: امضا باید درست باشد و پولی که خرج میشود واقعاً وجود داشته باشد و قبلاً خرج نشده باشد.
- اگر تراکنش درست بود، نود فعلاً فقط به همتاهایش خبر میدهد که «تراکنشی با این شناسه دارم».
- هر همتایی که آن را ندارد، تراکنش کامل را درخواست میکند و میگیرد.
- آن همتا هم تراکنش را دوباره بررسی میکند و همین چرخه را با همتاهای خودش تکرار میکند.
تراکنش نادرست در همان قدم دوم متوقف میشود و جلوتر نمیرود. نرمافزار Bitcoin Core همتایی را که داده نادرست بفرستد و پهنای باند را هدر بدهد جریمه میکند و میتواند ارتباطش را با آن قطع کند. تراکنشهای درستی که هنوز در هیچ بلاکی ثبت نشدهاند، در بخشی از حافظه هر نود به اسم ممپول (Mempool) منتظر میمانند. بلاک تازه هم وقتی ماینری آن را پیدا میکند، کمابیش به همین شکل در شبکه پخش میشود.
یک حساب ساده (فرضی). فرض کنید هر نود تراکنش را به ۸ نود تازه بدهد و هیچ نودی آن را دو بار نگیرد. بعد از دور اول ۸ نود تراکنش را دارند، بعد از دور دوم ۶۴ نود، بعد از دور سوم ۵۱۲ نود و بعد از دور چهارم ۴٬۰۹۶ نود. در دور پنجم عدد به ۳۲٬۷۶۸ میرسد که از کل حدود ۲۳ هزار نودی که پایینتر شمردهایم بیشتر است. در واقعیت خیلی از این پیامها به نودی میرسد که تراکنش را از قبل دارد، پس چند دور بیشتر لازم است. ولی نتیجه عوض نمیشود: تعداد دورها خیلی آهستهتر از اندازه شبکه بزرگ میشود.
همین حساب توضیح میدهد چرا تراکنش را معمولاً خیلی زود میشود با شناسه تراکنش (TXID) در اکسپلورر بلاکچین پیدا کرد، ولی تا ماینری آن را در بلاک نگذارد تأییدی نمیگیرد. رسیدن به همه نودها چند لحظه بیشتر طول نمیکشد؛ انتظار اصلی برای بلاک بعدی است.
اتریوم هم همینطور کار میکند؟
اصل ماجرا همین است، ولی اتریوم در واقع دو شبکه همتا به همتا کنار هم دارد. نود تازه کارش را با چند «بوتنود» (Bootnode) شروع میکند که آدرسشان در نرمافزار نوشته شده و تنها کارشان معرفی همتاهای دیگر است. بخش اجرایی اتریوم تراکنشها را اجرا میکند و آنها را در شبکه مخصوص خودش بین همتاها پخش میکند. بخش اجماع هم که کارش تأیید بلاکهاست، شبکه جدای خودش را دارد و بلاکها و رأی اعتبارسنجها را با نوعی گاسیپ به اسم gossipsub پخش میکند.
الان چند نود در شبکه بیتکوین هست؟
هیچکس فهرست کامل نودهای بیتکوین را ندارد، چون ثبتنامی در کار نیست. سایتهایی مثل Bitnodes از نودی به نود دیگر سر میزنند و فقط نودهایی را میشمارند که از بیرون اتصال میپذیرند. ما داده خام همین سایت را شب ۶ آبان ۱۴۰۵ (ساعت ۲۲:۰۵ به وقت تهران) گرفتیم و نودها را بر اساس نوع اتصالشان دستهبندی کردیم. در نمودار زیر ببینید نوار زرد بالایی، یعنی نودهای تور، چقدر از بقیه بلندتر است:

در دادهای که گرفتیم ۲۲٬۹۰۴ نود فهرست شده بود و بیش از نیمیشان، یعنی ۱۲٬۰۹۶ نود، از راه شبکه تور (Tor) وصل بودند. ۴٬۳۲۱ نود دیگر هم از راه I2P وصل بودند که آن هم مثل تور آیپی واقعی را پنهان میکند. یعنی حدود ۷۲ درصد نودها آیپی واقعیشان را نشان نمیدادند و فقط ۶٬۴۷۷ نود، حدود ۲۸ درصد، با IPv4 یا IPv6 معمولی دیده میشدند.
دلیلش به خود P2P برمیگردد: هر همتایی که به آن وصل میشوید آیپی شما را میبیند. کسی که نود بیتکوین اجرا میکند و نمیخواهد آیپی خانهاش بهعنوان نود بیتکوین شناخته شود، از این شبکهها کمک میگیرد.
این عدد را هم قطعی نگیرید. همین سایت ۱۸ مهر ۱۴۰۵ حدود ۲۵ هزار و ۵۰۰ نود شمرده بود، یعنی ۱۸ روز بعد حدود ۲ هزار و ۶۰۰ نود کمتر دیده است. این عدد هر روز بالا و پایین میرود. نودهایی هم که پشت مودم خانگی هستند و اتصال ورودی نمیپذیرند اصلاً در آن نیستند، پس تعداد واقعی نودهای بیتکوین از این بیشتر است و کسی دقیقش را نمیداند.
مزایا و معایب شبکه همتا به همتا
خوبیهای P2P همه از نبودن مرکز میآید:
- نقطه ضعف مرکزی ندارد. اگر یک نود، یا حتی هزار نود، خاموش شود، شبکه سر جایش است.
- هر چه بزرگتر شود، قویتر است. در تورنت هر دانلودکننده تازه آپلودکننده هم هست. در بیتکوین هر نود تازه یک بررسیکننده مستقل دیگر است.
- بستنش سخت است. ماجرای نپستر نشان داد شبکهای که سرور مرکزی دارد با یک حکم خاموش میشود. بیتکوین چنین سروری ندارد.
- راهاندازیاش ارزان است. کسی که فایلی را با تورنت منتشر میکند، لازم نیست برای هزاران دانلودکننده سرور اجاره کند.
ضعفهایش هم از همینجا میآید:
- هماهنگی کند است. عوض کردن قوانین بیتکوین ماهها بحث لازم دارد، چون بیشتر نودها باید نسخه تازه را بپذیرند. در سرویس متمرکز همین کار یک بهروزرسانی ساده است.
- آیپی شما دیده میشود. همتاها آدرس یکدیگر را میبینند و همانطور که در آمار نودها دیدید، برای همین بیشتر نودهای بیتکوین از تور و I2P کمک میگیرند.
- همه همتاها خوشنیت نیستند. در تورنت ممکن است فایل آلوده دستبهدست شود و در بیتکوین کسی ممکن است بخواهد نودی را از بقیه جدا کند.
- کسی مسئول نیست. تراکنشی که در شبکه بیتکوین تأیید شد، هیچ مرکزی نمیتواند برش گرداند. اگر آدرس را اشتباه بدهید، شرکتی نیست که با آن تماس بگیرید.
- هزینه اینترنت و برق با خودتان است. تورنت تا وقتی باز است آپلود میکند و طبق bitcoin.org یک نود بیتکوین با تنظیمات پیشفرض ممکن است ماهی بیش از ۱۵۰ گیگابایت آپلود کند. روی اینترنت حجمی، این عدد زود خودش را نشان میدهد.
اینها در عمل به چه کارتان میآید؟
لازم نیست نود اجرا کنید تا از شبکه همتا به همتا استفاده کنید. کیف پول شما به نودهای دیگران وصل میشود و تراکنش را به آنها میسپارد. ولی همین چیزهایی که گفتیم جواب چند سؤال رایج را هم میدهد:
- تراکنش «در انتظار» گم نشده است. تراکنشی که فرستادهاید و هنوز تأیید نگرفته، در ممپول نودها منتظر ماینر است. شناسهاش را در اکسپلورر جستوجو کنید تا وضعیتش را ببینید.
- انتقال داخلی اصلاً وارد این شبکه نمیشود. وقتی رمزارز را بین دو حساب سواپولت جابهجا میکنید، فقط دفتر حسابهای داخلی سرویس بهروز میشود و هیچ تراکنشی برای نودها فرستاده نمیشود. فرقش را در انتقال داخلی رمزارز چیست ببینید. ولی برداشت به کیف پول شخصی یک تراکنش واقعی روی بلاکچین است و همین مسیر گاسیپ را طی میکند.
- تورنت فقط دانلود نیست. تا وقتی برنامه باز است، به بقیه هم آپلود میکنید. اگر اینترنتتان حجمی است، در تنظیمات برنامه برای آپلود سقف بگذارید.
- پیش از هر انتقال، آدرس و شبکه را دو بار چک کنید. «غیرمتمرکز» به معنای بیخطر نیست. شبکهای که مرکز ندارد، جایی هم برای شکایت ندارد.
پرسشهای رایج
شبکه همتا به همتا با بلاکچین یکی است؟
نه. هر بلاکچین عمومی روی یک شبکه همتا به همتا کار میکند، ولی هر شبکه P2P بلاکچین نیست. تورنت فقط فایل جابهجا میکند و دفتر مشترکی ندارد که همه رویش توافق کنند.
معامله P2P تتر هم روی شبکه همتا به همتا انجام میشود؟
فقط اسمشان مشترک است. در معامله P2P دو آدم مستقیم با هم معامله میکنند و پول تومانی معمولاً کارتبهکارت میشود؛ این به ساختار شبکه کامپیوتری ربطی ندارد.
برای فرستادن بیتکوین باید خودم نود اجرا کنم؟
لازم نیست. کیف پول تراکنش امضاشده را به نودهای دیگران میدهد و آنها پخشش میکنند. نود شخصی به درد کسی میخورد که میخواهد همهچیز را خودش بررسی کند و به نود دیگران تکیه نکند.
آیا میشود شبکه بیتکوین را خاموش کرد؟
به این سادگی نه، چون سروری ندارد که با خاموش کردنش کل شبکه بخوابد. قطع اینترنت در یک کشور نودهای همانجا را از بقیه جدا میکند، ولی نودهای جاهای دیگر به کارشان ادامه میدهند.
نود بدخواه میتواند مبلغ یا مقصد تراکنش مرا عوض کند؟
نه. تراکنش با کلید شما امضا شده و هر تغییری امضا را باطل میکند، پس نودهای دیگر نسخه دستکاریشده را رد میکنند. کاری که از نود بدخواه برمیآید پخش نکردن تراکنش است؛ برای همین تراکنش معمولاً به چند همتا داده میشود، نه فقط یکی.
چرا دانلود تورنت گاهی روی یک درصد مشخص میماند؟
معمولاً چون هیچکدام از همتاهای آنلاین تکههای باقیمانده را ندارند. تا کسی که نسخه کامل یا همان تکهها را دارد آنلاین نشود، دانلود جلو نمیرود.
