پروتکل ICMP چیست؟
پروتکل ICMP (پروتکل کنترل پیامهای اینترنتی)، یک عنصر حیاتی در مجموعه پروتکل اینترنت است که توسط دستگاههای مختلف شبکه برای انتقال پیامهای خطا و جزئیات عملیاتی استفاده میشود. چنین جزئیاتی میتواند نشان دهنده عدم وجود سرویس درخواستی یا عدم دسترسی به هاست یا روتر باشد. ICMP به عنوان پیام رسان خطاهای ارتباطی شبکه و وضعیت های عملیاتی عمل میکند.
پروتکل ICMP چیست؟
در سال 1981، Network Working Group پروتکل Internet Control Message Protocol را توسعه داد تا به دستگاههای متصل به هم کمک کند تا سریع و آسان با هم ارتباط برقرار کنند.
همانطور که توسعه دهندگان اشاره کردند، ICMP برای قابل اعتمادتر کردن یک شبکه ساخته نشده است. در عوض، برای کمک به تیمها در عیبیابی و رفع سریع مشکلات طراحی شده است تا بتوانند آنلاین بمانند.
ICMP توسط دستگاههای شبکه از جمله کامپیوترها و روترها استفاده میشود و ممکن است از آن برای موارد زیر استفاده شود:
- تشخیص(Diagnostics) بررسی کنید که آیا سروری باز است و پیامها را میپذیرد و اگر اینطور نیست، دلیل آن را پیدا کنید.
- گزارش خطا(Error reporting) مشخص کنید که چرا برخی یا همه دادههای شما به گیرنده مورد نظر نمیرسد.
- سرعت(Speed) بررسی کنید که چقدر طول میکشد تا یک بسته از یک مکان به مکان دیگر منتقل شود.
سه تابع در پروتکل ICMP حیاتی است که عبارتند از:
پینگ (Ping) - ارسال پیام به سرور مقصد در عوض یک کپی از آن پیام را دریافت خواهید کرد. این دستور به شما کمک میکند تا در دسترس بودن و سرعت را تعیین کنید.
تریسروت (Traceroute) - یک درخواست ارسال کنید و از هر روتر که درخواست را در مسیر به مقصد درخواستی شما رسیدگی میکند، یادداشت دریافت کنید.
غیر قابل دسترسی(Unreachable) - در میان یک Traceroute، ممکن است بشنوید که به مقصد قابل دسترسی نیست. وقتی این اتفاق میافتد، از ارسال پیامهای بیشتری به آن مقصد Block میشوید.
پیامهای ICMP اغلب برای کمک به تیمها استفاده میشود تا بفهمند که آیا دادههایی که ارسال میکنند اصلا دریافت میشود یا خیر و اگر چنین است، آیا به موقع به آنها میرسند؟
پروتکل ICMP چگونه کار می کند؟
پروتکل ICMP به دست دادن (handshake) یا اتصال رسمی نیاز ندشته و به عنوان یک پروتکل بدون اتصال عمل میکند. دادههایی که برمیگرداند به صورت عددی است که برای درک آن رمزگشایی بشود.
توسعه دهندگان اغلب از نمودارها برای توضیح اینکه پیامهای ICMP به چه صورت هستند استفاده میکنند.
ساختار ICMP
یک پیام ICMP ساختار خاصی دارد. با یک هدر 8 بایتی و یک بخش داده با اندازه متغیر شروع میشود. هدر شامل یک فیلد Type (8 بیت)، یک فیلد Code (8 بیت) و یک فیلد Checksum (16 بیت) است. 32 بیت باقی مانده برای اهداف مختلف بر اساس نوع و کد پیام استفاده میشود.
Type: این فیلد نوع پیام ICMP را نشان میدهد. برای مثال، ICMP Echo Request، که در ابزار PING استفاده میشود، دارای نوع 8 است و ICMP Echo Reply دارای نوع 0 است.
Code: این قسمت اطلاعات بیشتری در مورد نوع پیام ارائه میدهد. به عنوان مثال، با یک پیام Destination Unreachable (نوع 3)، کدهای مختلف مشخص میکنند که آیا destination network غیرقابل دسترسی است، destination host غیرقابل دسترسی است، destination protocol غیرقابل دسترسی است یا خیر.
Checksum: این فیلد برای اطمینان از یکپارچگی پیام ICMP استفاده میشود. به عنوان متمم 16 بیتی از جمع متمم پیام ICMP که با فیلد Type شروع میشود، محاسبه می شود.
دادههایی که به دنبال هدر میآیند بر اساس نوع و کد پیام متفاوت است. به عنوان مثال، در یک درخواست Echo یا Echo Reply ، معمولا شامل یک شماره توالی و مقداری داده دلخواه است.
نقش ICMP
ICMP نقش مهمی در مدیریت و بهره برداری از شبکههای اینترنتی ایفا میکند. در زیر برخی از عملکردهای کلیدی آورده شده است:
- گزارش خطا: ICMP به دستگاهها اجازه میدهد تا پیامهای خطا را به منبع یک بسته مشکل دار ارسال کنند، معمولا زمانی که یک بسته به درستی پردازش نمیشود. از پیامهای خطای متعددی از جمله Destination Unreachable، Source Quench، Time Exceeded و Redirect پشتیبانی میکند.
- اطلاعات عملیاتی: از پیامهای ICMP نیز برای به اشتراک گذاری اطلاعات عملیاتی در مورد وضعیت شبکه استفاده میشود. برای مثال، یک ICMP Echo Request (که معمولا به عنوان پینگ شناخته میشود) میتواند برای بررسی اینکه آیا یک مقصد خاص قابل دسترسی است و اینکه بستهها چقدر طول میکشد تا به آن مقصد بروند و برگردند، استفاده شود.
- عیب یابی شبکه: ICMP برای تشخیص مشکلات شبکه بسیار ارزشمند است. ابزارهایی مانند ping و traceroute به ترتیب برای بررسی اتصال شبکه و یافتن مسیرهایی که بستهها از طریق شبکه طی میکنند، به پیامهای ICMP متکی هستند.
ICMP Echo Request and Reply
پیام های ICMP Echo Request و Echo Reply بخشی جدایی ناپذیر از پروتکل ICMP هستند و به طور گسترده برای اهداف تشخیصی، بیشتر از طریق ابزار Ping استفاده میشوند.
-
ICMP Echo Request
ICMP Echo Request پیامی است که توسط دستگاهی ارسال میشود که میخواهد دسترسی و تأخیر را به دستگاه دیگری در شبکه IP پینگ یا پرس و جو کند. در اینجا این روند است:
- دستگاهی که قصد دارد دستگاه دیگری را پینگ کند، یک پیام ICMP Echo Request ایجاد میکند. پیام شامل یک هدر و مقداری داده دلخواه است.
- سپس پیام در یک بسته IP کپسوله میشود. آدرس IP مبدا بر روی آدرس IP دستگاهی که درخواست را ارسال میکند و آدرس IP مقصد روی آدرس IP دستگاهی که قرار است پینگ شود تنظیم میشود.
- سپس بسته در شبکه ارسال میشود.
-
ICMP Echo Reply
پس از دریافت ICMP Echo Request ، مراحل زیر دنبال می شوند:
- پس از دریافت پیام ICMP Echo Request، دستگاه مورد نظر یک پیام ICMP Echo Reply ایجاد میکند. این پیام حاوی همان دادههای پیام درخواست است.
- این پیام پاسخ در یک بسته IP محصور شده است. این بار، آدرس IP مبدا بر روی آدرس IP دستگاه ارسال کننده پاسخ (یعنی دستگاهی که پینگ شده است) و آدرس IP مقصد روی آدرس IP دستگاهی که درخواست اکو را ارسال کرده است تنظیم می شود.
- سپس بسته Echo Reply به فرستنده اصلی بازگردانده میشود.
با اندازه گیری زمان ارسال Echo Request و دریافت Echo Reply، دستگاه میتواند زمان رفت و برگشت یا تاخیر بین خود و دستگاه دیگری را در شبکه تخمین بزند. اگر در بازه زمانی معینی Echo Reply دریافت نشود، دستگاه میتواند فرض کند که دستگاه مورد نظر قابل دسترسی نیست.
بنابراین، این پیامهای ICMP، تشخیص مشکلات اتصال شبکه را تسهیل و تاخیر را اندازهگیری کرده و مکانیزم سادهای برای نقشه مسیرهای شبکه ارائه میدهند.
خرید سرور مجازی در پنج موقعیت جغرافیایی ایران، ترکیه، هلند، آلمان و آمریکا با قابلیت تحویل آنی در پارسدو فراهم است.
پروتکل ICMP میتواند باعث حمله شود؟
ICMP، در حالی که ارزشمند است، میتواند به طور مخرب نیز مورد استفاده قرار گیرد. یک مهاجم میتواند از پیامهای ICMP برای انجام انواع حملات استفاده کند، مانند حملات ICMP flood (مهاجم شبکه را با ترافیک ICMP مختل میکند) یا ICMP tunneling (مهاجم به طور مخفیانه دادههای محصور شده در بستههای ICMP را ارسال میکند).
از دید یک هکر، ICMP میتواند منجر به حملات DDOS شود. محققان میگویند هیچ دفاع شناخته شدهای در برابر هک در این موارد به جز پیشگیری وجود ندارد.
حملات ICMP می تواند شامل موارد زیر باشد:
- Floods - هکر صدها یا حتی هزاران درخواست پینگ به سرور ارسال میکند، سرور باید به هر یک از آنها پاسخ دهد و به مرور زمان سرور نمیتواند کار دیگری را انجام دهد.
- Size - هکرها بستههایی بزرگتر از آنچه که توسط پروتکلهای شما مجاز است ارسال میکنند. یک حمله به اصطلاح ping of death یا nuke میتواند سرور شما را در عرض چند دقیقه از بین ببرد.
- Spoofing - هکرها بستههای ICMP را با آدرسهای IP جعلی ارسال میکنند. این دو شروع به پینگ بی پایان یکدیگر میکنند.
- Tracing- هکرها از دستور traceroute برای تعیین توپولوژی شبکه استفاده میکنند؛ این دادهها میتوانند در حمله بعدی مورد استفاده قرار گیرند.
مدیران شبکه باید فایروالها و سیستمهای تشخیص و پیشگیری از نفوذ را برای مدیریت صحیح ترافیک ICMP پیکربندی کنند که ممکن است شامل مسدود کردن انواع خاصی از پیامهای ICMP به طور کامل یا محدود کردن نرخ ترافیک ICMP برای جلوگیری از حملات flood باشد.
نتیجه
پروتکل ICMP یک جزء اساسی از مجموعه پروتکل اینترنت است که برای مدیریت خطا و تشخیص شبکه بسیار مهم است. علیرغم استفاده نادرست احتمالی آن در حملات شبکه، مزایای آن در حفظ و مدیریت سلامت شبکههای اینترنتی ضروری است. با درک عملکرد و مدیریت صحیح آن، مدیران شبکه میتوانند مزایای آن را بهینه کرده و در عین حال خطرات بالقوه آن را به حداقل برسانند.