Ta inwersja jest bijectywna, więc nie mogę zrozumieć, do czego to służy.
Ta inwersja jest bijectywna, więc nie mogę zrozumieć, do czego to służy.
Odpowiedzi:
RFC 4291 zawiera instrukcje dotyczące tworzenia adresu EUI64:
Links or Nodes with IEEE 802 48-bit MACs
[EUI64] defines a method to create an IEEE EUI-64 identifier from an
IEEE 48-bit MAC identifier. This is to insert two octets, with
hexadecimal values of 0xFF and 0xFE (see the Note at the end of
appendix), in the middle of the 48-bit MAC (between the company_id
and vendor-supplied id). An example is the 48-bit IEEE MAC with
Global scope:
|0 1|1 3|3 4|
|0 5|6 1|2 7|
+----------------+----------------+----------------+
|cccccc0gcccccccc|ccccccccmmmmmmmm|mmmmmmmmmmmmmmmm|
+----------------+----------------+----------------+
where "c" is the bits of the assigned company_id, "0" is the value of
the universal/local bit to indicate Global scope, "g" is
individual/group bit, and "m" is the bits of the manufacturer-
selected extension identifier. The interface identifier would be of
the form:
|0 1|1 3|3 4|4 6|
|0 5|6 1|2 7|8 3|
+----------------+----------------+----------------+----------------+
|cccccc1gcccccccc|cccccccc11111111|11111110mmmmmmmm|mmmmmmmmmmmmmmmm|
+----------------+----------------+----------------+----------------+
A RFC 2373 zapewnia „dlaczego” za siódmym bitem:
The motivation for inverting the "u" bit when forming the interface
identifier is to make it easy for system administrators to hand
configure local scope identifiers when hardware tokens are not
available. This is expected to be case for serial links, tunnel end-
points, etc. The alternative would have been for these to be of the
form 0200:0:0:1, 0200:0:0:2, etc., instead of the much simpler ::1,
::2, etc.
Ale to trochę kęs. Mówiąc prościej… W architekturze adresu MAC siódmy bit oznacza, czy adres MAC został przypisany uniwersalnie czy lokalnie. Wartość 0 wskazuje, że adres jest administrowany uniwersalnie. Na przykład, gdy IANA przypisuje unikatowy identyfikator organizacyjny (OUI) dostawcy karty NIC, siódmym bitem będzie 0, co oznacza, że OUI został przypisany uniwersalnie. Jeśli użytkownik ręcznie zmieni swój adres MAC, ten siódmy bit zostanie ustawiony na 1, wskazując, że adres Ethernet był administrowany lokalnie .
Istnieje również więcej informacji na ten temat w PacketLife .
Odbywa się to w celu sklasyfikowania ręcznie przypisane adresy, takie jak prefix::1
, prefix::2
itd. Jako lokalny.
Załóżmy, że konfigurujesz sieć w prefiksie 2001:db8:dead:beef::/64
. Prawdopodobnie będziesz używać adresów IP opartych na MAC dla większości swoich węzłów. Jednak w przypadku niektórych węzłów, takich jak serwer DNS, serwer katalogów itp., Będziesz chciał użyć adresów, które są łatwiejsze do wpisania i łatwiejsze do zapamiętania niż adresy oparte na MAC. W przypadku serwera DNS prawdopodobnie będziesz chciał użyć
2001:db8:dead:beef::53
Zauważ, że bit U / L jest ustawiony na 0 - co z powodu inwersji bitu klasyfikuje identyfikator hosta jako lokalny.
EUI 64 oznacza tylko adres MAC (48 bitów), który ma
..:FF:FE:..
w środku, aby wypełnić wszystkie 64 bity. Stąd nazwa EUI-64. Dokładnie mówiąc , masz na myśli zmodyfikowany EUI-64, co oznacza EUI-64 w połączeniu z bitflipem siódmego bitu.
Siódmy bit został zmieniony, ponieważ w adresach MAC ten siódmy bit wskazywał różnicę między lokalnym (0) a globalnym (1). Lokalny w tym sensie to na przykład interfejs szeregowy.
Ponieważ wszystko to polega na automatycznym utworzeniu adresu publicznego, który będzie na globalnym interfejsie (w kategoriach MAC), dałoby to 1 na 7 pozycji. Zmienili to trochę, więc nie musisz zapisywać adresu dołka, a możesz napisać skrótem „::”
Przykład (z RFC 2373):
...
The alternative would have been for these to be of the
form 0200:0:0:1, 0200:0:0:2, etc., instead of the much simpler ::1,
::2, etc.
Krótka odpowiedź Nawet jeśli każdy adres MAC skończyłby na adresie IPv6, który miałby liczbę HEX większą niż 0 na pewnej pozycji w adresie IPv6. Dzięki temu można mieć Zera, aby można było używać notacji skróconej.