پروتکل Server Message Block یک پروتکل ارتباطی بین سرور کلاینت است که برای دسترسی به منابع به اشتراک گذاشته شده مانند فایل ها، پوشه ها، پرینتر ها، پورت های سریال و سایر منابع در شبکه استفاده می شود. در طول این سال ها SMB عمدتا برای اتصال کامپیوتر های با سیستم عامل ویندوز استفاده شده است. اگر چه سیستم عامل های دیگر مانند Linux و Mac OS نیز کلاینت هایی دارند که برای اتصال به منابع به اشتراک گذاشته شده از این پروتکل استفاده کنند.

یک گروه در IBM پروتکل SMB را در دهه ۱۹۸۰ توسعه دادند. از آن زمان این پروتکل انواع مختلفی پیدا کرده است تا نیاز مختلف در شبکه را طی زمان برطرف کند. در طول این سال های پروتکل SMB به طور گسترده پیاده سازی شده است و همچنان یکی از بهترین راه کار ها برای اشتراک گذاری فایل ها در محیط های کاری است.

پروتکل SMB چگونه کار می کند؟

پروتکل SMB به نرم افزار ها و کاربران آن ها امکان دسترسی به فایل های به اشتراک گذاشته بر روی سرور حتی از راه دور را می دهد. SMB روش امن و کنترل شده ای را برای باز کردن، خواندن، انتقال دادن، درست کردن و آپدیت کردن فایل ها را می دهد.

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

پروتکل SMB در لایه Application فعالیت می کند اما برای ارتباط به لایه های پایین تر شبکه نیازمند است. زمانی که SMB برای روی NetBIOS over TCP/IP یا NBT اجرا میشد برای ارتباط به شماره پورت های ۱۳۷، ۱۳۸ و ۱۳۹ متکی بود اما در حال حاظر SMB مستقیما از TCP/IP و پورت ۴۴۵ استفاده می کند.

امروزه برای ارتباط با  دستگاه هایی که از SMB بر روی TCP پشتیبانی نمی کنند، نیاز به استفاده از NetBIOS بر روی یک پروتکل Transport مانند TCP/IP داریم.

SMB پروتکل درخواست و جواب

سیستم عامل های ماکروسافت از ویندوز ۹۵ پروتکل SMB را ساپورت می کنند. سیستم عامل های لینوکس و مک نیز از آن پشتیبانی می کنند. همچنین سیستم عامل های مبتنی بر یونیکس نیز از Samba برای سادگی دسترسی SMB به فایل ها و پرینتر ها استفاده می کنند.

یک کلاینت و سرور می توانند از نسخه های مختلف SMB برای ارتباط بین خود استفاده کنند اما برای این کار نیاز است تا هر دوی آن ها قبل از شروع ارتباط درباره تفاوت بین نسخه های خود مذاکره کنند.

ورژن های مختلف SMB

از زمانی که پروتکل SMB معرفی شد، نسخه های مختلفی از آن نیز منتشر شد که نسبت به نسخه اولیه بهبود هایی داشته اند. این بهبود ها درباره قابلیت ها، مقیاس پذیری، امنیت و کارایی بیشتر این پروتکل بوده است. در اینجا مرور کوتاهی بر روی آن ها خواهیم داست:

SMB 1.0 (1984)

نسخه ۱ توسط IBM برای به اشتراک گذاری فایل در DOS درست شده بود. سپس OpLock را به عنوان کش سمت کلاینت که باعث کاهش ترافیک شبکه میشد، معرفی کرد. و در نهایت ماکروسافت آن را در LAN Manager خود به کار گرفت.

CIFS (1996)

CISF که مخفف Common Internet File System است یک نسخه SMB است که توسط ماکروسافت توسعه یافته بود و در Windows 95 معرفی شد. این پروتکل پشتیبانی از فایل های حجیم تر، انتقال مستقیم از طریق TCP/IP و لینک های سخت و نمادین را اضافه کرد.

SMB 2.0 (2006)

این ورژن با Windows Vista و Windows Server 2008 منتشر شد. در این نسخه عملکرد، مقیاس پذیری انعطاف پذیری بهتر شد و سرعت آن در شبکه های WAN افزایش یافت.

SMB 2.1 (2010)

SMB 2.1 با Windows Server 2008 R2 و Windows 7 معرفی شد. مدل لیزینگ Client OpLock جایگزین OpLock شد تا حافظه پنهان و بهبود عملکرد را بهبود بخشد. آپدیت های دیگری برای پشتیبانی از فایل های بزرگ تر و صرفه جویی در مصرف منابع در این نسخه وجود داشت و به کلاینت ها این امکان را داد تا اگر فایل های باز با SMB دارند بتوانند به حالت Sleep بروند.

SMB 3.0 (2012)

SMB 3.0 در Windows 8 و Windows Server 2012 معرفی شد. چندین ارتقاء قابل توجه برای بهبود در دسترس بودن، عملکرد، پشتیبان گیری، امنیت و مدیریت اضافه کرد. ویژگی های جدید قابل توجه عبارتند از SMB Multichannel، SMB Direct،transparent failover of client access، Remote Volume Shadow Copy Service support، رمزگذاری SMB و موارد دیگر.

SMB 3.02 (2014)

SMB 3.02 در Windows 8.1 و Windows Server 2012 R2 معرفی شد که شامل بهبود عملکرد و توانایی غیر فعال کردن CIFS/SMB 1.0 از جمله حذف کد های باینری های مرتبط بود.

SMB 3.1.1 (2015)

SMB 3.1.1 با Windows 10 و Windows Server 2016 منتشر شد. پشتیبانی از رمزگذاری پیشرفته، یکپارچگی پیش از احراز هویت برای جلوگیری از حملات Man-in-the-Middle (MitM) و cluster dialect fencing از جمله به روز رسانی های دیگر را اضافه کرد.