ICMP یک پروتکل برای تعیین در دسترس بودن شبکه و مدیریت کنترل جریان و خطا در لایه شبکه است. اما این در عمل به چه معناست؟
پروتکل پیام کنترل اینترنت (ICMP) یک پروتکل لایه سوم (لایه شبکه) در مدل هفت لایه OSI است. این پروتکل اتصال شبکه یا مشکلات انتقال داده بین دستگاه ها را تشخیص می دهد. با ارسال، دریافت و پردازش پیامهای ICMP برای گزارش مشکلات اتصال به دستگاه شبکه منبع کمک میکند.
از این رو، هدف اصلی پروتکل ICMP گزارش خطاها در لایه شبکه است. با این حال، بازیگران مخرب میتوانند عملکرد آن را برای راهاندازی حملاتی مانند حملات Distributed Denial of Service (DDoS) و Ping of Death دستکاری کنند. در اینجا، با پروتکل ICMP، موارد استفاده از آن و پارامترهایی که برای درک پیام های ICMP مهم هستند آشنا خواهید شد.
ICMP چگونه کار می کند؟
روترها از پروتکل ICMP برای انجام مدیریت شبکه و تشخیص مشکلات استفاده می کنند. هنگامی که شبکه تحویل بسته ها را به دستگاه مقصد غیرفعال می کند، پیام های خطا تولید می کند و به دستگاه فرستنده ارسال می کند. این پیام های خطا شامل زمان بیش از حد، مشکل پارامتر، مقصد غیر قابل دسترس، ازدحام شبکه و غیره است.
به عنوان مثال، هنگامی که یک فرستنده داده ها را از یک دستگاه به دستگاه مقصد در قالب یک دیتاگرام IP ارسال می کند، از طریق چندین روتر یا دستگاه واسطه عبور می کند. در برخی مواقع، ممکن است در ارسال دیتاگرام IPV4 خطایی رخ دهد. از این رو، پیام های ICMP به دو دسته کلی تقسیم می شوند: پیام های خطا، و پیام های پرس و جو.
پیام های گزارش خطا
اینها پیام هایی هستند که روتر یا هاست واسطه ممکن است در پردازش دیتاگرام با آنها روبرو شود:
- Time Exceeded: بسته ICMP دارای یک پارامتر زمان برای زندگی است که وقتی به 0 رسید، روتر یا میزبان دیتاگرام را دور می زند و پیغام خطای بیش از زمان ارسال می کند. همچنین زمانی که مقصد تمام قطعات داده را دریافت نمی کند، پیام ارسال می شود.
- Destination Unreachable: دستگاه شروع کننده اتصال، زمانی که روتر یا میزبان واسطه نتواند آن را تحویل دهد، پیام خطای مقصد غیرقابل دسترسی را دریافت می کند. در نتیجه، دستگاه ها دیتاگرام را دور می اندازند.
- Quench منبع: هنگامی که دستگاه ها به دلیل ازدحام شبکه نتوانند دیتاگرام را تحویل دهند، یک “پیام خاموش کردن منبع” ICMP را به فرستنده پیام ارسال می کنند. پیام گزارش خطا با اطلاع دادن به دستگاه مبدأ در مورد ازدحام در مسیر و کند کردن فرآیند ارسال داده، کنترل جریان را در لایه شبکه اضافه می کند.
- تغییر مسیر: یک روتر در یک مسیر غیربهینه بسته را به مسیریاب با مسیری بهینه بین مبدا و مقصد هدایت می کند. به این ترتیب، منبع را در مورد تغییر مسیر خود به روز می کند.
- مشکل پارامتر: دستگاه منبع این پیام را زمانی دریافت می کند که مقداری از دست رفته در هدر دیتاگرام وجود داشته باشد. به عنوان مثال، تفاوت در جمع محاسبه شده در مقصد از مبدا، این پیام خطای ICMP را ایجاد می کند.
پیام های پرس و جو
پیام های پرس و جو به صورت جفت رخ می دهند و اطلاعات خاصی را از دستگاه های میانی به دستگاه مبدأ ارائه می دهند.
- Echo-Request و Echo-Reply Message: این پیام ها به حل مشکلات تشخیصی شبکه کمک می کنند.
- درخواست و پاسخ مهر زمان: این درخواستهای مهر زمان و پیامهای پاسخ به تعیین زمان رفت و برگشت بین دستگاهها کمک میکنند.
آشنایی با پارامترهای ICMP
دادههای پیامهای ICMP در زیر هدر IP کپسوله میشوند، به این معنی که هدر دیتاگرام ICMP بعد از اطلاعات IPv4/v6 قرار میگیرد. قسمت اول هدر بسته ICMP شامل پارامترهایی است که به دستگاه های شبکه کمک می کند تا پیام خطا یا پرس و جو را تعیین کنند.
در بین 32 بیت اول، 8 بیت اول نوع پیام را تعیین می کند، 8 بیت بعدی کد پیام را تعیین می کند و بیت های باقی مانده حاوی اطلاعات مربوط به یکپارچگی داده است. از این رو، سه فیلد اطلاعاتی عبارتند از: انواع ICMP، کد ICMP و Checksum.
انواع ICMP
نوع هدف بسته ICMP را تعیین می کند. همانطور که به طور خلاصه توضیح می دهد که چرا دستگاه منبع آن پیام را دریافت می کند. 0-255 نوع پیام ICMP وجود دارد که هر نوع اطلاعات متفاوتی را ارائه می دهد. برخی از انواع مهم ICMP عبارتند از:
0: درخواست اکو
3: مقصد غیرقابل دسترس
4: Quench منبع
5: تغییر مسیر
8: پاسخ اکو
11: زمان بیش از حد
12: مشکل پارامتر
30: Traceroute
کد ICMP
کد ICMP اطلاعات بیشتری در مورد پیام ها ارائه می دهد. به عنوان مثال، ICMP نوع 3 با کد 0-15 مشخص می کند که چرا مقصد غیرقابل دسترس است. یعنی اگر کد 0 است، به این دلیل است که شبکه در دسترس نیست. به طور مشابه، برای نوع 3 کد 1، پیام مشخص می کند که میزبان غیرقابل دسترسی است.
علاوه بر این، کد 8 تایپ کنید 0 و نوع 0 کد 0 پیامهای درخواست پژواک و پاسخ اکو را نشان میدهند. از این رو، هر نوع پیام با مقدار کد یکسان، اطلاعات شبکه متفاوتی را می دهد.
چک جمع
چکسوم مکانیزم تشخیص خطا است که یکپارچگی دادهها را تعیین میکند. مقدار چک جمع بیت های موجود در پیام انتقال را نشان می دهد. فرستنده جمعبندی چک دادهها را محاسبه و شامل میشود و گیرنده مقدار را مجدداً محاسبه میکند و آن را با مقدار اصلی مقایسه میکند تا هرگونه تغییر در پیام اصلی را در حین ارسال مشخص کند.
قسمت دوم هدر به مقدار بایت اشاره می کند که علت مشکل در پیام اصلی است. در نهایت، قسمت انتهایی بسته ICMP دیتاگرام واقعی است.
نمونه هایی از ICMP در حال استفاده
در اینجا چند نمونه کار از پروتکل ICMP در مدیریت شبکه و ابزارهای مدیریتی مختلف آورده شده است.
پینگ کنید
Ping یک ابزار خط فرمان است که برای آزمایش در دسترس بودن شبکه و تأخیر بین دستگاهها به پیامهای درخواست پژواک و پاسخ انعکاس ICMP متکی است. ابزار به سادگی با تخمین کل بسته ارسال یا دریافت شده و درصد از دست رفتن بسته، در دسترس بودن سرور مقصد را تعیین می کند. همچنین به تعیین اندازه کل حداکثر واحد انتقال (MTU) کمک می کند.
برای تعیین در دسترس بودن google.com از پینگ
Traceroute
Traceroute یکی دیگر از ابزارهای خط فرمان است که از پیام های درخواست اکو و پاسخ اکو با متغیر TTL برای ترسیم مسیر بین دستگاه های مبدا و مقصد استفاده می کند. همچنین در تعیین تأخیرهای پاسخ مفید است و با پرس و جوی چند بار در هر جهش، دقت را تضمین می کند.
چگونه ICMP بدون پورت کار می کند؟
با توجه به توضیحات بالا، ICMP یک پروتکل بدون اتصال است که داده ها را به صورت مستقل به صورت دیتاگرام ارسال می کند و هدر آن بعد از جزئیات IPv4 ظاهر می شود. با این حال، شما همچنین می توانید متوجه عدم وجود شماره پورت شوید که این سوال را ایجاد می کند که چگونه دستگاه ها داده های ICMP را دریافت می کنند یا از هرگونه اتصال آگاه می شوند؟
پاسخ بسیار ساده است. پروتکل ICMP برای کار در لایه شبکه مدل OSI و برقراری ارتباط بین روترها و میزبان ها برای به اشتراک گذاری اطلاعات طراحی شده است. شماره پورت ها بخشی از لایه حمل و نقل هستند و ICMP نه یک پروتکل TCP و نه یک UDP است. در نهایت، نوع ICMP و ترکیب کد به دستگاه ها کمک می کند تا پیام را تعیین کنند و تمام اطلاعات مربوط به شبکه را دریافت کنند.
کنترل خطا و جریان با ICMP
جزئیات بالا در مورد پروتکل ICMP نشان می دهد که چگونه کنترل جریان و کنترل خطای داده ها را در لایه سه یک مدل OSI تضمین می کند. پیام ها و پارامترهای پروتکل در قسمت اول هدر بسته ICMP تمام جنبه های مدیریت شبکه و مسائل تشخیص را پوشش می دهد.
دانستن این نکته مهم است که تنظیمات نادرست فایروال می تواند به مهاجمان اجازه دهد تا از طریق شبکه سازمان پینگ انجام دهند و آن را مستعد حملات DDOS، ping of death و ICMP flood کند. میتوانید از Wireshark برای گرفتن بستهها از اینترنت و تجزیه و تحلیل دقیق بستههای ICMP برای درک بهتر استفاده کنید.