Как Вы определяете равенство между двумя адресами IPv6?

In [1]: class test(object):
   ...:     pass
   ...: 

In [2]: test.__name__
Out[2]: 'test'
16
задан Yves M. 3 December 2014 в 22:38
поделиться

4 ответа

Википедия утверждает :

Поскольку все локальные для ссылок адреса в хост имеют общий префикс, нормальный процедуры маршрутизации не могут использоваться для выберите исходящий интерфейс, когда отправка пакетов на локальную ссылку пункт назначения. Специальный идентификатор, известен как индекс зоны, необходим для обеспечить дополнительную маршрутизацию Информация; в случае локальной ссылки адреса, индексы зон соответствуют идентификаторы интерфейса.

Когда адрес записывается в текстовом виде, индекс зоны добавляется к адрес, разделенный знаком процента «%». Фактический синтаксис индексов зон зависит от операционной системы [...]

Итак, эти суффиксы являются индикаторами зоны, которые связывают адрес с физическим интерфейсом. Это также объясняет, почему суффиксы различаются, например, для проводных и беспроводных интерфейсов.

Чтобы помочь ответить на вопрос, я не думаю, что суффиксы следует включать в какое-либо сравнение. Адреса IPv6 по определению состоят из 128 бит, а суффиксы представляют собой строго локальную информацию, которая не имеет смысла за пределами вашей собственной машины и ее текущей операционной системы.

Достаточно сравнения 128 бит.

17
ответ дан 30 November 2019 в 22:10
поделиться

Адреса с символом / и номером в конце используют нотацию бесклассовой междоменной маршрутизации (CIDR). Они могут обозначать реальный адрес или сеть. Если перед / стоит ноль или ::, то это сеть.

Обозначение CIDR

1
ответ дан 30 November 2019 в 22:10
поделиться

IPv6 - это просто 128-битный IPv4 по сравнению с 32-битным; вы должны просто иметь возможность проводить побайтовое сравнение.

-1
ответ дан 30 November 2019 в 22:10
поделиться

Единственная разница -% 10 и% 11 - что дает?

Это идентификаторы зоны IPv6 , локальные для ссылки адреса, то есть префикс fe80, гарантированно уникальны только для локальной ссылки. Это означает, что адреса fe80: 8179: 5576: c6d0: 8b16% 11 и fe80 :: 8179: 5576: c6d0: 8b16% 10 могут относиться к разным машинам, доступ к одному из которых должен осуществляться через интерфейс 10, а к другому - через интерфейс 11.

Посмотрите определение sockaddr_in6 ,

struct sockaddr_in6 {
  short sin6_family;
  u_short sin6_port;
  u_long sin6_flowinfo;
  struct in6_addr sin6_addr;
  u_long sin6_scope_id;
};

. Вам нужно будет сравнить поля family, address и scope-id для полного совпадения.

4
ответ дан 30 November 2019 в 22:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: