help: struktura podataka za subnetting
Planiram da napravim jendostavan alat za planiranje IP mreze. Lupam glavu kako da resim problem hijerarhijskih veza izmedju podmreza ali izgleda nikako da ubodem pravi pristup.
Za svaku podmrezu imam predivdjene sledece podatke: NET_IP - ip adresa mreze NET_MASK - maska mreze DESCRIPTION - opis START_IP - prvi rasplozivi IP u mrezi END_IP - poslednji raspolozivi IP u mrezi BROADCAST_IP - broadcast adresa MAX_HOSTS - maksimalan broj IP- adresa u mrezi MAX_SUBNETS - maksimalan broj podmreza u mrezi Svaka podmreza moze da bude podmreza neke druge mreze. Ono sto mi treba to je da mogu da ih sortiram po hijerarhiji, da razlikujem koja je mreza podmreza druge mreze, i da mogu da proverim da li se mreze preklapaju. Da li se neko bavio slicnim problemom? |
Za tako neshto morash da znash i rute da bi znao da li je neka mreza podmreza neke druge mreze :) (uh, kako ovo dobro zvuci)
Dalje sve mrezne opsege racunash uz pomoc osnovne ip adrese i njihove podmaske (NETMASK). Verovatno si negde video ovakav zapis: 10.10.10.0/24 U tom opsegu imash 255 adresa - 1 za broadcast (10.10.10.255) - 1 base network (10.10.10.0). Ali ako imash 10.10.10.15/6 to je vec druga prica. Evo ti link da se ne ponavljam: Racunanje Subnet Maski Pozdrav. |
Znam ja to sve :) Napisao sam svoj kalkulator koji racuna sve to na osnovu IP mreze i maske.
Rute nisu potrebne. Da li je neka mreza podmreza neke duge moze lako da se utvrdi preko mreznih maski i adresa. Problem je kako resiti zapis hijerarhije kada ima vise nivoa podmreza. |
Da proverim da li sam dobro shvatio sta zelis.
Improvizovana hijerarhija: Kôd:
`- 10.0.0.0/24 [subnet] Jesam li pogodio? Da ne predlazem mogucu organizaciju ako nisam :) |
Ako sam dobro shvatio, tebi treba struktura stabla!?!?
|
Ako (pod)mreže ne mogu da se samo delimično poklapaju ima strukturu stabla.
Stablo može da se konstruiše na osnovu IP adrese i maske mreže, ali je verovatno zgodno da se to ne radi stalno, već da se doda i jedno klasično polje sa spoljnim ključem na mrežu - roditelja. |
Zextra, stavar stoji otprilike tako kako si napisao samo si upotrebio pogresnu kombinaciju adrese i maske (10.0.0.1/24 u stari predstavlja mrezu 10.0.0.0/24 kao i sve ostale adrese iz tvog primera). Recimo da jedna mreza moze ovako da izgleda:
Kôd:
10.0.0.0/16 Kvaka je naravno u tome sto bih hteo da to ubacim u relacionu bazu, koja nema hijerarhijsku strukuru.... Redosled nije tesko dobiti, posto je svaki IP u stvari 32-bitni broj, dovoljno je da tabelu sortiram po IP i masci. Problem je utvrditi hijerarhijsku zavisnost jer je ona sakrivena u binarnom AND izmedju IP broja i maske te je: (10.0.16.0 AND /21) = (10.0.16.185 AND /21) gde se IP brojevi i maske zamenjuju odgovarajucim 32bitnim celobrojnim vrednostima, a AND je binarna operacija. U opstem slucaju, ako je izraz (M AND /MM) = (N AND /MM1) tacan, to znaci da cvor N pripada mrezi M/MM gde je N IP adresa cvora, M ip adresa mreze a /MM maska mreze. SQL, cini mi se, ne zna da radi binarne operacije. Kad bih mogao da uradim binarno AND u SELECT to bi mi resilo problem. |
Off Topic: Ovo izgleda kao neki sumanuti ascii art... :D kad napravis to programce daj ga da si napravim par postera :1042: |
Odlicno sto si se javio. Posto ionako mislim da ovo postavim kao public servis, taman da urais neki lep graficki interfejs. Taman da ne moram da brinem oko toga, s obzirom da je i to zaguljen posao :)
|
Citat:
Vidi, ako bi zapisao IP kao CHAR(32) gde je svaki karakter nula ili jedinica, a polje bits ti sadrži broj prvih zajedničkih bitova (ono "/21" u tvom primeru) mogao bi da radiš nešto kao: (sve podmreže date mreže) Kôd:
SELECT * FROM Mreze podmreze |
Vreme je GMT +2. Trenutno vreme je 19:10. |
Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.