socket() tizim chaqirig‘i assemblyda
Bu qo‘llanmada socket()
tizim chaqirig‘ini noldan qanday yozish va tushunish haqida to‘liq ma'lumot beraman. Bu kod TCP socket yaratib, fayl deskriptorni qaytaradi.
socket() tizim chaqirig‘i nima ?
socket()
tizim chaqirig‘i tarmoq orqali ma'lumot almashish uchun yangi socket obyektini yaratadi. Bu socketga IP manzil, port va boshqa ma'lumotlar keyinchalik bog‘lanadi.
Socket yaratishda quyidagi uchta parametr kerak:
domain (oilasi) – IPv4, IPv6 yoki boshqa tarmoq turini ko‘rsatadi.
type (turi) – TCP yoki UDP protokolida ishlash turini bildiradi.
protocol – Standart protokol ishlatilganda bu qiymat
0
.
Tizim chaqiruviga oid ma'lumotlar
Linuxda socket()
tizim chaqirig‘i sys_socketcall
orqali amalga oshiriladi. Assemblyda socket yaratish uchun quyidagi qadamlarga amal qilinadi:
eax
registrigasys_socketcall
identifikatori (0x66
) yuklanadi.ebx
registrigasocket
funksiyasi kodi (1
) yuklanadi.ecx
registriga socket parametrlarining manzili yuklanadi.int 0x80
instruktsiyasi tizim chaqiruvini amalga oshiradi.
Agar tizim chaqiruvi muvaffaqiyatli bo‘lsa, socket fayl deskriptori (file descriptor
) eax
registrida qaytariladi. Xato bo‘lsa, eax
da manfiy qiymat bo‘ladi.
Assemblyda socket() tizim chaqirig‘i kodi
Bu kod IPv4 va TCP protokollari uchun socket yaratadi.
Tushuntirish
domain
(IPv4): Bu yerdaAF_INET
(2
) ishlatilgan, bu IPv4 tarmoq oilasini bildiradi.sock_type
(TCP): TCP uchunSOCK_STREAM
(1
) tipi ishlatiladi. Bu ishonchli, ulanishga asoslangan protokol.protocol
: Protokolni0
qilib belgilash TCP yoki UDP uchun standart protokolni ishlatadi.sys_socketcall
: Linuxdasocket()
tizim chaqirig‘isys_socketcall
orqali amalga oshiriladi. Bu tizim chaqiruvi turli socket operatsiyalarini bajaradi (socket
,bind
,listen
,accept
va boshqalar).Natijani tekshirish: Agar tizim chaqiruvi muvaffaqiyatli bo‘lsa,
eax
registrida socket fayl deskriptori qaytariladi. Agar xatolik yuz bersa,eax
da manfiy qiymat qaytadi.Socket yopish:
sys_close
tizim chaqiruvi orqali socket yopiladi. Fayl deskriptoriniebx
registriga yuklab,int 0x80
yordamida chaqiriladi.
Qo‘shimcha ma'lumotlar
Socket oilalari:
AF_INET
– IPv4 tarmoq uchun.AF_INET6
– IPv6 tarmoq uchun.AF_UNIX
– UNIX tizimida lokal socket uchun.
Socket turlari:
SOCK_STREAM
– TCP ulanishi uchun.SOCK_DGRAM
– UDP ulanishsiz ma'lumot uzatish uchun.
Socket operatsiyalari:
socket()
– Yangi socket yaratadi.bind()
– Socketga IP manzil va port bog‘laydi.listen()
– Keluvchi ulanishlarni kutadi (faqat TCP).accept()
– Ulanishni qabul qiladi.send()
varecv()
– Ma'lumotlarni yuborish va qabul qilish.close()
– Socketni yopadi.
Ushbu kod va tushuntirishlar orqali assemblyda socketni qanday yaratishni va undan qanday foydalanishni o‘rgandingiz. Socket yaratish tarmoq dasturlashning birinchi bosqichi bo‘lib, undan keyin boshqa socket operatsiyalarini bajarishingiz mumkin.Shu uchun etiborli bo'linglar iltimos har bir mavzuni yaxshiroq va tushunarliroq tarzda qilindi.Bundan ham oddiy roq qilolmaymiz.
Last updated