دستگاه بلوکی شبکه

بندانگشتی|دستور Hexdump‌ برای شروع ارتباط یا دست‌دهی (handshake) بین یک کلاینت دستگاه بلوکی شبکه و سرور
دستگاه بلوکی شبکه "network block device (NBD)" در سیستم عامل لینوکس، یک پروتکل شبکه است که می‌توان از آن برای فوروارد کردن یک دستگاه بلوکی (که معمولاً یک دیسک سخت یا پارتیشن است) از یک ماشین به ماشین ثانویه استفاده کرد. به عنوان مثال یک ماشین محلی می‌تواند به یک درایو دیسک سخت که به یک کامپیوتر دیگر متصل شده است، دسترسی پیدا کند.

این پروتکل در ابتدا برای سیستم عامل لینوکس نسخه‌ی 2.1.55 توسعه داده شده و در سال 1997 عرضه شد. این پروتکل در سال 2011 بازبینی و اصلاح شده است که فایل رسمی آن قابل دسترسی است و اکنون به عنوان یک استاندارد متن‌باز اشتراکی توسعه داده می‌شود. این پروتکل شامل چندین کلاینت و سرور است که با یکدیگر همکاری متقابل دارند.

پیاده‌سازی‌های سازگار با لینوکس دستگاه بلوکی شبکه برای فری‌بی‌اس‌دی و سایر سیستم‌عامل‌ها موجود هستند. اصطلاح «دستگاه بلوکی شبکه» گاهی به صورت عمومی نیز مورد استفاده قرار می‌گیرد. 

اساساً، یک دستگاه بلوکی شبکه، شامل سه بخش مختلف است: بخش سرور، بخش کلاینت و شبکه‌ی میان این سرور و کلاینت. در ماشین کلاینت، که گره‌ی دستگاه بر روی آن قرار دارد، یک درایور کرنل دستگاه را کنترل می‌کند. هر زمان که یک برنامه سعی کند تا به این دستگاه دسترسی پیدا کند، این درایور کرنل، آن درخواست را به ماشین سرور فوروارد می‌کند (اگر بخش کلاینت به صورت کامل در کرنل پیاده‌سازی نشده باشد، می‌توان به کمک یک برنامه‌ی فضای کاربری "userpace program" این کار را انجام داد) که داده‌ها به صورت فیزیکی بر روی آن قرار دارند. در ماشین سرور، درخواست‌های کلاینت‌ها به وسیله‌ی یک برنامه‌ی فضای کاربری مدیریت می‌شوند.

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

ماژول کلاینت دستگاه بلوکی شبکه بر روی سیستم‌عامل‌های شبه یونیکس، شامل لینوکس قابل دسترس است.

## <big>'''پروتکل‌های جایگزین'''</big>
* پروتکل iSCSI : بسته‌ی "هدف استفاده‌ی" iscsi که بر روی بسیاری از توزیع‌های مختلف لینوکس قرار دارد.

* پروتکل NVMe-oF : یک سازوکار معادل، که دستگاه‌های بلوکی را به عنوان فضاهای کاربری NVMe حول TCP، Fibre Channel، RDMA‌ و c‌ بومی اکثر سیستم‌عامل‌ها، در معرض قرار می‌دهد.

* پروتکل Loop device : یک سازوکار مشابه با پروتکل دستگاه‌های بلوکی شبکه است، اما از یک فایل محلی به جای یک فایل دوردست استفاده می‌کند.

* پروتکل DRBD : این پروتکل، دستگاه بلوکی تکراری توزیع‌شده نام دارد و یک سیستم ذخیره‌سازی توزیع‌شده برای پلتفرم لینوکس است.
  
* پروتکل ATA بر روی Ethernet : فرمان‌های ATA را حول Ethernet ارسال می‌کند.

* پروتکل USB/IP : پروتکلی است که به وسیله‌ی IP دسترسی شبکه را برای دستگاه‌های USB‌ فراهم می‌آورد.

## <big>'''لینک‌های خارجی'''</big>
* Network Block Device برای دستگاه بلوکی شبکه بر روی GitHub

* nbdkit&nbsp;‌ابزار دستگاه بلوکی شبکه که یک سرور دستگاه بلوکی شبکه مبتنی بر افزونه بوده و libnbd که یک کلاینت C‌ با عملکرد بالا است.

* qemu-nbd که یک ابزار دستگاه بلوکی شبکه از یک پروژه‌ی qemu‌ است.

* BNBD دستگاه بلوکی شبکه تکراری توزیع شده که یک پیاده‌سازی سرور دستگاه بلوکی شبکه جایگزین است.

* xNBD سرور دستگاه بلوکی شبکه‌ی دیگری برای لینوکس است.

* The Network Block Device دستگاه بلوکی شبکه در ژورنال لینوکس

## <big>'''منابع'''</big>
# "The Network Block Device | Linux Journal"
# "Documentation/usb/usbip_protocol.txt". kernel.org. 2016-03-21. Retrieved 2017-04-09.
#  "USB over IP tunnel". OpenWrt. 2016-06-17. Retrieved 2017-04-09.
رده:پروتکل‌های ارتباطی
رده:پروتکل‌های شبکه
رده:شبکه رایانه
رده:ویژگی‌های کرنل لینوکس