none
помогите определить IP подсеть RRS feed

  • Вопрос

  • Что-то наподобие службы сайтов в АД

    Например, если у компа адрес 10,158,32,3 маска 255,255,255,0 результат был бы 10,158,32,0/24 равный от другого 10,158,32,144 маска 255,255,255,0

     

    12 марта 2008 г. 7:19

Ответы

  • Нужно переводить из формата XXX.XXX.XXX.XXX  в формат /YY ?

    Т.е.операция обратная вот этой : http://kgb-boss.spaces.live.com/blog/cns!8B2CF0F53CBBA8FF!297.entry ?

     

    Ну напрмер вот так :

     

    Code Snippet

    sAddr = "192.168.16.23"
    sMask = "255.255.255.0"

     

    iDecMask = ((Split(sMask,".")(0)*256 + Split(sMask,".")(1))*256 +Split(sMask,".")(2))*256 + Split(sMask,".")(3)

     

    Wscript.Echo (Split(sAddr,".")(0) and Split(sMask,".")(0)) & "." &_
                 (Split(sAddr,".")(1) and Split(sMask,".")(1)) & "." &_
                 (Split(sAddr,".")(2) and Split(sMask,".")(2)) & "." &_
                 (Split(sAddr,".")(3) and Split(sMask,".")(3)) & "." &_
                  "/" & Len(Replace(ToBin(iDecMask), "0" , ""))

     

    Function ToBin( iDecVal )
    iOst  = iDecVal
    ToBin = ""
    Do
       ToBin = CStr(iOst - Int(iOst/2)*2) & ToBin
       iOst = Int(iOst/2)
    Loop While iOst > 0
    end function


     

     

    Несколько экстравагантно, но ... Можно ещё короче если в .Echo сразу подставить формулу пролучения iDecMask

     

    12 марта 2008 г. 11:42

Все ответы

  • Не очень понятно что именно вы хотите получить, если можно пишите яснее.

    Вообще сеть и подсеть определяется маской заданной на клиенте. Т.е. перед отправкой пакета клиент проводит операцию AND между IP адресом и маской в двоичном виде.

    В вашем случае, например:

    10.158.32.3    = 00001010.10011110.00100000.00000011

                                      AND

    255.255.255.0 = 11111111.11111111.11111111.00000000

                         = 00001010.10011110.00100000.00000000 = 10.158.32.0 /24

     

    Кратко говоря все разбиение на подсети, CIDR и т.п. достигается настройкой масок на устройствах. Маски надо рассчитать - вручную или специальным сетевым калькулятором. Ссылочка на один из таких калькуляторов - http://www.lantricks.ru/lancalculator/.

    12 марта 2008 г. 9:00
  • Нужно переводить из формата XXX.XXX.XXX.XXX  в формат /YY ?

    Т.е.операция обратная вот этой : http://kgb-boss.spaces.live.com/blog/cns!8B2CF0F53CBBA8FF!297.entry ?

     

    Ну напрмер вот так :

     

    Code Snippet

    sAddr = "192.168.16.23"
    sMask = "255.255.255.0"

     

    iDecMask = ((Split(sMask,".")(0)*256 + Split(sMask,".")(1))*256 +Split(sMask,".")(2))*256 + Split(sMask,".")(3)

     

    Wscript.Echo (Split(sAddr,".")(0) and Split(sMask,".")(0)) & "." &_
                 (Split(sAddr,".")(1) and Split(sMask,".")(1)) & "." &_
                 (Split(sAddr,".")(2) and Split(sMask,".")(2)) & "." &_
                 (Split(sAddr,".")(3) and Split(sMask,".")(3)) & "." &_
                  "/" & Len(Replace(ToBin(iDecMask), "0" , ""))

     

    Function ToBin( iDecVal )
    iOst  = iDecVal
    ToBin = ""
    Do
       ToBin = CStr(iOst - Int(iOst/2)*2) & ToBin
       iOst = Int(iOst/2)
    Loop While iOst > 0
    end function


     

     

    Несколько экстравагантно, но ... Можно ещё короче если в .Echo сразу подставить формулу пролучения iDecMask

     

    12 марта 2008 г. 11:42