پروتکل ICMP چیست؟
پروتکل کنترل پیامهای اینترنتی (ICMP) مجموعهای از قوانین ارتباطی است که دستگاهها برای برقراری ارتباط در مورد خطاهای انتقال داده در یک شبکه از آن استفاده میکنند. در تبادل پیام بین فرستنده و گیرنده، ممکن است خطاهای غیرمنتظرهای رخ دهد. به عنوان مثال، پیامها ممکن است خیلی طولانی باشند یا بستههای داده ممکن است خارج از ترتیب برسند، به طوری که گیرنده نتواند آنها را سرهم کند. در چنین مواردی، گیرنده از ICMP برای اطلاع رسانی به فرستنده با یک پیام خطا استفاده میکند و درخواست میکند که پیام دوباره ارسال شود.
موارد استفاده از ICMP چیست؟
پروتکل کنترل پیامهای اینترنتی (ICMP) یک پروتکل مهم لایه شبکه در شبکههای کامپیوتری است. این پروتکل مکانیزمی استاندارد برای دستگاههای شبکه فراهم میکند تا اطلاعات حیاتی مانند اتصال و وضعیت شبکه را به اشتراک بگذارند. همه دستگاههای متصل به شبکه، از جمله روترها و دستگاههای endpoint، میتوانند پیامهای ICMP را پردازش کنند. ICMP برای کار با IPv4 و IPv6 تطبیق داده شده است.
در ادامه به برخی از موارد استفاده رایج ICMP میپردازیم.
گزارش خطا
پیامهای خطای ICMP، خطاهای شبکه را گزارش میدهند – مانند مقصدهای غیرقابل دسترسی، timeout یا مشکلات تکه تکه شدن. این پیامها به ویژه برای پروتکل User Datagram (UDP) که یک مدل ارتباطی بدون اتصال دارد، مهم هستند.UDP تحویل قابل اعتماد و مرتب بستهها را تضمین نمیکند. هنگامی که یک بسته UDP ارسال میشود، ممکن است بسته گم شود یا با خطاهایی مانند خطاهای checksum تحویل داده شود. در این صورت، گیرنده پیامهای گزارش خطای ICMP را به فرستنده ارسال میکند تا آن را از مشکل مطلع کند.
تشخیص
میتوانید از ICMP برای تشخیص شبکه استفاده کنید. این پروتکل بیشتر برای دستورات ping و traceroute استفاده میشود.دستور ping با ارسال بستههای درخواست echo ICMP به یک دستگاه هدف، قابلیت دسترسی دستگاههای شبکه را آزمایش میکند. اگر دستگاه قابل دسترسی باشد، یک پاسخ echo ICMP را برمیگرداند. این دستور به طور قابل اعتمادی تأخیر شبکه را بررسی میکند و از در دسترس بودن دستگاه اطمینان حاصل میکند.دستور traceroute مسیری را که بستهها از مبدا به مقصد طی میکنند را ردیابی میکند. برای انجام این کار، این دستور پیامهای درخواست echo و پاسخ echo را به مقصد مورد نظر ارسال میکند.درخواستهای echo حاوی یک مقدار time-to-live (TTL) هستند که هر بار که بسته از یک روتر عبور میکند، یک واحد کاهش مییابد. هنگامی که یک بسته به روتری با TTL صفر میرسد، روتر یک پیام ICMP را به مبدا ارسال میکند.این پیام حاوی اطلاعاتی در مورد مسیری است که بسته طی کرده است. Traceroute مسیر دقیق یک بسته را نشان میدهد که میتواند بینشهایی در مورد عملکرد شبکه به شما ارائه دهد.
امنیت شبکه
میتوانید از ICMP برای شناسایی ترافیک غیرمجاز شبکه استفاده کنید و فقط ترافیک قانونی را از طریق شبکه مجاز کنید. فایروالها از ICMP برای اجازه یا مسدود کردن انواع خاصی از ترافیک استفاده میکنند. مدیران شبکه همچنین از ابزارهای نظارت ICMP برای ردیابی وضعیت و اتصال دستگاههای شبکه و شناسایی دستگاههای ناشناخته استفاده میکنند.همچنین میتوانید از آن برای شناسایی الگوهای ترافیک غیرعادی که ممکن است نشان دهنده فعالیت غیرمجاز باشد، استفاده کنید.
ICMP چگونه کار میکند؟
پروتکل کنترل پیامهای اینترنتی معمولاً در کنار پروتکلهای شبکه دیگر مانند TCP/IP یا User Datagram Protocol (UDP) کار میکند. میزبانها و روترها هنگام وقوع رویدادهای خاص شبکه، پیامهای ICMP یا بستههای ICMP را مبادله میکنند.
یک بسته ICMP از یک سرآیند بسته ICMP و یک بخش داده ICMP تشکیل شده است.
سرآیند بسته ICMP
سرآیند ICMP حاوی اطلاعاتی در مورد نوع بسته، کد آن، checksum و یک شناسه است. هنگامی که بستههای ICMP ارسال میشوند، گیرنده پیام اطلاعات سرآیند را میخواند. بر اساس نوع بسته، اقدام مناسب را انجام میدهد.
به عنوان مثال، اگر نوع درخواست echo باشد، گیرنده یک پاسخ echo با همان داده ارسال میکند. اگر نوع مقصد غیرقابل دسترسی باشد، گیرنده با یک پیام مقصد غیرقابل دسترسی پاسخ میدهد.
بخش داده ICMP
بخش داده در یک پیام ICMP شامل اطلاعاتی مانند آدرس IP مقصد یا علت خرابی است. همچنین حاوی کدهای خطا یا کدهای عددی است که خطاها را شناسایی میکند.
در اینجا چند نمونه آورده شده است:
- یک کد مقصد غیرقابل دسترسی (نوع ۳) نشان میدهد که دستگاه گیرنده در شبکه وجود ندارد
- یک کد تغییر مسیر (نوع ۵) پیامی را به روتر دیگری ارسال میکند که نشان دهنده مسیر بهتری به مقصد است
- کدهای درخواست echo و پاسخ echo (نوع ۸ و ۱۰) اتصال بین دستگاهها را آزمایش میکنند
- یک پیام زمان überschritten نشان میدهد که یک بسته از حداکثر زمان خود برای رسیدن به مقصد تجاوز کرده است
- یک پیام مشکل پارامتر نشان میدهد که یک روتر با یک سرآیند فیلد IP مشکلی دارد
- یک پیام Source Quench زمانی ارسال میشود که یک روتر دچار ازدحام میشود و نیاز به محدود کردن تعداد بستههایی دارد که دریافت میکند
تفاوت ICMP و TCP چیست؟
TCP یک پروتکل connection-oriented برای تحویل داده قابل اعتماد و بررسی شده با خطا است. این پروتکل معمولاً برای مرور وب، ایمیل، ورود از راه دور و برنامههای انتقال فایل استفاده میشود. TCP به handshaking نیاز دارد، یک سری پیام که اعتماد و احراز هویت بین فرستنده و گیرنده را برقرار میکند. TCP تحویل پیام را تضمین میکند.در مقابل، پروتکل کنترل پیامهای اینترنتی یک پروتکل connectionless است. این پروتکل تحویل پیام را تضمین نمیکند. از آنجایی که ICMP فقط برای گزارش خطا استفاده میشود، پیامهای ICMP نیز کوچکتر از بستههای TCP هستند.ICMP و TCP به طور مشترک برای تعیین علت عدم موفقیت تحویل TCP استفاده میشوند.
حملات ICMP ping flood چیست؟
حملات ICMP ping flood رویدادهای denial of service (DoS) هستند که در آن کاربران غیرمجاز چندین درخواست echo ICMP را در یک دوره کوتاه ارسال میکنند. هر درخواست ICMP حاوی یک شناسه منحصر به فرد و محموله داده است که گیرنده را ملزم میکند به طور منحصر به فرد پاسخ دهد. سرور گیرنده سعی میکند به هر درخواست غیرمجاز پاسخ دهد که پاسخ به منابع مجاز را به تأخیر میاندازد یا کند میکند.برای محافظت در برابر حمله ICMP ping flood، باید مطمئن شوید که دستگاههای شبکه شما طوری پیکربندی شدهاند که مقدار ترافیک ICMP را که مایل به پذیرش آن هستند محدود کنند. همچنین نظارت بر شبکه خود برای فعالیت غیرمجاز و اعمال اقدامات امنیتی لازم مانند فایروالها و سیستمهای تشخیص نفوذ (IDS) مهم است.