DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   Programiranje (http://www.devprotalk.com/forumdisplay.php?f=23)
-   -   help: struktura podataka za subnetting (http://www.devprotalk.com/showthread.php?t=2315)

Pedja 24. 01. 2007. 14:46

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?

LiquidBrain 24. 01. 2007. 14:55

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.

Pedja 24. 01. 2007. 15:31

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.

zextra 24. 01. 2007. 22:11

Da proverim da li sam dobro shvatio sta zelis.

Improvizovana hijerarhija:
Kôd:

`- 10.0.0.0/24    [subnet]
 |
 +- 10.0.0.1/24    [host 10.0.0.1 sa netmaskom 255.255.255.0]
 +- 10.0.0.2/26    [host 10.0.0.2 sa netmaskom 255.255.255.192]
 +
 |
 +- 10.0.0.65/24
 +- 10.0.0.66/26
 |
 ~

Poenta ove sheme je da masine unutar /26 opsega koriste masine na pocetku opsega kao izlaz ka ostatku nadmreze. Naravno, ta /24 masina moze biti bilo gde u opsegu.

Jesam li pogodio? Da ne predlazem mogucu organizaciju ako nisam :)

LiquidBrain 25. 01. 2007. 07:21

Ako sam dobro shvatio, tebi treba struktura stabla!?!?

jablan 25. 01. 2007. 10:10

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.

Pedja 25. 01. 2007. 20:14

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
 +-10.0.0.0/24
 +-10.0.1.0/24
 +-10.0.2.0/24
 +-10.0.8.0/23
    +-10.0.8.0/24
    +-10.0.9.0/24
 +-10.0.10.0/24
 +-10.0.16.0/21
    +-10.0.16.0/22
      +-10.0.16.0/23
          +-10.0.16.0/24
            +-10.0.16.0/25
              +-10.0.16.0/26
                  +-10.0.16.0/27
                    +-10.0.16.0/28
                      +-10.0.16.0/29
                          +-10.0.16.0/30
                              +-10.0.16.0/32
                              +-10.0.16.1/32
                              +-10.0.16.2/32
                              +-10.0.16.3/32
                          +-10.0.16.4/30
                              +-10.0.16.4/32
                              +-10.0.16.5/32
                              +-10.0.16.6/32
                              +-10.0.16.7/32
                      +-10.0.16.8/29
                    +-10.0.16.16/28
                  +-10.0.32.0/27
              +-10.0.16.64/26
            +-10.0.16.128/25
          +-10.0.17.0/24
      +-10.0.18.0/23
    +-10.0.20.0/22

Ono sto mi je problem, to je da ako sada recimo u podatke dodam mrezu 10.0.17.0/30, onda treba da upadne kao podmreza od 10.0.17.0/24, a ako bih nakon toga dodao i mrezu 10.0.17.0/25, ona bi u hijerarhiji morala da se nadje izmedju 10.0.17.0/24 i 10.0.17.0/30.

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.

ivanhoe 25. 01. 2007. 23:32

Off Topic: Ovo izgleda kao neki sumanuti ascii art... :D
kad napravis to programce daj ga da si napravim par postera :1042:

Pedja 26. 01. 2007. 09:09

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 :)

jablan 26. 01. 2007. 10:27

Citat:

Originalno napisao Pedja
SQL, cini mi se, ne zna da radi binarne operacije. Kad bih mogao da uradim binarno AND u SELECT to bi mi resilo problem.

Koji tačno upit bi ti trebao, ja nikako da te skapiram.

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
INNER JOIN Mreze mreza ON
podmreze.ip LIKE SUBSTRING(mreza.ip, 1, mreza.bits) + '%'
WHERE
mreza.ip = @zadatiip



Vreme je GMT +2. Trenutno vreme je 16:32.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.