ICMP — IP tarmog‘ida xato holatlari, diagnostika va xizmat ma’lumotlarini uzatadigan yordamchi protokol. Uning to‘liq nomi Internet Control Message Protocol hisoblanadi.
ICMP foydalanuvchi fayli, veb sahifa yoki boshqa ilova ma’lumotini tashish uchun mo‘ljallanmagan. U IP paketini yetkazish jarayonida yuz bergan holat haqida manba qurilmaga ma’lumot beradi. Router, server yoki boshqa tarmoq tuguni paketni uzata olmasa, sababni ICMP xabari orqali bildirishi mumkin.
IPv4 uchun ICMP va IPv6 uchun ICMPv6 mavjud. Ularning vazifalari o‘xshash bo‘lsa ham, xabar turlari va IPv6dagi roli ancha keng.
ICMPning IP bilan ishlashi
ICMP TCP yoki UDP ustida ishlamaydi. IPv4 headeridagi protocol maydonida ICMP uchun 1 qiymati ko‘rsatiladi. ICMP xabari IP paketining payload qismida tashiladi.
ICMP xabarining asosiy maydonlari:
- Type — xabar turi;
- Code — tur ichidagi aniq sabab;
- Checksum — xabar buzilmaganini tekshirish;
- turga xos qo‘shimcha maydonlar;
- xatoga sabab bo‘lgan paketning bir qismi.
Xato xabari manba qurilmaga qaysi ulanish yoki paket bilan muammo bo‘lganini aniqlash imkonini berish uchun asl IP header va transport sarlavhasining boshlang‘ich qismini o‘z ichiga oladi.
ICMP xabar guruhlari
ICMP xabarlarini umumiy tarzda ikki guruhga ajratish mumkin.
Xato xabarlari
Paketni yetkazish yoki qayta ishlashda muammo yuz berganini bildiradi.
Misollar:
- Destination Unreachable;
- Time Exceeded;
- Parameter Problem;
- Redirect;
- Fragmentation Needed.
Axborot xabarlari
Diagnostika yoki tarmoq holatini tekshirish uchun ishlatiladi.
Misollar:
- Echo Request;
- Echo Reply;
- ayrim tarixiy timestamp xabarlari.
Barcha ICMP turlari zamonaviy tarmoqlarda bir xil darajada ishlatilmaydi. Ayrim eski xabarlar xavfsizlik yoki amaliy ehtiyoj sababli o‘chirilgan bo‘lishi mumkin.
Echo Request va Echo Reply
ping dasturi odatda ICMP Echo Request yuboradi va Echo Reply javobini kutadi.
Ping orqali quyidagilar aniqlanadi:
- manzilga IP darajasida yetish mavjudligi;
- round-trip time;
- paket yo‘qotilishi;
- javob vaqtining o‘zgarishi;
- ma’lum hajmdagi paketning o‘tishi.
Oddiy jarayon:
Manba → ICMP Echo Request → Qabul qiluvchi
Manba ← ICMP Echo Reply ← Qabul qiluvchi
Echo Requestda identifier va sequence number bo‘lishi mumkin. Ular bir nechta ping jarayonini va paketlar tartibini ajratishga yordam beradi.
Ping javobi kelmasligi qurilma albatta o‘chiq degani emas. Quyidagi holatlar ham uchraydi:
- firewall ICMPni bloklagan;
- qurilma javobni rate limit qilgan;
- qaytish marshruti yo‘q;
- paket yo‘lda yo‘qolgan;
- NAT yoki security policy xabarni o‘tkazmagan;
- faqat Echo Reply taqiqlangan, boshqa xizmatlar esa ishlamoqda.
Destination Unreachable
Destination Unreachable paketi kerakli joyga yetkazib bo‘lmaganini bildiradi. Type umumiy guruhni, Code esa aniq sababni ko‘rsatadi.
IPv4da uchraydigan sabablar:
| Sabab | Mazmuni |
|---|---|
| Network unreachable | Manzil tarmog‘iga marshrut yo‘q |
| Host unreachable | Tarmoq bor, lekin hostga yetib bo‘lmaydi |
| Protocol unreachable | Destination host yuqori qatlam protokolini qabul qilmaydi |
| Port unreachable | UDP destination portida xizmat tinglamayapti |
| Fragmentation needed | Paket MTUdan katta va fragmentatsiyaga ruxsat yo‘q |
| Administratively prohibited | Firewall yoki siyosat trafikni rad qilgan |
TCP yopiq portga kelgan paketga ko‘pincha TCP RST bilan javob beradi. UDPda esa port yopiq bo‘lsa, ICMP Port Unreachable qaytishi mumkin.
Time Exceeded
IPv4 paketidagi TTL har routerda kamayadi. Qiymat nolga tushsa, router paketni tashlaydi va odatda ICMP Time Exceeded yuboradi.
Bu mexanizm routing loop ichidagi paketlarning cheksiz aylanishini to‘xtatadi.
Traceroute shu xususiyatdan foydalanadi:
- TTL 1 bo‘lgan paket yuboriladi.
- Birinchi router TTLni nolga tushiradi va ICMP Time Exceeded qaytaradi.
- Keyingi paket TTL 2 bilan yuboriladi.
- Jarayon manzilga yetguncha davom etadi.
Traceroute implementatsiyasi UDP, ICMP Echo yoki TCP paketlardan foydalanishi mumkin. Oxirgi tugundagi javob ishlatilgan usulga qarab farq qiladi.
Redirect
ICMP Redirect lokal router mijozga shu subnetda yaxshiroq gateway mavjudligini bildirishi uchun ishlatiladi.
Masalan, host paketni A routerga yubordi, A router esa uni xuddi shu lokal segmentdagi B routerga uzatdi. A hostga keyingi paketlarni bevosita Bga yuborish mumkinligini Redirect orqali bildirishi mumkin.
Zamonaviy boshqariladigan tarmoqlarda Redirect ko‘pincha cheklanadi. Soxta Redirect mijoz routingini o‘zgartirishi mumkin. Default gateway va routing siyosati odatda markaziy tarzda boshqariladi.
Path MTU Discovery
Yo‘ldagi barcha kanallarning MTU qiymati bir xil bo‘lmasligi mumkin. Path MTU Discovery manba qurilmaga yo‘l bo‘ylab eng kichik MTUni aniqlashga yordam beradi.
IPv4da DF biti o‘rnatilgan katta paket kichik MTUli linkka kelganda router uni fragmentlamaydi. Paket tashlanadi va ICMP Fragmentation Needed xabari qaytariladi. Manba keyingi paketlarni kichraytiradi.
ICMPning zarur xabarlarini to‘liq bloklash PMTUD black hole holatiga olib kelishi mumkin. Kichik paketlar o‘tadi, katta TCP segmentlar esa javobsiz qoladi. Natijada ayrim saytlar qisman ochilishi yoki ulanish ma’lum bosqichda to‘xtashi mumkin.
ICMP xato xabari yaratilmaydigan holatlar
ICMP xatolarining cheksiz zanjirini oldini olish uchun ayrim paketlarga javoban yangi ICMP xato xabari yaratilmaydi.
Odatda quyidagi holatlar cheklanadi:
- boshqa ICMP xato xabariga javoban;
- broadcast yoki multicast paketga javoban;
- IP fragmentning birinchi bo‘lmagan qismiga javoban;
- manba manzili yaroqsiz bo‘lgan paketga javoban.
Aniq qoidalar protokol versiyasi va implementatsiyaga bog‘liq.
ICMP va firewall
Barcha ICMP trafikni bloklash tarmoqni xavfsiz qilmaydi. Aksincha, diagnostika va MTU aniqlash mexanizmlarini buzishi mumkin.
Firewall siyosatida odatda:
- kerakli ICMP type va codelarga ruxsat beriladi;
- tashqi Echo Request rate limit qilinadi;
- ichki diagnostika uchun alohida qoida belgilanadi;
- Redirect kabi keraksiz turlar bloklanadi;
- xato xabarlari stateful ulanish bilan bog‘lanadi;
- ICMPv6ning zarur turlari saqlanadi.
ICMP xabari kichik bo‘lsa ham, ko‘p miqdorda yuborilsa CPU yoki kanalga yuk berishi mumkin. Router va serverlar rate limiting qo‘llashi mumkin.
ICMP asosidagi hujumlar
ICMP tarixan turli hujumlarda ishlatilgan.
- Ping flood — ko‘p Echo Request bilan resursni band qilish;
- Smurf attack — soxta manbali paketni broadcast tarmoqqa yuborib, ko‘p javobni qurbon manzilga yo‘naltirish;
- ICMP tunneling — ICMP payload ichida boshqa ma’lumotni yashirish;
- Soxta unreachable — ulanishni buzishga urinish;
- Tarmoq skaneri — faol host va yo‘llarni aniqlash.
Directed broadcastni cheklash, source validation, rate limit va anomaliya monitoringi bunday xavflarni kamaytiradi.
ICMPv6
ICMPv6 IPv6 tarmog‘ining asosiy qismi hisoblanadi. U faqat xato xabarlari uchun emas, manzil va qo‘shni qurilmalarni boshqarish uchun ham ishlatiladi.
ICMPv6 vazifalari:
- Echo Request va Echo Reply;
- Destination Unreachable;
- Packet Too Big;
- Time Exceeded;
- Parameter Problem;
- Router Solicitation va Router Advertisement;
- Neighbor Solicitation va Neighbor Advertisement;
- Redirect;
- Multicast Listener Discovery.
IPv6 routerlari paketni yo‘lda fragmentlamaydi. Paket juda katta bo‘lsa, ICMPv6 Packet Too Big xabari manbaga qaytadi. Shu sababli ICMPv6ni to‘liq bloklash IPv6 aloqasini jiddiy buzadi.
ICMPv6 IP headerida next header qiymati 58 bilan belgilanadi.
Diagnostika
ICMP xabarlarini tahlil qilishda quyidagilar ko‘riladi:
- type va code;
- xabarni yaratgan router yoki host;
- xatoga sabab bo‘lgan asl packet headeri;
- TTL yoki Hop Limit;
- round-trip time;
- javobning qaysi yo‘ldan qaytgani;
- firewall va rate limit;
- MTU;
- qaytish marshruti.
Packet capture orqali ICMP xabari ichidagi asl IP va transport header ko‘rilsa, muammo qaysi port yoki ulanishga tegishli ekani aniqlanadi.
Bog‘liq tushunchalar
IP, Ping, Traceroute, TTL, Hop Limit, MTU, Path MTU Discovery, Destination Unreachable, Echo Request, Echo Reply, ICMPv6, Firewall