ICMP (Ping) va Tarmoq Diagnostikasi
ICMP (Internet Control Message Protocol) – tarmoqni diagnostika qilish va muammolarni aniqlash uchun ishlatiladigan protokol. Ping bu ICMP'ning eng mashhur ilovasi bo‘lib, tarmoq orqali boshqa qurilmaga Echo Request (ping so‘rovi) yuboradi va undan Echo Reply (ping javobi) oladi. Shu orqali tarmoq aloqasi va kechikish vaqtlari o‘lchanadi.
1 ICMP Paketining Tuzilishi
Type
8 bit
ICMP xabar turi (8 – Echo Request)
Code
8 bit
Xabar kodi (odatda 0)
Checksum
16 bit
Paketning to‘g‘riligini tekshiruvchi qiymat
Identifier
16 bit
Unikal identifikator
Sequence Number
16 bit
Paket tartib raqami
Data (Payload)
O‘zgaruvchan
Foydalanuvchi ma'lumotlari
ICMP Echo Request va Reply turlari
Echo Request
8
Ping so‘rovi
Echo Reply
0
Ping javobi
Destination Unreachable
3
Manzilga yetib borib bo‘lmaydi
Time Exceeded
11
Paketning amal qilish vaqti tugadi
2 ICMP Ping Tarmoq Diagnostikasi Bosqichlari
ICMP paket yaratish: ICMP protokoliga mos paket tuziladi (
Type = 8
,Code = 0
,Checksum
,Identifier
,Sequence Number
va ma'lumot).Socket yaratish: Raw socket (
SOCK_RAW
) yaratib, paket tarmoqqa yuboriladi.Echo Request yuborish: Yaratilgan ICMP paket manzilga yuboriladi.
Echo Reply qabul qilish: ICMP Echo Reply paket qabul qilinadi va tarmoqning ishlashi tekshiriladi.
3 Assemblyda ICMP Ping Implementatsiyasi
Socket Tizim Chaqiruvlari
socket() – Raw socket yaratadi.
sendto() – ICMP paketni yuboradi.
recvfrom() – Paketni qabul qiladi.
Assembly Kod (ICMP Ping)
Kodning tushuntirishi
Raw socket yaratish:
socket(AF_INET, SOCK_RAW, IPPROTO_ICMP)
chaqiruvini amalga oshirib, ICMP paketlarni yuborish va qabul qilish imkonini beruvchi socket yaratiladi.ICMP paketni yuborish:
sendto()
chaqiruvi orqali ICMP Echo Request paket yuboriladi. Paket tarkibida:Type
= 8 (Echo Request)Code
= 0Checksum
= 0 (bu misolda oddiylik uchun hisoblanmagan)
ICMP javobni qabul qilish:
recvfrom()
chaqiruvi orqali kelgan ICMP Echo Reply paket qabul qilinadi.Ma'lumotni ekranga chiqarish: Paket tarkibi ekranga chiqariladi (
sys_write
).
Ping va ICMP diagnostikasi uchun foydali buyruqlar
Linuxda ping orqali ICMP diagnostikasini o‘tkazish uchun buyruq:
Bu buyruq Google DNS serveriga ping so‘rov yuboradi va javob oladi.
ICMP Diagnostikasida Xatoliklar
ICMP paketlarining bloklanishi: Ba’zi tizimlarda ICMP paketlar firewall yoki xavfsizlik sozlamalari tufayli bloklanishi mumkin.
Xatolik kodlari: Agar manzilga yetib borib bo‘lmasa, Destination Unreachable (
Type = 3
) xabari yuboriladi.Root huquqlari: Raw socket yaratish uchun ko‘pincha root huquqlari talab qilinadi.
ICMP protokoli tarmoq diagnostikasi uchun muhim vositadir. Assembly tilida raw socket orqali ICMP paketlarni yuborish va qabul qilish mumkin. Bu jarayonda tizim chaqiruvlari (socket()
, sendto()
, recvfrom()
) va ICMP paketining strukturasini to‘g‘ri tuzish talab etiladi. Ping orqali tarmoq kechikishi va aloqani tekshirishda ushbu protokol keng qo‘llaniladi.
Last updated