ICMP چیست؟

BirHosting icmp index
توسط

پروتکل ICMP (internet control message protocol) برای تشخیص و اطلاع‌رسانی خطا‌ها در شبکه استفاده می‌شود. تقریبا تمام دستگاه‌هایی که در شبکه وجود دارند، می‌توانند انواعی از پیام‌های ICMP را ارسال و دریافت کنند و از پیام‌های دریافت شده، اطلاعات لازم را به دست بیاورند.

ساختار IP به گونه‌ای است که خود، رسیدن پیام را تضمین نمی‌کند. بنابراین، وجود پروتکل ICMP کمک می‌کند تا درباره‌ی خطا‌های ارسال و دریافت بسته‌های IP اطلاع‌رسانی بهتری انجام شود. با این حال، حتی با وجود این پروتکل، هنوز هم تضمینی برای رسیدن بسته به مقصد یا رسیدن خود پیام‌های خطا‌ وجود ندارد.

تعدادی از برنامه‌ها مانند traceroute و ping که از ابزارهای خطایابی در شبکه هستند، از این پروتکل استفاده می‌کنند.

هر بسته‌ای (packet) که در شبکه ارسال می‌شود، ممکن است از مسیر‌های مختلفی به سمت مقصد برود. گاهی ممکن است مقصد پیام در دسترس نباشد و پیام‌ به مقصد نرسد. هم‌چنین اگر در شبکه ترافیک زیادی در جریان باشد، این احتمال وجود دارد که یک دستگاه در شبکه، برای نمونه یک روتر، قادر به پاسخ‌گویی به حجم زیاد بسته‌هایی که به سمت آن ارسال شده‌اند نباشد و بسته را دور بیاندازد. پروتکل ICMP برای هر یک از این شرایط از کد‌های مختلفی استفاده می‌کند که هر کدام از آن‌ها، تا حدودی دلیل اتفاقی که برای بسته افتاده‌ است را توضیح می‌‌دهند.

BirHosting icmp

ساختار پروتکل

ساختار پیغام های پروتکل icmp که در datagram و در بالای ip قرار می گیرند ، به صورت زیر می باشد:

فیلد type
در این فیلد عددی قرار می گیرد که بیانگر نوع پیام می باشد و ساختار فیلدهای data و parameters بسته به عددی که در این فیلد قرار می گیرد ، متفاوت خواهد بود.

فیلد code
گاهی خود پیغام به چند زیرنوع دیگر تقسیم می شود که کد زیرنوع در این فیلد قرار می گیرد.

فیلد checksum
محتوای این فیلد برای سنجش اعتبار و سلامت بسته icmp port مورد استفاده قرار می گیرد. تمام بسته icmp به صورت دو بایت دوبایت جمع شده و نهایتا از مکمل ۱ حاصل جمع، عددی ۱۶ بیتی به دست می آید که درون این فیلد قرار می گیرد.

انواع کدها و پیام ها

۱- پیام های echo reply و echo request:
پیام echo request وقتی صادر می شود که یک مسیریاب بخواهد بداند که آیا یک ماشین خاص در شبکه قابل دسترس و موجود است یا خیر. در پاسخ به دریافت echo request، مقصد با ارسال پیام echo reply به آن پاسخ می دهد. با این پرسش و پاسخ، یک ماشین می تواند از قابل دسترس بودن یک مسیریاب یا ماشین میزبان در شبکه مطلع شود.

۲- پیام destination unreachable :
این پیام زمانی صادر می شود که زیر شبکه یا یک مسیریاب نتواند آدرس مقصد را تشخیص بدهد و یا به هر دلیلی بسته توسط ماشین میزبان تحویل گرفته نشود.

۳- پیام source quench :
این بسته زمانی برای یک ماشین ارسال می شود که از آن خواسته شود حجم ارسال بسته هایش را کاهش بدهد. چرا که در غیر اینصورت ازدحام پیش خواهد آمد. در مجموع هرگاه از یک ماشین، میزبان تقاضای کاهش نرخ تولید و ارسال بسته های IP را داشته باشد این پیام را صادر می کند. اگر ماشین پس از طی مدت مشخصی این پیام را دریافت نکرد، می تواند سرعت تولید بسته ها را به حالت اول برگرداند.

۴- پیام time exceeded :
این پیام زمانی صادر می شود که مهلت قانونی یک بسته منقضی شده باشد (یعنی TTL به صفر رسیده باشد) و یک مسیریاب مجبور به حذف آن شود; در چنین حالتی این پیام به آدرس فرستنده ی بسته ی IP برای آگاهی ارسال خواهد شد.

۵- پیام parameter problem :
این پیام زمانی صادر خواهد شد که مقدار نامعتبر در یکی از فیلدهای سرآیند در بسته ی IP قرار گرفته باشد و مسیریاب قادر به تشخیص و تفسیر سرآیند آن بسته ی IP نباشد.

۶- Traceroute :
این دستور جهت بررسی وضعیت کلیه ی روتر ها ی میانی تا مقصد و همچنین خود مقصد استفاده می شود. در این دستور تعدادی UDP segmet با ( time to live ) های به ترتیب و صعودی و با شماره port های رندوم و نامشخص از مبدا به سمت مقصد ارسال می شوند.

BirHosting icmp2

درباره گزارش خطاها در پروتکل ICMP 

در مدل ۵ لایه ای شبکه، این پروتکل همانند پروتکل IP در لایه ی network یا همان شبکه قرار می گیرد، اما نوع کارکرد آن شبیه پروتکل های لایه ی transport یا همان انتقال می باشد.

پروتکل ICMP امکانات لازم در خصوص اشکال زدایی، گزارش خطاها و همچنین مبادله ی اطلاعات محدود در بستر یک شبکه را ارائه می دهد.

با توجه به اینکه ICMP PORT صرفا مسئول ارائه ی پیغام ها و کنترل و گزارش خطاها و نهایتا ارائه ی بازخورد های لازم در جهت تحقق یک وضعیت خاص است، حاوی هیچ گونه اطلاعاتی مبنی بر اعلام وصول بسته های اطلاعات نمی باشد.

ضمنا این پیغام حاوی IP و نام آن روتر IP فرستنده می باشد.به همین ترتیب packet های بعدی با TTL های بالاتر نیز ارسال خواهند شد.

در هر رفت و برگشت فرستنده با دریافت پیغام TTL expied می تواند زمان ارسال بسته تا روتر و برگشت آن ( round-trip time یا RTT ) را محاسبه کند.


پست های توصیه شده