Как стать автором
Обновить

Комментарии 11

Для того же Python есть хотя бы стандартная либа, которая умеет побольше, чем упаковывать и распаковывать.
Ещё пару упражнений. 64.233.177.101/32 и 2607:f8b0:4002:c08::8b/128 — один конкретный адрес.
Далеко не всегда идет привязка IPv4 к IPv6.
Если по-простому, то очень часто (на самом деле почти всегда) используется так называемый «Stateless Autoconfiguration». Это когда в сеть транслируется только префикс /64 размера (стандартный размер префикса для локальной сети), а компьютеры резервируют IPv6-адреса подставляя к префиксу свой IPv6 Link-Local адрес. IPv6 Link-Local адрес генерируется на основе MAC-адреса интерфейса и имеет почти уникальный номер.

Вероятно, здесь не имелось в виду что это один и тот же адрес; имелось в виду что и тот и другой адрес — это примеры конкретных адресов а не адресов сетей.

function getRangeBoundary ($ip, $cidr, $which, $ipIsBin = false, $returnBin = false) {

Кажется это стоит отрефакторить.

Кстати, а в этой функции не будет проблем со знаковым битом?
Еще ip6 адрес может выглядеть так:
::1
FE80::1
FE80::1%12
FE80::1%eth0
FE80--1s12.ipv6-literal.net (это виндовый костыль способ кодирования для сетевых путей)

А еще endpoint-ы могут быть с портом
[FE80::1%12]:5000
спасибо за инфу, интересная статья

IPv6 $43.20 — Ого
В myloc и hetzner бесплатно /64 IPv6 на сервер. Имейте ввиду ребята)

Наткнулся на статью, так как сам столкнулся с ipv6 в php.

$mask = str_repeat('f', ceil($cidr / 4));

$mask .= dechex(4 * ($cidr % 4));

Похоже неправильно считается маска.

  1. Округление в большую сторону. Почему? (Это же сразу лишний f)

  2. dechex(4 * ($cidr % 4)); будет от остатка 4 8 12 (4 8 c). А должно быть 8 c e.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий