به طور کلی میتوان گفت این پروتکل از معماری ارتباطی Client/server استفاده مینماید. به طور کلی شامل سه جزء اصلی است:
1.SNMP Manager: میتوان گفت این جزء از پروتکل به عنوان سرور ایفای نقش میکند، نرمافزاری است که وظیفه مدیریت و مانیتورینگ شبکه را برعهده دارد. یک SNMP Manager که با نام Network Management System (NMS) هم شناخته میشود، وظیفه برقراری ارتباط و تبادل اطلاعات با SNMP Agent های فعال در تجهیزات شبکه را بر عهده دارد. به زبان سادهتر، یک SNMP Manager کامپیوتری است که بر روی آن یک نرم افزار مانیتورینگ شبکه مانند پلتفرم مانیتورینگ معین نصب شده است و وظیفه مانیتورینگ شبکه را بر عهده دارد. این جز از SNMP از UDP Port 161 استفاده مینماید. وظایف یک SNMP Manager به طور عمده عبارتند از:
.2SNMP Agent: نرمافزاری است که روی دستگاههای شبکه که میخواهیم آنها را مدیریت و مانیتور نماییم اجرا میشود. وظیفه Agent جمعآوری اطلاعات دستگاه و پاسخ دادن به درخواستهای ارسال شده از طرف SNMP Manager است. وقتی SNMP Agent بر روی یک دستگاه فعال میشود، شروع به ثبت شاخصها و اطلاعات دستگاه به صورت محلی میکند و این اطلاعات را در دسترس NMS (SNMP Manager) قرار میدهد. این جز از SNMP از UDP Port 162 استفاده مینماید. همچنین وظیفه مدیریت یک پایگاه داده از متغیرهایی را بر عهده دارد که تحت عنوان Management Information Base (MIB) نامیده میشوند (در خصوص MIB ها در بخش بعدی به تفصیل توضیح داده خواهد شد). به طور کلی وظایف یک SNMP Agent عبارتند از:
3.SNMP Managed Devices: یک دستگاه مدیریت شده بخشی از شبکه است که نیاز به مانیتورینگ و مدیریت دارد. این دستگاهها میتوانند انواع روترها، سوئیچها، سرورها و ... باشند.
هدف استفاده از پروتکل SNMP توانایی مدیریت و مانیتور نمودن دستگاه های مختلفی است که به شبکه متصل هستند. همانطور که در بخش قبل اجزای SNMP را توضیح دادیم، از یک طرف دستگاههایی هستند که میخواهیم آنها را مانیتور نماییم و از طرف دیگر یک SNMP Manager است که وظیفه دریافت اطلاعات از دستگاهها را بر عهده دارد. بر روی هر دستگاه موردنظر یک agent نصب میشود که وظیفه این agent جمعآوری اطلاعات و شاخصهای مختلف از دستگاه است تا زمانی که SNMP Manager درخواست اطلاعات مشخصی را از agent میکند به درخواست آن پاسخ دهد. درخواستها از سمت SNMP Manager به سمت SNMP Agent و همچنین پاسخ agent به درخواست مربوطه تحت پورت 161 ارسال میشود. از طرفی هر agent این قابلیت را دارد که در مواقع رخداد اتفاقات نامطلوب trap هایی را به SNMP Manager ارسال نماید که این trap ها از طریق پورت 162 ارسال میشوند. SNMP Manager و SNMP agent یک زبان مشترک دارند که توسط فایلهای MIB مشخص میشود.
برای مثال در شکل زیر یک دستگاه روتر و یک دستگاه سوئیچ را مشاهده مینمایید که به یک SNMP manager اطلاعاتی را ارسال میکنند. همچنین این SNMP manager نیز از طریق پورت 161 قابلیت اتصال به agent نصب شده بر روی دستگاهها و دریافت اطلاعات از آن را دارد که به این روش Polling یا سرکشی هم گفته میشود.
هر Agentپایگاه دادهای از اطلاعات را که توضیح دهنده پارامترهای مختلف Managed Device ها هستند، دارد. به این پایگاه داده MIB و یاManagement Information Base میگویند. این پایگاه داده یک پایگاه داده سلسه مراتبی از انواع اطلاعات، ویژگیها و پارامترهایی است که در مورد دستگاههای مختلف تحت پوشش پروتکل SNMP به فرم data object ها میتوان بازیابی نمود. فایلهای MIB در واقع فایلهای متنی ASCII هستند که پارامترهای مختلف شبکه و دستگاهها را به عنوان لیستی از data object ها مشخص مینمایند. می توان آن را به عنوان یک دیکشنری از پروتکل SNMP در نظر گرفت. سازندههای دستگاههای مختلف تحت شبکه معمولا فایل MIB مربوط به دستگاههای تولیدی خودشان را نیز به منظور استفاده تهیه می کنند.
همان طور که گفته شد MIB یک پایگاه داده است. این پایگاه داده از نوع سلسله مراتبی یا همان ساختار درختی است. در این ساختارِ درختی هر ورودی با استفاده از یک Object Identifier یا OID آدرس دهی میشود. در MIB مجموعه ای از تعاریف وجود دارد که ویژگی های اجزای قابل مدیریت دستگاه مورد نظر در شبکه را مشخص میکنند.
برای مثال در MIB مربوط به یک پرینتر ، تعریفِ مقدارِ پودر باقی مانده در کارتریج وجود دارد. همچنین تعاریف دیگری مانند تعداد صفحه های پرینت گرفته شده یا تعداد برگه های موجود در سینی نیز وجود دارد. یا در MIB مربوط به یک سوئیچِ شبکه ممکن است نرخ Packet Loss به عنوان یک مقدار تعریف شده باشد. از آن جایی که ساختار MIB به صورت درختی است، بنابراین برای مشخص کردن آدرس مربوط به هر تعریف به یک OID نیاز خواهد بود که مکان دقیق تعریفِ هر شی مشخص شود.
هر OID یک عدد صحیح است که با یک نقطه از عدد بعدی جدا میشود. در بالاترین سطح درخت، نود ISO(1) قرار دارد که تمامی متغیرهای MIB بخشی از ISO هستند. سپس در لایه بعدی نود Organization (3) قرار دارد یا به اختصار Org که برای سازمان یا کمپانی استفاده میشود. سپس زیرمجموعه این نود، نودهای Dod (6) و Internet (1) قرار دارند که به ترتیب برای Department of defense و Internet community استفاده میشوند. ذیل نود Internet (1) نیز چندین نود دیگر قرار دارد که به تناسب پارامتر یا متغیری که قصد دسترسی به آن را داریم میتوان از آنها استفاده نمود. همچنین ذیل OID با شماره 1.3.6.1.2.1 که به صورت سلسله مراتبی ISO-Organization-DOD-Internet-MGMT-MIB-2 را نشان میدهد تعدادی OID استاندارد وجود دارد که ممکن است برای بسیاری از دستگاههای شبکه قابل استفاده باشد و اطلاعاتی مانند sysDescr (توصیفی از دستگاه یا entity)، ID دستگاه، sysUpTime (مدت زمان روشن بودن دستگاه) را در اختیار ما قرار دهد.
برای مثال شما برای دسترسی به اطلاعات یک Cisco ASA فایروال میتوانید از MIB فایلهایی که کمپانی Cisco در اختیار شما قرار میدهد استفاده نمایید. در این راستا نیز میتوانید پارامترهای مختلفی را بازیابی کنید. مثلا در یک Cisco ASA میتوان از طریق MIB فایلی به نام ciscoMemoryPoolMIB که کمپانی Cisco در اختیار قرار میدهد با OID به شماره 1.3.6.1.4.1.9.9.48.1.1.1.6 پارامتری مانند میزان حافظه آزاد را بازیابی نمود. برخی دیگر از OID هایی که از MIB فایلهای Cisco میتوان بازیابی کرد عبارتند از:
در SNMP دستورات مختلفی تحت عنوان پیامها بین SNMP Manager و SNMP Agent رد و بدل میشود. یک پیام SNMP شامل یک SNMP protocol data unit (PDU) و عناصر مربوط به header آن پیام است. یک SNMP agent در دو زمان اطلاعات را به SNMP manager ارسال میکند: 1- هنگامی که می خواهد به درخواست SNMP manager پاسخ دهد و 2- هنگامی که یک trap event رخ میدهد. انواع دستوراتی که بین SNMP Agent و SNMP Manager ردوبدل میشود عبارتند از: