Szybki sposób na obliczenie adresu IP podsieci i adresu IP emisji

0

Mam problem ze znalezieniem szybkiej / skutecznej metody określania prawidłowego zakresu adresów IP na podstawie danego adresu IP routera i maski sieci

Wiem, jak obliczyć adres IP podsieci i adres IP emisji, konwertując cały adres IP i maskę sieci na dane binarne i wykonując bitowe operacje AND / OR, ale takie podejście zajmuje dużo czasu i łatwo doprowadzi do błędów ...

f855a864
źródło

Odpowiedzi:

1

Istnieją różne strony internetowe i aplikacje, które wykonają obliczenia za Ciebie, takie jak http://www.subnet-calculator.com/cidr.php .

W przeciwnym razie użyj maski sieci, aby obliczyć rozmiar podsieci (2 do potęgi liczby zerowych bitów w masce sieci). Znajdź najwyższy adres IP, który jest dokładnie wielokrotnością wielkości podsieci, ale jest niższy niż adres IP routera. Ten adres IP to adres sieci, a adres IP plus rozmiar podsieci minus 1 to adres rozgłoszeniowy.

Mike Scott
źródło
Czy to adres rozgłoszeniowy: 87.35.15.7/29? jeśli użyję twojej sztuczki. następnie otrzymuję adres sieciowy: 80.32.8.0 i adres emisji 87.39.15.7, co oznacza, że ​​87.35.15.7/29 nie jest adresem emisji, ale tak jest. A może gdzieś się mylę? Czy robisz tę sztuczkę tylko na ostatnim 1 bajcie.?
valer
@valer Popełniłeś błąd. A / 29 ma trzy bity zerowe w masce sieci, więc rozmiar podsieci wynosi 8 adresów, 2 ^ 3. Adres sieci wynosi zatem 87.35.15.0, a adres rozgłoszeniowy to 87.35.15.7.
Mike Scott
@valer Pamiętaj, że adres IPV4 to pojedynczy 32-bitowy numer, który jest tradycyjnie zapisany w kropkowane kwadraty, aby ułatwić zapamiętanie. To nie znaczy, że tak naprawdę są to cztery różne liczby 8-bitowe.
Mike Scott,
Dzięki, widzę teraz, ale czy to nie stanie się trudniejsze, jeśli mam coś takiego 43.25.45.80/22 Widzę tutaj, że muszę znaleźć wielokrotności 2 ^ 10 i robi się bałagan? Ale to działa, jeśli mamy / 24 lub większy (mam na myśli szybszy)
waler
@valer Jeśli jest to / 22, to ponieważ jest wielokrotnością 1024, trzeci quad jest wielokrotnością czterech. Więc to jest łatwe. Adres sieciowy to 43.25.44.0.
Mike Scott,
1

Jeśli coś wymaga czasu, napisz to.

Python ma ipaddressmoduł:

$ python
Python 3.4.2 (default, Oct  8 2014, 13:44:52) 
>>> import ipaddress
>>> x = ipaddress.IPv6Interface("2001:470:709a:107::1a2b:3c/64")
>>> x.network
IPv6Network('2001:470:709a:107::/64')
>>> y = ipaddress.IPv4Interface("194.219.181.195/26")
>>> y.network
IPv4Network('194.219.181.192/26')
>>> y.network.network_address
IPv4Address('194.219.181.192')
>>> y.network.broadcast_address
IPv4Address('194.219.181.255')

Co spowodowałoby:

#!/usr/bin/env python
import ipaddress
import sys

for arg in sys.argv[1:]:
    addr = ipaddress.ip_interface(arg)
    print("address =", addr)
    print("network =", addr.network)
    if addr.version == 4:
        print("netmask =", addr.netmask)
        print("broadcast =", addr.network.broadcast_address)
    print()
grawitacja
źródło
Dzięki, ale tak naprawdę nie wolno mi używać żadnego narzędzia, na egzaminach muszę je obliczać samodzielnie i mam tendencję do popełniania błędów w obliczeniach, więc ...
f855a864