Server Message Block

הפרוטוקול SMB ‏(Server Message Block) פועל בשכבת היישום (השכבה העליונה של מודל OSI) ומשמש בעיקר כדי לספק גישה משותפת אל קבצים, מדפסות, יציאות טוריות, ותקשורת בין מחשבים ברשת. הפרוטוקול מספק גם תקשורת בין תהליכית עם מנגנון הרשאות המאפשר את ירושתן. רוב השימוש של SMB, הוא במחשבים המריצים חלונות, שבו הוא ידוע לעיתים קרובות כ"שכנים ברשת".

היסטוריה

בארי פייגנבוים (Barry Feigenbaum) תכנן במקור את SMB ב־IBM במטרה לאפשר שימוש ב"פסיקה 33" (21h) של DOS על מנת לגשת לקובץ מערכת ברשת במקום לגשת לקובץ המקומי. מאז ביצעה מיקרוסופט שינויים ניכרים עד שהגיעה לגרסה שהיא כיום בשימוש הנפוץ ביותר. ב־1990 לערך מיקרוסופט מיזגה את פרוטוקול SMB עם מוצר LAN Manager שפותח על ידי 3Com, והמשיכה להוסיף תכונות לפרוטוקול בחלונות לקבוצות עבודה (בערך ב־1992) ובגרסאות מאוחרות יותר של חלונות.
התכנון המקורי של SMB נועד לפעול על גבי API של NetBIOS/NetBEUI (בדרך כלל מיושם עם NBF או מעל פרוטוקול IPX/SPX, או מעל TCP/IP). החל מגרסת חלונות 2000 ניתן גם להפעיל את SMB ישירות על גבי פרוטוקול TCP (השרת מאזין על פורט 445 למטרה זו).
בשנת 1996 שינתה מיקרוסופט את שמו של הפרוטוקול ל־CIFS ‏(Common Internet File System), והוסיפה עוד תכונות, כולל תמיכה בקישורים סימבוליים  וקישורים קשיחים (ריבוי מיקומים לקובץ), הגדילה את גודל הקובץ המקסימלי, וכן הוסיפה ניסיון ראשוני לתמוך בקישוריות ישירה על יציאת TCP מספר 445 בלי כל התוספות  של NetBIOS. מיקרוסופט הגישה גם כמה מפרטים חלקיים של הפרוטוקול בתור טיוטות לסטנדרט ל-IETF אך אלו פגו בינתיים.
בגלל חשיבותו של פרוטוקול SMB לתקשורת עם הפלטפורמה הנפוצה חלונות, בשילוב עם האופי הנוכחי המכביד  של יישום ה־SMB של פלטפורמה זה, נוצר פרויקט Samba שמקורו בהנדסה לאחור של המימוש של מיקרוסופט. הפרויקט יצר יישום חופשי של לקוח ושרת SMB לשימוש עם מערכות ההפעלה שאינן של מיקרוסופט.
NQ הוא פתרון SMB / CIFS שרת ולקוח אשר פותח על ידי Visuality Systems, חברה ישראלית אשר הוקמה בשנת 1998 על ידי סאם וידרמן, מנכ"ל חברת סימנס תקשורת בישראל לשעבר. משפחת ה-NQ מורכבת משני מוצרים; האחד פותח למערכות מוטמעות כגון מדפסות, מצלמות, מחשבי אוטומציה, מוצרים רפואיים, תעופה וחלל וכו' בעוד שהמוצר השני מותאם לשרתי אחסון. שני המוצרים תומכים בדיאלקטים המתקדמים של הפרוטוקול ומותאמים לספק שיתוף קבצים ומדפסות ווינדוסאי לכל מערכת הפעלה לא ווינסודאית כגון Android, iOS, Integrity, VxWorks, Linux ולכל שאר מערכות ההפעלה האחרות.

גישה לשרת

SMB עובד באמצעות גישת עמית לעמית, שבו הלקוח מגיש בקשות ספציפיות והשרת מגיב בהתאם. קטע אחד של פרוטוקול SMB עוסק בגישה למערכת הקבצים והוא אחראי לבקשות הלקוחות לשרת הקבצים; אך כמה חלקים אחרים של פרוטוקול SMB עוסקים בתקשורת בין תהליכית (IPC).
פרוטוקול SMB מתאים במיוחד לשימוש ברשת המקומית, אבל יש גם משתמשי SMB העובדים ברשתות משנה שונות בכל רחבי האינטרנט - ומנצלים את הפרוטוקול לשיתוף קבצים או לשיתוף מדפסות בסביבות חלונות.
שרתי SMB מאפשרים ללקוחות ברשת גישה למערכות קבצים שלהם ולמשאבים נוספים. מחשבי לקוח יכולים להשתמש בגישה המשותפת למערכות קבצים ולמדפסות בשרת, וב־SMB זאת הפונקציונליות העיקרית והנפוצה ביותר. עם זאת, שרת SMB איננו שימושי במיוחד ללא שרת המספק שירותי הזדהות ברשת ברמה של תחומי (Domain)‏ NT לפחות. הפרוטוקולים של תחומי NT מספקים שירותי MSRPC באופן כמעט בלעדי כ־IPC מסוג named pipe, וכמעט כל היישומים של שרתי SMB משתמשים בשירות זה על מנת לאמת את ההרשאות של הלקוח ביחס למשאבים אליהם הוא ניגש.

בעיות ביצועים

טעות נפוצה היא לחשוב כי פרוטוקול SMB עושה שימוש בחלק גדול מרוחב הפס של הרשת משום שכל לקוח משדר את קיומו לרשת המשנה כולה, אולם בפועל הבעיה איננה ב־SMB עצמו אלא למעשה בפרוטוקול המיקום שהוא חלק מה־NetBIOS.‏  SMB עצמו לא משתמש בשידורי broadcast.  כברירת מחדל, שרת חלונות ישתמש ב־NetBIOS כדי לפרסם ולאתר פונקציות ה־NetBIOS ממומשות על ידי שידור של השירותים הזמינים במחשב המארח לכל הרשת במרווחים קבועים. אמנם ברירת המחדל הזאת בדרך כלל סבירה ברשת עם פחות מ־20 מחשבים, אבל תעבורת הרשת מקשה יותר ויותר על הרשת כשמספר המחשבים גדל. יישום מוצלח יותר של ה-NBNS ‏(NetBIOS Name Server), למשל WINS בסביבת חלונות, יכול להקל על בעיה זו. מערכת WINS משתמשת במערכת הרבה יותר מתקדמת של רישום ובקשות מרכזי שירות, אך מסבך את העיצוב והתחזוקה של הרשת.  מיקרוסופט ממליצה להשתמש ב־DNS דינמי בסביבות של Active Directory.
מתכנני הרשת צריכים להתחשב בכך שלזמן התקשורת ברשת תהיה השפעה משמעותית על הביצועים של פרוטוקול SMB. לעיכוב זה יש השפעה משמעותית במקרים של ניווט בין ספריות באמצעות SMB כאשר זמן התגובה של הרשת הוא גדול, למשל בחיבור VPN על האינטרנט.

שינויים של מיקרוסופט

במהלך הזמן הוסיפה מיקרוסופט מספר הרחבות למימוש שלה של הפרוטוקול. לדוגמה, היא הוסיפה תמיכה בגרסה 2 של NTLM (פרוטוקול האבטחה בברירת המחדל של NT) כי גרסה 1 של NTLM (כנגזר מהמפרט המקורי של SMB משתמש בסיסמאות "LAN Manager" של IBM) משתמש ב־DES בצורה לקויה. בנוסף, NT 4.0 הכניסה לשימוש פרוטוקולים להצפנה ברמה של 40 ביט מחוץ לארצות הברית, בגלל ההגבלות על ייצוא הצפנה של 128 סיביות.

SMB3

הפרוטוקול, אשר תחילה נקרא SMB 2.2 הוצג עם שחרור מערכת ההפעלה ווינדוס 8 ו-ווינדוס סרבר 2012. פרוטוקול זה הביא עמו שינויים משמעותיים והביא עמו מאפיינים חדשים כמו SMB Direct (מעל RDMA) ו- SMB Multichannel (חיבורים מרובים לכל חיבור SMB). עם שחרור פרוטוקול זה הוצגו מספר שיפורי אבטחה משמעותיים כשהחשוב ביניהם הוא הצפנה מקצה לקצה ואלגוריתם חתימה חדש מבוסס על AES.