![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 2.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Jako, że myślę przyszłościowo to zastanawiam się nad ipv6 i napotkałem dość poważny problem. Mianowicie zastanawiam się jak przechowywać ipv6 w tabeli mysql. Zastanawiałem się nad 2-bigint, wtedy ipv6 zajmowało by drugą kolumnę biginta i łatwo było by rozróżnić jakie ip ma użytkownik, ale po dłuższym zastanowieniu jest to bardzo nie wygodne rozwiązanie. Drugi pomysł to przechowywanie w varchear, to chyba nie zbyt wydajny sposób, a trzeci to przechowywanie w postaci binarnej. Według mnie to najlepsze rozwiązanie. Zawadza mi tylko jeszcze jeden problem, że połowa adresów będzie ipv4 a druga połowa ipv6. Nie da się przekonwertować ipv4 użytkownika na wersje ipv6 i dopiero uaktualniać w bazie danych ?
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Ależ da się konwerować. Adresy ipv4 można przetworzyć do ipv6 poprzez dołożenie do niego wzorca.
ipv6 jest 128-bitowe o postaci 8 bloków 16-bitowych lub 4 bloków 32-bitowych (a więc można go zapisać jako 4-krotność starego ipv4) ipv4 jest 32-bitowe o postaci 4 bloków 8-bitowych Wzorzec pozwalający na to aby ipv4 było identyfikowane przez ipv6 to ::ffff:(ipv4), a więc (ipv6) = 0.0.0.0 : 0.0.0.0 : 0.0.255.255 : (ipv4) I tak też rób... ipv4 zapisuj z takim dodatkiem a urządzenia ipv6 także go rozpoznają. Od biedy nawet jeśli rozpoznasz ów wzorzec, to będziesz wiedział, że masz to czynienia z ipv4 ukrytym jako ipv6. W bazie możesz to od biedy zapisać jako jako złożenie kilku bloków. Przypuśćmy 3 kolumny gdzie domyślnie są: 0, 0, inet_aton(0.0.255.255) i jedna przechowująca adres jako ipv4 też w inet_aton. Dzięki temu łatwo odseparujesz po 3 kolumnie co jest, a co nie jest ipv6. Ipv4 będzie zawsze identyczna (IMG:style_emoticons/default/smile.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 10.10.2025 - 18:37 |