Mauvzu: Server va mijoz tushunchalari Reja



Download 371,19 Kb.
bet17/25
Sana22.07.2022
Hajmi371,19 Kb.
#839239
1   ...   13   14   15   16   17   18   19   20   ...   25
Bog'liq
1-Mauvzu Server va mijoz tushunchalari Reja Mijoz-server tushu (1)

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




1
2
3
4
5
6
7

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




1
2
3
4
5
6
7
8

// Случайные 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)

9
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



1
2
3
4
5
6
7

// Распаковываем и упаковываем
$_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




1
2
3
4
5
6
7
8
9
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");
}


  1. Download 371,19 Kb.

    Do'stlaringiz bilan baham:
1   ...   13   14   15   16   17   18   19   20   ...   25




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