rfc5952, раздел 4.2.2 «Обработка одного 16-битного поля 0» гласит:
Символ "::"не долженможно использовать для сокращения всего одного 16-битного поля 0. Например, представление
2001:db8:0:1:1:1:1:1 является правильным, но
2001:db8::1:1:1:1:1 не является правильным.
Theкавамура-03в черновике есть намек на то, почему:
4.2.2 Одно 16-битное поле 0
«::» не следует использовать для сокращения только одного 16-битного поля 0, поскольку это может ввести в заблуждение, что сокращено более одного 16-битного поля.
Но я не уверен, что понимаю логику. Не было бы проще понять, если бы :: всегда расширялось до максимально допустимого количества нулей?