پروتکل ICMP یا Internet Control Message Protocol در واقع یکی از پروتکل های لایه Netwok است و دیوایس های تحت شبکه از آن برای تشخیص مشکلات ارتباطی شبکه استفاده می کنند. ICMP عمدتا برای تعیین اینکه اطلاعات به موقع به مقصد میرسند یا نه مورد استفاده قرار می گیرد.

این پروتکل معمولا در دستگاه های تحت شبکه نظیر روتر ها مورد استفاده قرار میگیرد. ICMP برای گزارش گرفتن، تست و آزمون و خطا مورد استفاده قرار می گیرد اما در حملات معروف DDOS هم کاربرد دارد.

کاربردICMP چیست؟

کاربرد اصلی ICMP برای ارسال گزارش های خطا است. زمانی که دو دیوایس از طریق اینترنت یه یکدیگر متصل می شوند. ICMP در صورتی که داده های هر کدام از این دیوایس ها به مقصد نرسد، گزارش خطا مورد نظر را برای مبدا میفرستد. به عنوان مثال اگر اطلاعات ارسال شده برای یک روتر خیلی بزرگ باشد، روتر بسته را رها می کند و یک پیام ICMP مربوط به اطلاعات رها شده به مبدا ارسال می کند.

کاربرد دیگر ICMP برای تشخیص و عیب یابی مشکلات شبکه است و که در فرایند پشتیبانی شبکه به دفعات مورد استفاده قرار می گیرد. ابزار های رایج در شبکه نظیر ping و traceroute هر دو از پروتکل ICMP استفاده می کنند. ابزار Traceroute برای نمایش مسیر ارسالی اطلاعات مورد نظر به مقصد و تعداد روتر هایی که در مسیر است مورد استفاده قرار می گیرد، همان مسیر فیزیکی واقعی روتر های متصل که درخواست ارسالی قبل از رسیدن به مقصد باید از آن عبور کند. این دستور می تواند دلیل تاخیر پکت ارسالی به مقصد را مشخص کند.

ابزار پینگ نسخه ی ساده شده از Traceroute است. پینگ در حقیقت سرعت اتصال بین دو دستگاه را تست می کند و گزارشی مبنی بر اینکه چقدر طول می کشد تا اطلاعات مورد نظر از مبدا به مقصد برسد و سپس مقصد به مبدا پاسخ دهد را ارائه می دهد. اگر چه Ping اطلاعاتی در مورد مسیریابی و روتر های بین مبدا و مقصد را نمایش نمی دهد اما هنوز یک معیار بسیار مفید برای اندازه گیری تاخیر بین دو دستگاه است. echo-request و echo-reply پیام های ICMP برای انجام عملیات پینگ است.

متأسفانه حملات در شبکه می توانند از این فرآیند سوء استفاده کنند و اختلال هایی در شبکه مانند ICMP flood attack و حمله مرگ با پینگ ایجاد کنند.

ICMP چگونه کار می کند؟

برخلاف پروتکل IP، ICMP با پروتکل لایه Transport مانند TCP یا UDP مرتبط نیست. این موضوع باعث می شود ICMP یک پروتکل بدون نیاز به اتصال باشد. به عبارتی دیگر یک دستگاه نیازی به باز کردن پکت ارسالی برای ارسال پیام به مقصد ندارد. این در حالی است که ترافیک معمولی توسط پروتکل IP با استفاده از پروتکل TCP انجام می شود، بدین گونه که هر دو دستگاه قبل از ارتباط و ارسال اطلاعات به یکدیگر باید با یکدیگر Handshake بکنند تا آمادگی هر دو دستگاه برای ارسال و دریافت اطلاعات سنجیده شود و قبل ارسال اطلاعات اصلی، اطلاعات دیگری را با یکدیگر به اشتراک می گذارند. همچنین ICMP یک پورت خاص را روی یک دستگاه را هدف قرار نمی دهد.