Форматы MAC-адресов и связь EUI-64
Нормализуйте распространенные 48-битные текстовые формы и поймите определенное преобразование EUI-64.
ИИ-резюме
Разделители MAC меняют представление, а не базовые байты. Проверка шестибайтовых входных данных перед преобразованием; отличить обычное расширение EUI-64 от модифицированного EUI-64.
Несколько строк могут представлять одни и те же 48 бит.
Примеры: 00:11:22:AA:BB:CC, 00-11-22-AA-BB-CC и 0011.22AA.BBCC. Анализировать ровно шесть октетов после удаления поддерживаемых разделителей; отклонять смешанные, дополнительные или нешестнадцатеричные символы.
Устаревший рецепт модифицированного IID EUI-64
Для устаревшего рецепта идентификатора интерфейса IPv6, описанного в RFC 4291, вставьте FF:FE между первым и последним тремя октетами 48-битного адреса канального уровня, затем инвертируйте универсальный/локальный бит. Это модифицированная конструкция IID EUI-64; это не утверждение, что выходные данные являются текущим IPv6-адресом интерфейса.
Input 48-bit address: 00:11:22:AA:BB:CC Insert FF:FE for legacy IID: 00:11:22:FF:FE:AA:BB:CC Invert U/L bit (Modified IID): 02:11:22:FF:FE:AA:BB:CC IPv6 IID grouping: 0211:22ff:feaa:bbcc
Современные стабильные IID не должны включать стабильный MAC по умолчанию.
RFC 8064 обновляет рекомендацию по умолчанию: используйте RFC 7217 для стабильных идентификаторов интерфейса SLAAC и не встраивайте стабильный адрес канального уровня по умолчанию. Значение в форме EUI-64 само по себе не может доказать, как был сгенерирован IID.
Используйте парсер, который отвергает двусмысленность
Проверьте все принятые обозначения, шестнадцатеричные строчные буквы, заполнение нулями, недопустимую длину и многоадресные/локальные примеры. Сохраните исходный ввод для отображения, используя для сравнения нормализованные байты.