基于JavaScript的CIDR IP地址的辅助分析工具
2018-02-05 16:36
411 查看
背景
1、网络ID相同的计算机称之为本地网络,本地网络中的计算机相互通信不需要路由器连接;网络ID不相同的计算机称之为远程网络,远程网络中的计算机要相互通信必须通过路由器连接。2、IDR(Classless Inter-Domain Routing,无类域间路由选择)它消除了传统的A类、B类和C类地址以及划分子网的概念,因而可以更加有效地分配IPv4的地址空间。它可以将好几个IP网络结合在一起,使用一种无类别的域际路由选择算法,使它们合并成一条路由从而较少路由表中的路由条目减轻Internet路由器的负担。
CIDR 还使用“斜线记法”,它又称为CIDR记法,即在IP地址后面加上一个斜线“/”,然后写上网络前缀所占的比特数(这个数值对应于三级编址中子网掩码中比特1的个数)。 IP地址::={<网络前缀>,<主机号>}
问题
如何分析理解CIDR?例1:192.168.10.14/28,192.168.10.15/28,192.168.10.16/28哪个不是同一网段?
解决
使用下面的JavaScript分析工具,可以清晰地打印网络地址和主机地址:<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>ip address test</title> <style> body{ font-family:Courier New; } </style> </head> <body> <script lang="javascript"> function println(str){ document.writeln(str + "<br/>"); } /** *格式化IP */ function formatIP(ipaddr){ var str = ipaddr.toString(2); var a = parseInt(str.substr(0,8), 2); var b = parseInt(str.substr(8,8), 2); var c = parseInt(str.substr(16,8), 2); var d = parseInt(str.substr(24,8), 2); println(a +'.' + b + '.' + c + '.' +d); } /** * 使用点格式化 IP */ function formatIpByDot(ip){ var str = ip.toString(2); var a = str.substr(0,8); var b = str.substr(8,8); var c = str.substr(16,8); var d = str.substr(24,8); println(a + '.' + b + '.' + c + '.' + d); } /** * 使用点格式化 IP */ function formatIpToCIDR(ip, netlength){ if(netlength<0 || netlength>32){ println('Invalid netlength param.'); return; } var str = ip.toString(2); var a = str.substr(0,8); var b = str.substr(8,8); var c = str.substr(16,8); var d = str.substr(24,8); if(netlength<=8 ){ var l = netlength; a = a.substr(0,l) + '|' + a.substring(l); } else if( netlength>8 && netlength<=16){ var l = netlength-8; b = b.substr(0,l) + '|' + b.substring(l); }else if(netlength>16 && netlength<=24){ var l = netlength-8*2; c = c.substr(0,l) + '|' + c.substring(l); }else if(netlength>24 ){ var l = netlength-8*3; d = d.substr(0,l) + '|' + d.substring(l); } printTableHead(); println(' ' +a + '.' + b + '.' + c + '.' + d); } /** *打印表头 */ function printTableHead(){ println("<br>"); println('32-------24-------16-------8--------0'); println('|--------|--------|--------|--------|'); } /** * */ function transIP(str){ var segments = str.split('.'); /* for(var i=0;i<segments.length;i++){ println(' segments [' + i + ']:' + segments[i]); } */ var a = (parseInt(segments[0])<< 24)>>>0; var b = ( parseInt(segments[1])<<16) >>>0; var c =(parseInt(segments[2])<<8)>>>0; var d = (parseInt(segments[3]))>>>0; /* println(' parseInt(segments[0])<< 24:' + a.toString(2) + ',' + a); println(' parseInt(segments[1])<< 16:' + b.toString(2) + ',' + b); println(' parseInt(segments[2])<<8:' + c.toString(2) + ',' + c); println(' parseInt(segments[3]):' + d.toString(2) + ',' + d); */ var ipaddr = a + b + c + d; return ipaddr; } function test1(){ var str = '192.168.10.14'; var ip = transIP(str); //println(ip.toString(2) ); //formatIP(ip); //formatIpByDot(ip); formatIpToCIDR(ip, 28); formatIpToCIDR(transIP('192.168.10.15'), 28); formatIpToCIDR(transIP('192.168.10.16'), 28); } test1(); </script> </body> </html>
输出:
32-------24-------16-------8--------0
|--------|--------|--------|--------|
11000000.10101000.00001010.0000|1110
32-------24-------16-------8--------0
|--------|--------|--------|--------|
11000000.10101000.00001010.0000|1111
32-------24-------16-------8--------0
|--------|--------|--------|--------|
11000000.10101000.00001010.0001|0000
可以清楚的看到,192.168.10.16的网络地址(即IP地址前28位),不与192.168.10.14,192.168.10.15同,故不在同一网段内。
参考:
1、CIDR详解. xinianbuxiu. http://blog.csdn.net/xinianbuxiu/article/details/535604172、计算IP地址以及CIDR. 铭记_ . http://blog.csdn.net/lwb102063/article/details/52954419
相关文章推荐
- 基于ArcGIS API For JavaScript调用GP服务实现动态插值分析实现
- 基于JavaScript实现的快速排序算法分析
- 发布了一款基于RCP的编程聊天辅助工具 测试版
- 基于emma的测试覆盖率分析工具
- javascript内存泄露问题的解决方法和辅助工具
- 发布一个高效的JavaScript分析、压缩工具 JavaScript Analyser
- 基于SQL的日志分析工具myselect
- IIS日志分析辅助小工具--技术细节篇
- Chrome开发者工具之JavaScript内存分析
- 给Clouderamanager集群里安装基于Hive的大数据实时分析查询引擎工具Impala步骤(图文详解)
- 应用Rational工具简化基于J2EE项目(四)分析和工具的进展
- [JavaScript]基于Bootstrap+jQuery构建前端分页工具
- 10个基于浏览器的JavaScript调试工具分享
- 一只小小麻雀——基于语法分析工具Gold开发的加减法解释器
- 【JSHint解读一】JavaScript的静态代码分析工具
- 我的安全分析辅助工具
- 免费数据分析辅助工具整理
- 开启apache的server-status辅助分析工具
- 基于JavaScript离线编译工具环境搭建
- 基于JavaScript 数据类型之Boolean类型分析介绍