• 【翻译自mos文章】怎么正确的计算一个ip地址的subnet id?


    怎么正确的计算一个ip地址的subnet id?

    来源于:
    How to calculate the correct subnet for an interface (文档 ID 1059759.1)

    适用于:
    Oracle Database - Enterprise Edition - Version 10.2.0.1 and later
    Information in this document applies to any platform.

    目标:
    正确的计算一个ip地址的subnet id,该subnet id是给oifcfg用的。

    oifcfg 须要你敲入pulic 和cluster_interconnect的subnet id。


    可是,ifconfig命令通常显示ip地址和netmask,并不显示subnet id

    本文会显示subnet id的计算方法。
    更普遍的是。本文也适用于例如以下的问题:对于一个给定的ip地址和netmask,怎么确定subnet id?

    解决方式:
    本文如果公共网络用的网卡名称是e1000g0。ip地址是171.197.26.137,netmask是ffffffc0

    从ifconfig -a的输出中。我们会看到例如以下:

    e1000g0:
    flags=209040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER,CoS>
    mtu 1500 index 2
    inet 171.197.26.137 netmask ffffffc0 broadcast 171.197.26.191
    groupname prod
    ether 0:14:4f:95:39:9a

    注意:上面的netmask被以十六进制显示为ffffffc0(在一些操作系统平台中。会显示成十进制而不是十六进制)

    该 netmaskffffffc0 = ff.ff.ff.c0=255.255.255.192
    二进制是11111111.11111111.11111111.11000000

    还有一个通常的用来表示netmask的方法是 两位的数字,比方“26”,这个“26”。是经过例如以下计算得到的:

    11111111.11111111.11111111.11000000
    =>(1+1+1+1+1+1+1+1)+(1+1+1+1+1+1+1+1)+(1+1+1+1+1+1+1+1)+(1+1+0+0+0+0+0+0)
    =8+8+8+2=26

    针对一个给出的网络ip地址(171.197.26.137)和netmask(255.255.255.192)。高速计算出subnet id的方法是使用IP calculator
    免费的IP calculator在网上能够得到,在本样例中,我使用的IP calculator是来源于:http://jodies.de/ipcalc.

    将网络ip地址(171.197.26.137)和netmask(255.255.255.192)带入该IP calculator,给出例如以下的输出:

    Result:
    Address:  171.197. 26.137       10101011.11000101.00011010.10 001001
    Netmask:  255.255.255.192 = 26  11111111.11111111.11111111.11 000000
    Wildcard:   0.  0.  0. 63       00000000.00000000.00000000.00 111111
    =>
    Network:  171.197. 26.128/26    10101011.11000101.00011010.10 000000 (Class B)
    Broadcast:171.197. 26.191       10101011.11000101.00011010.10 111111
    HostMin:  171.197. 26.129       10101011.11000101.00011010.10 000001
    HostMax:  171.197. 26.190       10101011.11000101.00011010.10 111110
    Hosts/Net: 62
    

    =>注意给出的 “Network:  171.197. 26.128/26”
    忽略上面输出中的/26。 oifcfg 所须要的subnet id就是171.197. 26.128

    另外一个获得subnet id的方法是对ip地址和netmask的每一个bit 做一个bit-AND运算:

    171.197. 26.137 => 10101011.11000101.00011010.10 001001
    255.255.255.192 => 11111111.11111111.11111111.11 000000
                     & ------------------------------------ 
                       10101011.11000101.00011010.10 000000 => 171.197.26.128

    当然。另外的一个获得subnet id的方法就是用oifcfg 命令本身
    oifcfg iflist命令显示了网卡名称和对应的subnet id

    $ ./oifcfg iflist
    e1000g0 171.197.26.128
    e1000g2 171.197.26.128
    e1000g3 10.241.6.0

    要设置public 网络的oifcfg,你须要使用例如以下的语法:

    oifcfg setif -global e1000g0/171.197.26.128:public
     
    译者注:
    若:netmask是ffffff00(也就是255.255.255.0),那么subnet id就是:ip地址的前三部分+一个零构成第四部分
    若:netmask不是ffffff00,那么subnet id须要计算。计算过程见本文所述过程
  • 相关阅读:
    JavaScript运行机制 Event Loop
    async 函数
    JavaScript Promise 对象
    pc端rest.css
    微信小程序公用样式类
    移动端base.css
    RegExp正则对象匹配规则
    RegExp正则相关方法
    mysql(五)事务
    mysql(四)海量数据优化
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/7056144.html
Copyright © 2020-2023  润新知