怎么正确的计算一个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须要计算。计算过程见本文所述过程

最新文章

  1. css3更改input单选和多选的样式
  2. AudioSpecificConfig
  3. 找到SQL Server的序列号
  4. C语言学习010:fopen读写文件
  5. 【原】iOS学习18之OC内存管理高级
  6. js两个小技巧【看到了就记录一下】
  7. latex+bibtex+jabref(zz)
  8. windows下android开发环境搭建
  9. CSS之照片翻转
  10. 如何用Java语言向串口读写数据
  11. 关于web开发的一点理解
  12. memcache和数据库的使用技巧
  13. [Laravel 5 教程学习笔记] 一、Windows下安装Laravel 5
  14. Android服务Service总结
  15. Java实现定时任务的三种方法(转)
  16. POJ - 1417 并查集+背包
  17. JS判断不同操作系统显示不同样式css
  18. Java 加密、解密PDF文档
  19. gulp解决跨域的配置文件
  20. Can DBC文件翻译

热门文章

  1. Android 推断程序在手机中是否是活动状态或者正在执行状态
  2. Linux学习之基本介绍
  3. 如何用写js弹出层 ----2017-03-29
  4. FluentAPI关系映射配置
  5. Eclipse插件Lambok,实现自动生成Java代码
  6. 反射另一个app中的View
  7. Linux apache tomcat
  8. iOS系统结构
  9. jQuery $.ajax跨域-JSONP获取JSON数据(转载)
  10. Git的初始化设置