Перейти к содержимому

Расширитель/компрессор IPv6

Разверните сжатые IPv6-адреса до полного формата или сожмите до кратчайшей формы.

Об этом инструменте

Адреса IPv6 записываются в шестнадцатеричной системе и могут быть довольно длинными—до 39 символов в полностью развёрнутом виде. Чтобы сделать их более читаемыми и удобными для передачи, IPv6 поддерживает методы сжатия, которые удаляют ведущие нули и заменяют последовательные группы нулей двойным двоеточием. Этот инструмент осуществляет преобразование между этими двумя форматами: развёртывает сжатые адреса в полную запись или сжимает длинные адреса в их самую короткую допустимую форму.

Использование инструмента просто: вставьте или введите адрес IPv6 в любом формате, выберите, хотите ли вы его развернуть или сжать, и результат появится мгновенно в поле вывода. Он автоматически определяет формат вашего ввода, что упрощает переключение между сжатой и развёрнутой записью без ручного выбора формата. Независимо от того, настраиваете ли вы сетевую инфраструктуру, отлаживаете проблемы маршрутизации IPv6 или проверяете запись адресов в документации, этот инструмент надёжно выполняет преобразование.

Сетевые инженеры, системные администраторы и разработчики, работающие с современными сетями, получают наибольшую пользу от этого инструмента, особенно при интеграции унаследованных систем, которые требуют полную запись, или при чтении сжатых адресов из систем мониторинга сети. По мере исчерпания адресного пространства IPv4 IPv6 будет становиться всё более распространённым, что делает инструменты манипуляции адресами, подобные этому, необходимыми для каждого, кто управляет современными сетями.

Часто задаваемые вопросы

Реализация кода

import ipaddress

def expand_ipv6(addr: str) -> str:
    """Expand compressed IPv6 to full form."""
    return ipaddress.ip_address(addr).exploded

def compress_ipv6(addr: str) -> str:
    """Compress full IPv6 to shortest form."""
    return ipaddress.ip_address(addr).compressed

examples = [
    "2001:db8::1",
    "::1",
    "fe80::1",
    "2001:0db8:0000:0000:0000:0000:0000:0001",
    "::ffff:192.168.1.1",  # IPv4-mapped IPv6
]

for addr in examples:
    expanded  = expand_ipv6(addr)
    compressed = compress_ipv6(expanded)
    print(f"Input:      {addr}")
    print(f"Expanded:   {expanded}")
    print(f"Compressed: {compressed}")
    print()

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.