پروتکل ICMP یکی از مهم ترین پروتکل ها در دنیای شبکه است که نقش اصلی آن، ارسال پیام های کنترلی و گزارش خطا در بستر IP می باشد. اگر برای شما سوال است که پروتکل ICMP چیست، چه کاربردی دارد و چگونه در عیب یابی شبکه استفاده می شود، در این مقاله به صورت کامل به این موضوع می پردازیم.
برای خرید هاست پایتون و خرید هاست نود جی اس کلیک کنید.
پروتکل ICMP چیست؟
ICMP مخفف عبارت Internet Control Message Protocol است که در فارسی به آن پروتکل کنترل پیام های اینترنتی گفته می شود. این پروتکل بخشی از مجموعه پروتکل IP به شمار می رود و برای اعلام خطا، بررسی وضعیت ارتباط، عیب یابی شبکه و ارسال پیام های کنترلی میان روترها، سرورها و سیستم ها استفاده می شود.
به زبان ساده، هر زمان در مسیر انتقال داده مشکلی ایجاد شود، ICMP می تواند این مشکل را به مبدا اطلاع دهد. به همین دلیل این پروتکل یکی از ابزارهای مهم در مدیریت و بررسی سلامت شبکه محسوب می شود.
مقالات دیگر: CMD چیست؟

جایگاه پروتکل ICMP در مدل شبکه
در مدل لایه ای شبکه، ICMP در لایه شبکه یا Network Layer قرار می گیرد و در کنار IP فعالیت می کند. با اینکه محل قرارگیری آن در لایه شبکه است، اما عملکرد آن تا حدی شبیه پروتکل های کنترلی است؛ زیرا به جای انتقال مستقیم داده های کاربر، وظیفه آن اطلاع رسانی درباره وضعیت ارتباط و خطاهای احتمالی است.
نکته مهم این است که ICMP برای ارسال پیام های کنترلی استفاده می شود و مانند TCP وظیفه تایید دریافت داده ها را ندارد. به همین دلیل در این پروتکل خبری از Acknowledgment یا تایید وصول بسته ها نیست.
مقالات دیگر:چگونه ریموت دسکتاپ را فعال کنیم؟

وظیفه پروتکل ICMP چیست؟
مهم ترین وظیفه ICMP اعلام خطا و گزارش وضعیت ارتباط در شبکه است. این پروتکل به دستگاه ها کمک می کند تا متوجه شوند آیا مقصد در دسترس است یا خیر و اگر مشکلی در مسیر وجود داشته باشد، از آن مطلع شوند.
مهم ترین وظایف ICMP عبارت اند از:
- گزارش خطا در هنگام انتقال بسته های IP
- بررسی در دسترس بودن میزبان یا روتر
- کمک به عیب یابی شبکه
- ارسال پیام های کنترلی برای مدیریت بهتر ارتباط
- کمک به ابزارهایی مانند Ping و Traceroute
مقالات دیگر: راهنمای جامع پهنای باند (Bandwidth)

ساختار پیام در پروتکل ICMP
پیام های ICMP درون بسته های IP قرار می گیرند و ساختار مشخصی دارند. مهم ترین فیلدهای این پروتکل شامل موارد زیر هستند:
- فیلد Type
فیلد Type نوع پیام ICMP را مشخص می کند. هر عدد در این بخش نشان دهنده یک پیام خاص است. برای مثال، Echo Request و Echo Reply هر کدام Type مخصوص به خود را دارند.
- فیلد Code
فیلد Code جزئیات بیشتری از نوع پیام را نشان می دهد. در واقع بعضی از پیام ها دارای زیرمجموعه های مختلف هستند و این فیلد مشخص می کند که منظور کدام حالت از آن پیام است.
- فیلد Checksum
فیلد Checksum برای بررسی صحت و سلامت پیام ICMP استفاده می شود. با کمک این فیلد، گیرنده می تواند مطمئن شود که داده ها در مسیر انتقال دچار خرابی یا تغییر نشده اند.
مقالات دیگر: MSSQL یا Microsoft SQL Server چیست؟

انواع پیام های مهم در ICMP
پروتکل ICMP دارای پیام های مختلفی است که هر کدام وظیفه مشخصی دارند. در ادامه با مهم ترین آن ها آشنا می شویم.
1. Echo Request و Echo Reply
این دو پیام در دستور Ping استفاده می شوند. زمانی که یک سیستم می خواهد بررسی کند آیا مقصد در دسترس است یا خیر، یک Echo Request ارسال می کند. اگر مقصد فعال باشد، با Echo Reply پاسخ می دهد.
2. Destination Unreachable
این پیام زمانی ارسال می شود که مقصد قابل دسترس نباشد. برای مثال ممکن است شبکه مقصد ناشناخته باشد، میزبان پاسخ ندهد، پروتکل مقصد پشتیبانی نشود یا پورت مورد نظر در دسترس نباشد.
3. Source Quench
این پیام در گذشته برای کنترل ازدحام شبکه استفاده می شد. زمانی که دستگاهی بسته های زیادی ارسال می کرد و احتمال شلوغی شبکه وجود داشت، این پیام برای کاهش سرعت ارسال داده ها فرستاده می شد.
4. Time Exceeded
این پیام زمانی ایجاد می شود که مقدار TTL یک بسته IP در مسیر به صفر برسد. در این حالت روتر بسته را حذف می کند و از طریق ICMP به فرستنده اطلاع می دهد که زمان مجاز بسته تمام شده است.
5. Parameter Problem
اگر در سرآیند بسته IP مشکلی وجود داشته باشد، مانند مقدار نامعتبر در یکی از فیلدها، پیام Parameter Problem ایجاد می شود تا مبدا از وجود خطا مطلع شود.
جدول برخی از Type و Code های مهم در ICMP
| Type | Code | توضیح |
| 0 | 0 | Echo Reply |
| 3 | 0 | Destination Network Unreachable |
| 3 | 1 | Destination Host Unreachable |
| 3 | 2 | Destination Protocol Unreachable |
| 3 | 3 | Destination Port Unreachable |
| 4 | 0 | Source Quench |
| 8 | 0 | Echo Request |
| 11 | 0 | TTL Expired |
| 12 | 0 | Bad IP Header |
یکی از رایج ترین کاربردهای ICMP در دستور Ping است. این دستور برای بررسی ارتباط بین دو سیستم در شبکه استفاده می شود. وقتی شما یک آدرس IP یا نام دامنه را Ping می کنید، سیستم شما یک پیام Echo Request ارسال می کند و در صورت دریافت Echo Reply متوجه می شود که مقصد فعال و در دسترس است.
Ping یکی از ساده ترین و پرکاربردترین ابزارهای عیب یابی شبکه است و تقریبا همه مدیران شبکه از آن استفاده می کنند.

نقش ICMP در Traceroute
دستور Traceroute برای شناسایی مسیر عبور بسته ها از مبدا تا مقصد استفاده می شود. این ابزار با کمک TTL و پیام های ICMP کار می کند.
در Traceroute بسته هایی با TTL های مختلف ارسال می شوند. بسته اول با TTL برابر 1 فرستاده می شود. وقتی این بسته به اولین روتر می رسد، TTL آن صفر می شود و روتر بسته را حذف می کند. سپس یک پیام ICMP از نوع Time Exceeded برای مبدا ارسال می شود.
این روند ادامه پیدا می کند تا همه روترهای میانی شناسایی شوند و در نهایت بسته به مقصد برسد. به این شکل Traceroute می تواند مسیر دقیق عبور بسته ها را نمایش دهد.

TTL در شبکه چیست؟
TTL مخفف Time To Live است. این مقدار در هدر بسته IP قرار می گیرد و نشان می دهد یک بسته تا چند روتر می تواند در شبکه حرکت کند. با عبور از هر روتر، یک واحد از TTL کم می شود. اگر TTL به صفر برسد، بسته حذف خواهد شد.
هدف TTL این است که از چرخش بی پایان بسته ها در شبکه جلوگیری شود و در صورت بروز حلقه های مسیریابی، بسته ها برای همیشه در شبکه باقی نمانند.

آیا ICMP پورت دارد؟
یکی از سوالات رایج این است که آیا ICMP پورت دارد یا خیر. پاسخ این است که ICMP مانند TCP و UDP از پورت استفاده نمی کند. چون این پروتکل برای ارسال پیام های کنترلی و خطا طراحی شده است، ساختار آن بر اساس Type و Code تعریف می شود، نه شماره پورت.
بنابراین اصطلاح پورت ICMP از نظر فنی درست نیست، زیرا ICMP در لایه ای فعالیت می کند که مفهومی به نام پورت در آن وجود ندارد.

مزایا و اهمیت پروتکل ICMP
پروتکل ICMP با وجود سادگی، اهمیت بسیار زیادی در شبکه دارد. برخی از مهم ترین مزایای آن عبارت اند از:
- کمک به شناسایی خطاهای ارتباطی
- ساده کردن عیب یابی شبکه
- بررسی سریع در دسترس بودن مقصد
- کمک به تحلیل مسیر بسته ها در شبکه
- اطلاع رسانی درباره مشکلات موجود در ارسال داده ها

جمع بندی
پروتکل ICMP یکی از بخش های اصلی مجموعه TCP/IP است که وظیفه آن ارسال پیام های کنترلی، اعلام خطا و کمک به عیب یابی در شبکه می باشد. این پروتکل در لایه شبکه کار می کند و با ابزارهایی مانند Ping و Traceroute ارتباط مستقیم دارد. همچنین فیلدهای مهمی مانند Type، Code و Checksum در ساختار آن نقش اساسی دارند.
اگر بخواهیم خیلی خلاصه بگوییم، ICMP زبان گزارش دهی و عیب یابی در شبکه است و بدون آن بررسی سلامت ارتباطات شبکه بسیار دشوار خواهد بود.
سوال و جواب
1. پروتکل ICMP چیست؟
ICMP یک پروتکل کنترلی در شبکه است که برای گزارش خطا، بررسی وضعیت ارتباط و عیب یابی در بستر IP استفاده می شود.
2. آیا ICMP پورت دارد؟
خیر، ICMP مانند TCP و UDP از پورت استفاده نمی کند و پیام های آن بر اساس Type و Code شناسایی می شوند.
3. مهم ترین کاربرد ICMP چیست؟
مهم ترین کاربرد ICMP اعلام خطا و بررسی در دسترس بودن مقصد در شبکه است. ابزارهایی مانند Ping و Traceroute نیز بر پایه همین پروتکل کار می کنند.
4. TTL در ICMP چه نقشی دارد؟
TTL مشخص می کند یک بسته IP تا چند روتر می تواند در شبکه حرکت کند. اگر این مقدار به صفر برسد، بسته حذف می شود و معمولا یک پیام Time Exceeded از طریق ICMP ارسال می شود.