Mam system bezpieczeństwa, a ustawienie sieciowe pozwala tylko na trzycyfrowy adres IP. Nie mogę tego ustawić 192.168.2.100
, zamiast tego muszę użyć 192.168.002.100
.
Czy te dwa adresy IP są różne? Czy muszę ustawić, aby sieć LAN mojego routera była cała 192.168.xxx.xxx
, aby działała poprawnie? Nie mogę znaleźć żadnych solidnych informacji na ten temat.
networking
ip
Brock Vond
źródło
źródło
192.168.2.100
, ale twierdzi), to proponuję porozmawiać z dostawcą (Jak wiarygodne jest system zabezpieczenia, jeżeli jego sprawdzania poprawności danych wejściowych jest taki gówniany?)0
s” lub bez nich , ale natknąłem się na niektóre aplikacje nieobsługujące adresu IP, który nie zawierał 3 cyfr w każdym oktecie.192.168.002.100
twoje narzędzie reprezentuje0xc0a80264
/3232236132
/192.168.2.100
, to jest to samo.Odpowiedzi:
To zależy od narzędzia.
W większości przypadków oba będą takie same, ale nie zawsze.
Na przykład, jeśli użyjesz 3-cyfrowej liczby rozpoczynającej się od zera (lub dwucyfrowej liczby rozpoczynającej się od zera, dzięki @ Dietrich-Epp), to ping przyjmie, że liczby są ósemkowe.
źródło
inet_addr()
Zakładając, że całe oprogramowanie, którego używasz, używa poprawnie dziesiętnych kropek i podsieci, tak, są one takie same.
Na przykład 192.168.0.1 jest tylko przyjaznym zapisem dziesiętnym kropkowej wartości binarnej 11000000.10101000.00000000.00000001.
Bez względu na to, czy wpiszesz go jako 192.168.0.1, czy 192.168.000.001, oba są równe 11000000.10101000.00000000.00000001
źródło
C0A80001
3232235521
Zależy to od narzędzi lub funkcji używanych przez dany program do analizowania podanego adresu. Zarówno Microsoft, Linux, jak i inne systemy operacyjne używają procedury zgodnej z POSIX
inet_addr()
do analizowania adresów.W związku z tym twój system może wymagać trzycyfrowej notacji dziesiętnej dla każdego oktetu, ale nie jest to uniwersalne i należy zadbać o to, aby wprowadzić prawidłowy adres IP.
Oczywiście działają tylko prawidłowe liczby dla każdego typu. Poza zakresem Liczby ósemkowe, szesnastkowe lub dziesiętne również zawiodą lub spowodują problemy. Liczby ósemkowe 088, Heks 0xGG lub Dziesiętny 280 są niepoprawnymi przykładami.
źródło
Jak zauważyli Lightness Races in Orbit i inni,
INET(3)
Strona człowiek opisanoinet_addr
iinet_aton
standardowe funkcje używane do przetwarzania „zapis IPv4 numery-kropkową na postać binarną”. To mówiTak więc technicznie NIE , adres IP z zerami wiodącymi nie jest (zawsze) taki sam jak adres bez zer wiodących. W twoim przypadku jednak,
192.168.2.100
i192.168.002.100
są identyczne, ponieważ002 == 2
.Każdy interfejs użytkownika, który wymaga, aby każdy komponent miał dokładnie trzy znaki, z niepoprawnie wymaganymi zerami wiodącymi, jest uszkodzony.
źródło
Niektóre implementacje uważają oktety z wiodącymi zerami jako dziesiętne, inne implementacje uważają je za ósemkowe. Dopóki oktet mieści się w zakresie od 0 do 7, nie ma to znaczenia. Na przykład
192.168.002.100
interpretowano by to tak, jak192.168.2.100
w obu implementacjach.Ale jeśli było wpisać adres jak
192.168.010.100
mogłoby to być interpretowane jako albo192.168.10.100
czy192.168.8.100
w zależności od implementacji. Nie jest również mało prawdopodobne, że istnieją implementacje, które uznają zera wiodące za błąd składniowy. Ponadto istnieją scenariusze, w których oprogramowanie może nalegać na konieczność użycia reprezentacji kanonicznej z tego czy innego powodu. Z tych wszystkich powodów zalecamy unikanie początkowych zer podczas pisania adresu IP.Jeśli piszesz oprogramowanie, które musi analizować adres IP, zalecam przyjmowanie zer wiodących, ale gdy to nastąpi, wypisz ostrzeżenie do odpowiedniej lokalizacji.
Nieznacznie powiązane są implementacje, które pozwalają mieć mniej niż cztery komponenty w notacji kropkowanej. Gdy jest mniej niż cztery komponenty, ostatni komponent ma więcej niż 8 bitów, a wcześniejsze komponenty mają dokładnie 8 bitów. Na przykład
192.168.612
faktycznie byłby prawidłowym sposobem pisania192.168.2.100
. Jednak ponowne użycie tej notacji nie jest zalecane.źródło
Mała wskazówka: w niektórych przypadkach ważne jest stosowanie zerowych prefiksów w adresach IP. Przykładem jest Apache .htaccess odmawiaj reguł.
Jeśli użyjesz czegoś takiego
Apache jest tak głupi, że blokuje również dostęp z następujących adresów IP:
111.22.33.22
11.22.33.221
211,22.33.221
i ogólnie każdy adres IP, który zawiera 11.22.33.22
Aby mieć pewność, że nie zablokujesz adresów IP, których nie chciałeś zablokować, powinieneś użyć:
aby mieć pewność, że Apache zablokuje dostęp tylko z adresu IP 11.22.33.22.
źródło
bądź ostrożny z tym. to POWINNY być takie same, ale to NIE !
nie mogłem znaleźć wytłumaczenia tego, ale z całą pewnością mogę powiedzieć, że w systemach Windows i Linux adresy IP z wiodącymi zerami i bez nich NIE są takie same! może ma to związek z konwersją z innych formatów, takich jak hex lub binarny.
z mojego doświadczenia z Windows i Linuksem to nie zależy od narzędzia, ale wydaje się, że zależy od systemu operacyjnego, ponieważ mam problem z używaniem ips, takich jak 10.08.03.100:
linux / debian7 / 8: takie same wyniki z narzędziami „ping” i „snmpget”
Windows7 / 8/10: te same wyniki z narzędziami „ping” i „telnet”
(przepraszam, nie mam pod ręką angielskiego okna, błąd informuje, że nie można znaleźć hosta)
źródło
Dwa adresy IP są różne.
Jednak:
Jeśli to brzmi myląco, to dlatego, że nie ma standardu określającego sposób zapisywania adresów IP, więc różni programiści w różnych momentach historii i na różnych platformach mieli różne pomysły na to, co należy zrobić.
Adresy IP są w rzeczywistości binarne, a ludzie używają kropkowanej notacji dziesiętnej do reprezentowania adresów IP. Oprogramowanie może przyjmować różne podstawy liczbowe (tj. Dziesiętne, ósemkowe, szesnastkowe) i interpretować różne rzeczy na podstawie sposobu pisania. Jak piszesz, może powiedzieć oprogramowaniu, w jakiej bazie piszesz.
Radzę: nie używaj zer wiodących, jeśli chcesz użyć kropkowanej notacji dziesiętnej. Niektóre programy uznają tę flagę za oznaczającą liczbę ósemkową. Jeśli zamierzasz wprowadzić liczbę dziesiętną, nie uzyskasz oczekiwanych wyników.
Zadałem podobne pytanie i otrzymałem kilka dobrych odpowiedzi, więc jeśli chcesz przeczytać więcej na temat RFC, znajdziesz tam dobre informacje.
źródło
Powinno działać tak czy inaczej. Możesz nawet pingować przy użyciu trzycyfrowych liczb, a komputer zrozumie adres IP.
Edycja : Windows odczyta go jako ósemkowy, działa to tylko w systemie Linux.
źródło
Zero wiodące jest bez znaczenia. Oktety są liczbami (podstawa-10) 0-255, a nie ciągami.
Ponieważ nie jestem do końca pewien, o co pytasz (lub czy wiesz jakie pytanie zadać :)): To powiedziawszy, IP # musi znajdować się w tej samej podsieci co twoja sieć. Jeśli wybierzesz 11.12.13.14 w ramach maski podsieci 192.168.0.0, to urządzenie nie będzie mogło komunikować się z tą podsiecią ani z niej korzystać.
źródło
inet_addr
a setki tysięcy narzędzi, które polegają na nim podczas analizy adresów, przyjmują początkowe 0, co oznacza, że bajt jest podany w notacji base-8. To prawie „bez znaczenia”.