1-Mauvzu: Server va mijoz tushunchalari Reja: Mijoz-server tushunchasi Mijoz-server xarakteristikasi


-Mauvzu: Inet_pton, inet_ntop funksiyalari



Download 0,81 Mb.
Pdf ko'rish
bet20/29
Sana13.06.2022
Hajmi0,81 Mb.
#665734
1   ...   16   17   18   19   20   21   22   23   ...   29
Bog'liq
2 5438208446832840386

 


14-Mauvzu: Inet_pton, inet_ntop funksiyalari 
Reja: 
1. Php -da IPv4 bilan ishlash 
2. IPv4 va IPv6 tekshiruvi 
3. IPv6 konvertatsiyasi 
 
Php -da IPv4 bilan ishlash juda oddiy edi, buning uchun ikkita ip2long va long2ip 
funktsiyalari mavjud edi. Bu funktsiyalar IP -manzilni oddiy raqamga va aksincha tarjima qilishga 
imkon berdi. Afsuski, IPv6 -da bu mumkin emas. 
IPv4 manzili 32 bit bo'lib, ko'pchilik operatsion tizimlar va dasturlash tillari mahalliy 
qo'llab -quvvatlaydi. 32 va undan ko'p bitli platformalar 0 dan 4 294 967 295(yoki 2 32 , bu 
tarmoqdagi IP -manzillarning maksimal soni) gacha bo'lgan raqamlarni qo'llab -quvvatlaydi . Bu 
manzilni raqamga aylantirish imkonini berdi, bu esa o'z navbatida xotira va tizim resurslaridan 
tejamli foydalanish imkonini berdi. 
IPv6 - bu boshqa hikoya. Hozirgi vaqtda ko'pchilik kompyuterlar 64 bitli arxitekturadan 
foydalanadi va 64 bitli OS bilan ishlaydi. 64 bitli platformada ruxsat berilgan eng katta 
raqamlar 18 446 744 073 709 551 616(yoki 2 64 ). Ammo IPv6 o'lchovsiz ko'proq manzillarga 
ruxsat beradi - 340 282 366 920 938 463 463 374 607 431 770 000 000(yoki 2,128 ). Bu juda katta 
raqam, va, afsuski, bu bilan ishlashda muammolarga olib keladi. 
Ko'p sonli bitlar bilan ishlash hatto zamonaviy dasturlash tillari uchun ham qiyin va bunday 
raqamlardagi xotira muammolari tufayli IPv6 -ni qo'llab -quvvatlash algoritmlari odatda noto'g'ri 
bo'ladi. 
Muallifdan eslatma: E'tibor bering: IPv6 -da translyatsiya manzillari yo'q. IPv4 -da 
diapazonning oxirgi manzili translyatsiya uchun ajratilgan. IPv6 -da translyatsiya kontseptsiyasi 
yo'q, aksincha u barcha tugunlarga mahalliy havolada "multicast" dan foydalanadi ff02::1. 
IPv4 va IPv6 tekshiruvi. 
Bu mumkin bo'lgan eng oddiy vazifa. Ba'zi dasturchilar strpos( $ip , ":")IPv6 ni aniqlash 
va substr_count( $ip , ".") == 3IPv4 manzillarini tekshirish uchun konstruktsiyalardan 
foydalanadilar . 
Ammo bu tubdan noto'g'ri . Birinchidan, bunday tekshiruvlar xavfli emas, chunki ular 
osonlikcha chetlab o'tiladi. Va ikkinchidan, ular shunchaki noaniq. Masalan, bu funktsiyalar IPv4 
formatida yozilgan IPv6 manzillarini, masalan, u ::127.0.0.1yoki bu kabi, to'g'ri ishlay 
olmaydi ::ffff:10.10.1.1. 
Php filter_varkiruvchi ma'lumotlarni tekshiradigan funktsiyaga ega. Bizning holatda, IP -
manzilni tekshirish uchun filtrdan foydalanish kerak FILTER_VALIDATE_IP. Va versiyani 
aniqlash uchun - bayroqlar FILTER_FLAG_IPV4yoki FILTER_FLAG_IPV6. Masalan: 
PHP 









if( filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) ){ 
// Это валидный IPv4 адрес 

if( filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) ){ 
// Это валидный IPv6 адрес 

Bu tekshirishning to'g'ri va xavfsiz usuli. IP -manzillarni shu tarzda tekshirishga arziydi, 
agar siz o'z velosipedingizni yasashni xohlamasangiz. Aytgancha, filter_vartasdiqlash uchun 
elektron pochta yoki URL kabi boshqa ko'plab ma'lumotlarni ishlatish yaxshi amaliyotdir . 
IPv6 konvertatsiyasi 
PHP 5.1 ikki foydali vazifalarni qo'shadi inet_ptonva inet_ntop. Bu funktsiyalar IP-
manzilning odam o'qiy oladigan tasvirini in_addr-paketli tasvirga aylantiradi va aksincha. Ijro 
natijasi inet_ptonfaqat ikkilik bo'lmaganligi unpacksababli, kelajakda bitli operatsiyalar bilan 
ishlash uchun funksiyadan foydalanish kerak . 
Ikkala funktsiya ham IPv4 va IPv6 ni qo'llab -quvvatlaydi. Faqat farq - natijani qanday 
ochish kerak. Masalan, IPv6 uchun siz formatni A16, IPv4 uchun esa ishlatishingiz kerak A4. 
Buni misol bilan ko'rib chiqaylik: 
PHP 








// Случайные Ip адреса для примера 
$ip4= "10.22.99.129"; 
$ip6= "fe80:1:2:3:a:bad:1dea:dad"; 
// Пример с ip2long
var_dump( ip2long($ip4) ); // int(169239425) 
var_dump( ip2long($ip6) ); // bool(false) 



10 
11 
12 
13 
// Примре с inet_pton 
var_dump( inet_pton( $ip4 ) ); // string(4) " c" 
var_dump( inet_pton( $ip6 ) ); // string(16) "� �" 
Ko'rib turganingizdek, u inet_ptonIPv4 va IPv6 ni qo'llab -quvvatlaydi. Keyingi qadam, 
qadoqlangan natijani ochilmagan qiymatga aylantirishdir: 
PHP 







// Распаковываем и упаковываем 
$_u4 = current( unpack( "A4", inet_pton( $ip4 ) ) ); 
var_dump( inet_ntop( pack( "A4", $_u4 ) ) ); // string(12) "10.22.99.129" 
$_u6 = current( unpack( "A16", inet_pton( $ip6 ) ) ); 
var_dump( 
inet_ntop( 
pack( 
"A16", 
$_u6 


); 
//string(25) 
"fe80:1:2:3:a:bad:1dea:dad" 
Funksiya currentqatorning birinchi elementini qaytaradi$array[0] 
Ochish va qadoqlashdan keyin ko'rib turganingizdek, biz avvalgi IP -manzilni ko'ramiz. Bu 
shuni ko'rsatadiki, bu jarayonda ma'lumotlar yo'qolmaydi. 
Tayyor funktsiyalar 
Biz DRY yondashuvining ulkan tarafdorimiz. Dasturlashda DRY yondashuvi, o'zingizni 
takrorlamang. Tayyor funktsiyalar, sinflar va boshqalardan foydalanish QURUQ mafkurasining 
yaxshi namunasidir. Natijada, biz sizning kodingizni soddalashtirish uchun 
tayyor funktsiyalar 
to'plamini
 tayyorladik . 
Funktsiya dtr_ptonyuqorida tavsiflangan barcha mantiqni amalga oshiradi. U kirish 
qiymatini tekshiradi, o'zgartirilgan qiymatni qaytaradi yoki xato bo'lsa, noto'g'ri / istisno: 
PHP 











10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
/** 
* dtr_pton 

* Converts a printable IP into an unpacked binary string 

* @author Mike Mackintosh - mike@bakeryphp.com 
* @param string $ip 
* @return string $bin 
*/ 
function dtr_pton( $ip ){ 
if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)){ 
return current( unpack( "A4", inet_pton( $ip ) ) ); 

elseif(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)){ 
return current( unpack( "A16", inet_pton( $ip ) ) ); 

throw new \Exception("Please supply a valid IPv4 or IPv6 address"); 




Download 0,81 Mb.

Do'stlaringiz bilan baham:
1   ...   16   17   18   19   20   21   22   23   ...   29




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish