Czy miejscem docelowym pakietu IP jest kiedykolwiek adres IP podsieci?
Tak. Jest to prawidłowy adres IP, więc można go użyć.
Jeśli tak, w jakich przypadkach i dlaczego?
Jest to po prostu jeden z 255 użytecznych adresów IP w / 24
Jeśli nie, to dlaczego nie zwolnić tego adresu dla dowolnego hosta?
Jeśli masz starożytny sprzęt, musisz sprawdzić, czy używa pierwszego czy ostatniego adresu jako adresu sieciowego. (.0 lub .255 dla sieci z maską FF.FF.FF.00)
To sprawia, że dobrym nawykiem jest pomijanie tego adresu IP. A nawyki nabyte dawno temu trudno zignorować.
A ludzie, którzy nie znają tła, nie używają go „, ponieważ inni też go nie używają, więc korzystanie z niego musi być błędne” lub ponieważ nie zdają sobie sprawy, że „0” może być pierwszą liczbą.
[Edytuj] Grezzo właśnie przetestował to na Windows XP, w którym GUI sieci Windows „pomocnie” zapobiegał temu ustawieniu. Windows 7 ma takie samo zachowanie. Następnie wypróbowałem to na hoście innym niż Windows, gdzie to po prostu działa. Jeśli używasz systemu Windows, być może będziesz musiał ręcznie skonfigurować sieć za pomocą IPconfig, aby ustawić ją na wszystkie zera.
[Edytuj 2]
Im dłużej z tym pracuję, tym bardziej się mylę.
Rfc4632 - Bezklasowy routing między domenami
nie wydaje się go zabraniać, ale nie pozwala na to wprost.
Ten post ServerFault wspomina: „Z przyczyn historycznych wiele systemów operacyjnych traktuje pierwszy adres jako transmisję. Na przykład pingowanie xxx0 z OS X, Linux i Solaris w mojej sieci lokalnej (/ 24) otrzymuje odpowiedzi. Windows nie pozwala ci pingować pierwszy adres domyślnie, ale możesz go włączyć za pomocą metody WIP SetIPUseZeroBroadcast. Zastanawiam się, czy nie możesz użyć .0 jako adresu hosta w sieci z wszystkimi systemami Windows. ” .
To to samo pytanie, ale nie odpowiedź.
Adres sieciowy jest również używany w tablicach routingu. Ale nie rozumiem, dlaczego to nie zadziała z tego powodu. Ta sama notacja w tablicach routingu prowadziłaby do właściwej sieci. Gdy znajdzie się w odpowiedniej sieci, dotrze do komputera z IP 0.
(Wszystko to dla 192.168.1 / 24.
Jeśli użyjesz 192.168.0 / 23, wówczas 192.168.1.0 będzie prawidłową i bezpieczną wartością w środku zakresu)
[Edytuj 3]
Jeszcze jeden link do tego samego pytania. Wydaje się to dość popularne na wymianie stosu:
/superuser/379451/why-can-a-network-address-not-be-a-valid-host-address
I jedna myśl:
Docelowy_IP jest prawdopodobnie AND z masztem sieciowym (szybka operacja sprzętowa), zanim zostanie porównany z wpisami w tablicach routingu. Ale:
(Pół-losowy adres IP) 192.168.0.42 I 255.255.255.0 da 192.168.0.0
Ale 192.168.0.0 I 255.255.255.0 również da 192.168.0.0
[Edytuj 4 - Długo po napisaniu tej odpowiedzi - może być konieczne przepisanie całego postu z powodu tych nowych informacji ]
RFC923 stwierdza na stronie 3, że:
In certain contexts, it is useful to have fixed addresses with
functional significance rather than as identifiers of specific
hosts. When such usage is called for, the address zero is to be
interpreted as meaning "this", as in "this network". The address
of all ones are to be interpreted as meaning "all", as in "all
hosts". For example, the address 128.9.255.255 could be
interpreted as meaning all hosts on the network 128.9. Or, the
address 0.0.0.37 could be interpreted as meaning host 37 on this
network.
Cytując @ylearn na naszej stronie poświęconej inżynierii sieci
Wydaje mi się, że pierwsza dokumentacja tego pochodzi z RFC950, który odwołuje się do RFC943 (który zastąpił RFC923 powyżej, ale używa tego samego języka dla specjalnych adresów):
It is useful to preserve and extend the interpretation of these
special addresses in subnetted networks. This means the values
of all zeros and all ones in the subnet field should not be
assigned to actual (physical) subnets.
ifconfig
nie narzeka, gdy ustawisz adres hosta 24-net na 0 lub 255. Po prostu spróbuj go użyć.