Как рассчитать длину сетевой маски для адреса ipv4, используя длину сетевой маски ipv6?

Я пытаюсь вычислить адрес ipv4 в диапазоне, используя длину сетевой маски. Пример: Начальный IP (v6): ::ffff:1.0.64.0 Длина маски сети:: 114

Как рассчитать конечный ip (в формате v4) этого диапазона, используя длину префикса? Для приведенного выше примера IP-адреса будут находиться в диапазоне 1.0.64.0-1.0.127.255 (рассчитано с использованием http://www.gestioip.net/cgi-bin/subnet_calculator.cgi)

Спасибо

Винод


person vinod    schedule 22.04.2014    source источник
comment
Извините, но не очень понятно, о чем вы спрашиваете. Можете ли вы показать нам код, который вы написали до сих пор?   -  person Sander Steffann    schedule 23.04.2014
comment
@Sander Отредактировал вопрос   -  person vinod    schedule 23.04.2014
comment
Это адрес IPv4. Вычтите 96 и введите его в свой код IPv4.   -  person Michael Hampton    schedule 23.04.2014


Ответы (1)


Как и в случае с IPv4, вы должны создать маску IPv6, установив первые 114 битов в 1, а остальные биты в 0, затем вы замаскируете исходный IPv6-адрес этой маской, используя побитовый оператор AND, чтобы получить идентификатор подсети (и начальный адрес подсети), затем ИЛИ обратную маску к идентификатору подсети, чтобы получить последний адрес подсети.

  ::FFFF:1.0.64.0
= 0000:0000:0000:0000:0000:FFFF:0100:4000
= 00000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111100000001000000000100000000000000

prefix length 114
= 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000
= FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:C000

    00000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111100000001000000000100000000000000
AND 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000
    --------------------------------------------------------------------------------------------------------------------------------
  = 00000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111100000001000000000100000000000000

    0000:0000:0000:0000:0000:FFFF:0100:4000
AND FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:C000
    ---------------------------------------
  = 0000:0000:0000:0000:0000:FFFF:0100:4000

  = ::FFFF:1.0.64.0

NOT 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000
    --------------------------------------------------------------------------------------------------------------------------------
  = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111

NOT FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:C000
    ---------------------------------------
  = 0000:0000:0000:0000:0000:0000:0000:3FFF

    00000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111100000001000000000100000000000000
OR  00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111
    --------------------------------------------------------------------------------------------------------------------------------
  = 00000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111100000001000000000111111111111111

    0000:0000:0000:0000:0000:FFFF:0100:4000
OR  0000:0000:0000:0000:0000:0000:0000:3FFF
    ---------------------------------------
  = 0000:0000:0000:0000:0000:FFFF:0100:7FFF

  = ::FFFF:1.0.127.255
person Remy Lebeau    schedule 23.04.2014