ICMP چیست؟
پروتکل ICMP (internet control message protocol) برای تشخیص و اطلاعرسانی خطاها در شبکه استفاده میشود. تقریبن تمام دستگاههایی که در شبکه وجود دارند، میتوانند انواعی از پیامهای ICMP را ارسال و دریافت کنند و از پیامهای دریافت شده، اطلاعات لازم را به دست بیاورند.
ساختار IP به گونهای است که خود، رسیدن پیام را تضمین نمیکند. بنابراین، وجود پروتکل ICMP کمک میکند تا دربارهی خطاهای ارسال و دریافت بستههای IP اطلاعرسانی بهتری انجام شود. با این حال، حتا با وجود این پروتکل، هنوز هم تضمینی برای رسیدن بسته به مقصد یا رسیدن خود پیامهای خطا وجود ندارد.
تعدادی از برنامهها مانند traceroute و ping که از ابزارهای خطایابی در شبکه هستند، از این پروتکل استفاده میکنند. برای جلوگیری از به وجود آمدن چرخههای بینهایت در ارسال پیامهای ICMP، پیامهای خطایی که دربارهی خود پیامهای ICMP باشند، ارسال نمیشود.
هر بستهای (packet) که در شبکه ارسال میشود، ممکن است از مسیرهای مختلفی به سمت مقصد برود. گاهی ممکن است مقصد پیام در دسترس نباشد و پیام به مقصد نرسد. همچنین اگر در شبکه ترافیک زیادی در جریان باشد، این احتمال وجود دارد که یک دستگاه در شبکه، برای نمونه یک روتر، قادر به پاسخگویی به حجم زیاد بستههایی که به سمت آن ارسال شدهاند نباشد و بسته را دور بیاندازد. پروتکل ICMP برای هر یک از این شرایط از کدهای مختلفی استفاده میکند که هر کدام از آنها، تا حدودی دلیل اتفاقی که برای بسته افتاده است را توضیح میدهند.
انواع کدهای ICMP
تعدادی از مهمترین پیامهای ICMP عبارتند از:
۱- Echo Request: دستور ping از این نوع پیام برای در دسترس بودن یک دستگاه در ساختار شبکه استفاده میکند.
۲- Echo Reply: این پیام در پاسخ به پیام Echo Request و از سمت دستگاه مورد پرسش در این پیام ارسال میشود. این پیام بیانگر آن است که دستگاه مورد پرسش در Echo Request، در دسترس است.
۳- Destination unreachable: این پیام به این معنی است که دسترسی به مقصد به دلایل مختلفی امکانپذیر نیست. این دلایل میتواند وجود نداشتن دستگاه مورد پرسش در پیام Echo Request در ساختار شبکه، از دسترس خارج شدن دستگاه به دلایل مختلف در زمان انجام پرسش، فعال نبودن port مورد نظر در دستگاه مقصد و ... باشد.
۴- Time Exceeded: این پیام به این معنی است که مدت زمان اعتبار بسته (TTL) در حالی به پایان رسیده که بسته هنوز به مقصد نرسیده است. دستگاهی در فاصلهی میان مبدا و مقصد که بسته را به دلیل به پایان رسیدن TTL آن دور انداخته است، برای اطلاع مبدا از دور انداخته شدن بسته و نرسیدن آن به مقصد، این پیام را به مبدا ارسال بسته، میفرستد.