{"_id":"@blueking/ip_subnet_divider","_rev":"7-b555116b8b0ab72bac50808f4da16f0a","name":"@blueking/ip_subnet_divider","dist-tags":{"latest":"1.0.4"},"versions":{"1.0.1":{"name":"@blueking/ip_subnet_divider","version":"1.0.1","keywords":["ipv4","subnets","divider","calculator","javascript"],"author":{"name":"royalpioneer"},"license":"MIT","_id":"@blueking/ip_subnet_divider@1.0.1","maintainers":[{"name":"blueking","email":"contactus_bk@tencent.com"}],"homepage":"https://github.com/royalpioneer/ip_subnet_divider#readme","bugs":{"url":"https://github.com/royalpioneer/ip_subnet_divider/issues"},"dist":{"shasum":"e31c715742f316113728999d4eaab6254f878da0","tarball":"https://registry.npmjs.org/@blueking/ip_subnet_divider/-/ip_subnet_divider-1.0.1.tgz","fileCount":4,"integrity":"sha512-P+9GRKg36dk2hqpxoNqd/UBwNai/60pyoAY3JgjX2h1MxoeRZ1ynSsMqlOwF6O6UDYU4H+s3sxYqEU1yheNZIQ==","signatures":[{"sig":"MEQCIHKHhTNIArzXz32c1mHctVtefokA6J+810NHSi6r+uxqAiBCfTOp2DV46O3WI8Rj4pu1u76kSL6KBAgE3V6b4P4RQQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7259},"main":"./lib/index.js","gitHead":"734fb7b146c70f9bc2da1a6ba6ccbacc755b4112","scripts":{"test":"jest","build":"rollup -c"},"_npmUser":{"name":"blueking","email":"contactus_bk@tencent.com"},"repository":{"url":"git+https://github.com/royalpioneer/ip_subnet_divider.git","type":"git"},"_npmVersion":"9.5.1","description":"ip subnet divider","directories":{},"_nodeVersion":"18.16.0","dependencies":{"rollup":"^3.26.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","@babel/cli":"^7.22.9","@babel/core":"^7.22.9","@babel/preset-env":"^7.22.9","@rollup/plugin-babel":"^6.0.3","@rollup/plugin-terser":"^0.4.3","@rollup/plugin-commonjs":"^25.0.3"},"_npmOperationalInternal":{"tmp":"tmp/ip_subnet_divider_1.0.1_1690540580524_0.8241869525383458","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"@blueking/ip_subnet_divider","version":"1.0.2","keywords":["ipv4","subnets","divider","calculator","javascript"],"author":{"name":"royalpioneer"},"license":"MIT","_id":"@blueking/ip_subnet_divider@1.0.2","maintainers":[{"name":"blueking","email":"contactus_bk@tencent.com"}],"homepage":"https://github.com/royalpioneer/ip_subnet_divider#readme","bugs":{"url":"https://github.com/royalpioneer/ip_subnet_divider/issues"},"dist":{"shasum":"c2bb432cbe028a16a5284da3dcd89800d9458155","tarball":"https://registry.npmjs.org/@blueking/ip_subnet_divider/-/ip_subnet_divider-1.0.2.tgz","fileCount":4,"integrity":"sha512-RMzEJUEpzuH+BC30aJ6fP83DAAmjIfk5U5Q0ELiZpMahKuLCfkAMqyw64uy3fka9KxRrA7PRsqFa4PseWCl/kg==","signatures":[{"sig":"MEYCIQDUCFOjDwe+VPCqGYHFBjb49s4XWIA/BhiQJ7xjXY+F6QIhAMQIAzIICvxKjJu/UAvXEUmcH7qzbH8PUH2JVwxrUrVl","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11105},"main":"./lib/index.js","gitHead":"aa015ea8231e3166dd1a0224cd89fbe00f1beeda","scripts":{"test":"jest","build":"rollup -c"},"_npmUser":{"name":"blueking","email":"contactus_bk@tencent.com"},"repository":{"url":"git+https://github.com/royalpioneer/ip_subnet_divider.git","type":"git"},"_npmVersion":"9.5.1","description":"ip subnet divider","directories":{},"_nodeVersion":"18.16.0","dependencies":{"rollup":"^3.26.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","@babel/cli":"^7.22.9","@babel/core":"^7.22.9","@babel/preset-env":"^7.22.9","@rollup/plugin-babel":"^6.0.3","@rollup/plugin-terser":"^0.4.3","@rollup/plugin-commonjs":"^25.0.3"},"_npmOperationalInternal":{"tmp":"tmp/ip_subnet_divider_1.0.2_1690544286652_0.7511153675552773","host":"s3://npm-registry-packages"}},"1.0.3":{"name":"@blueking/ip_subnet_divider","version":"1.0.3","keywords":["ipv4","subnets","divider","calculator","javascript"],"author":{"name":"royalpioneer"},"license":"MIT","_id":"@blueking/ip_subnet_divider@1.0.3","maintainers":[{"name":"blueking","email":"contactus_bk@tencent.com"}],"homepage":"https://github.com/royalpioneer/ip_subnet_divider#readme","bugs":{"url":"https://github.com/royalpioneer/ip_subnet_divider/issues"},"dist":{"shasum":"0e5d1cd62f034c8eec4b00649ccda367b6faca3a","tarball":"https://registry.npmjs.org/@blueking/ip_subnet_divider/-/ip_subnet_divider-1.0.3.tgz","fileCount":4,"integrity":"sha512-M2pOF7ZhuookUWfNBxqpsnLrea4W0FU5PHP2qaROXnYU7mfNur6kOTDCeDWDuY5TjeCWUhRNung2B32N+hAYAQ==","signatures":[{"sig":"MEYCIQD7LuZmJgWtqP3otui19WAKl/bmbWw1AJZpmC99yHCnkwIhAJ1TK0JL8p4gtF9UfjLG/YREWQAUnGjCL/1qw3LP71Kb","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11103},"main":"./lib/index.js","gitHead":"e753f0fe62d170f983c672279c1bb3668765b71e","scripts":{"test":"jest","build":"rollup -c"},"_npmUser":{"name":"blueking","email":"contactus_bk@tencent.com"},"repository":{"url":"git+https://github.com/royalpioneer/ip_subnet_divider.git","type":"git"},"_npmVersion":"9.5.1","description":"ip subnet divider","directories":{},"_nodeVersion":"18.16.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","rollup":"^3.26.3","@babel/cli":"^7.22.9","@babel/core":"^7.22.9","@babel/preset-env":"^7.22.9","@rollup/plugin-babel":"^6.0.3","@rollup/plugin-terser":"^0.4.3","@rollup/plugin-commonjs":"^25.0.3"},"_npmOperationalInternal":{"tmp":"tmp/ip_subnet_divider_1.0.3_1690790766963_0.8232111753137645","host":"s3://npm-registry-packages"}},"1.0.4":{"name":"@blueking/ip_subnet_divider","version":"1.0.4","keywords":["ipv4","subnets","divider","calculator","javascript"],"author":{"name":"royalpioneer"},"license":"MIT","_id":"@blueking/ip_subnet_divider@1.0.4","maintainers":[{"name":"blueking","email":"contactus_bk@tencent.com"}],"homepage":"https://github.com/royalpioneer/ip_subnet_divider#readme","bugs":{"url":"https://github.com/royalpioneer/ip_subnet_divider/issues"},"dist":{"shasum":"d8d485e44e8ee2b5c846e22257c846e9ec5dc272","tarball":"https://registry.npmjs.org/@blueking/ip_subnet_divider/-/ip_subnet_divider-1.0.4.tgz","fileCount":4,"integrity":"sha512-38HrZYDzg2t4s57sgygDTEfhq/z1jZzXADIRKwpDGfk/1fjUdT35J6g1o/X8ssq+lINrcdxcz8u+pY8Ulh0ZcQ==","signatures":[{"sig":"MEYCIQCUql/Z/ZBYV2CxYXMLLZ5SosJh3YX3ato92+5V+n3kqAIhAJhv1jUyhqkqY52YKzMOlnmv67D0eTtbgBGnEuiyqoAR","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11081},"main":"./lib/index.js","gitHead":"e753f0fe62d170f983c672279c1bb3668765b71e","scripts":{"test":"jest","build":"rollup -c"},"_npmUser":{"name":"blueking","email":"contactus_bk@tencent.com"},"repository":{"url":"git+https://github.com/royalpioneer/ip_subnet_divider.git","type":"git"},"_npmVersion":"9.5.1","description":"ip subnet divider","directories":{},"_nodeVersion":"18.16.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","rollup":"^3.26.3","@babel/cli":"^7.22.9","@babel/core":"^7.22.9","@babel/preset-env":"^7.22.9","@rollup/plugin-babel":"^6.0.3","@rollup/plugin-terser":"^0.4.3","@rollup/plugin-commonjs":"^25.0.3"},"_npmOperationalInternal":{"tmp":"tmp/ip_subnet_divider_1.0.4_1690791092656_0.8187777360076067","host":"s3://npm-registry-packages"}}},"time":{"created":"2023-07-28T09:56:34.056Z","modified":"2026-01-15T04:03:50.325Z","1.0.0":"2023-07-28T09:56:34.360Z","1.0.1":"2023-07-28T10:36:20.664Z","1.0.2":"2023-07-28T11:38:06.818Z","1.0.3":"2023-07-31T08:06:07.120Z","1.0.4":"2023-07-31T08:11:32.807Z"},"bugs":{"url":"https://github.com/royalpioneer/ip_subnet_divider/issues"},"author":{"name":"royalpioneer"},"license":"MIT","homepage":"https://github.com/royalpioneer/ip_subnet_divider#readme","keywords":["ipv4","subnets","divider","calculator","javascript"],"repository":{"url":"git+https://github.com/royalpioneer/ip_subnet_divider.git","type":"git"},"description":"ip subnet divider","maintainers":[{"email":"contactus_bk@tencent.com","name":"blueking-magicbox"}],"readme":"# @blueking/ip_subnet_divider\r\nIPV4 CIDR 子网划分计算工具用于从给出的 **IP 地址块** 和 **子网数**，计算出 **主机数**、**子网掩码**、**子网主机范围**、**子网主机数**、**子网网段** 和 **子网广播地址**。\r\n\r\n## **快速开始**\r\n\r\n\r\n### **安装**\r\n\r\n\r\n``` shell\r\nnpm i @blueking/ip_subnet_divider\r\n```\r\n\r\n\r\n\r\n### **使用**\r\n\r\n\r\n``` javascript\r\nimport calculator from \"@blueking/ip_subnet_divider\";\r\nconst {\r\n    ipMask,\r\n    ipCIDR,\r\n    subnets\r\n} = calculator('10.0.0.1/8', 8);\r\n```\r\n\r\n## 原理\r\n\r\n下面举两个例子：\r\n\r\n### **例1、要将网络地址块 10.0.0.0/8 划分成 8 个子网。**\r\n\r\n10.0.0.0/8 的主机号长度为 24，因此主机数有 2^24 = 16777216 个。\r\n\r\n因为要划分成 8 个子网，因此需要拿出 3 位作为子网网段，因此子网掩码是 255.244.0.0/11。\r\n\r\n子网网段的二进制表示可能性有：\r\n\r\n\r\n```\r\n111、110、101、011、100、010、001、000\r\n```\r\n\r\n\r\n因此，可以计算出对应的子网网络号\r\n\r\n\r\n<table>\r\n  <tr>\r\n   <td>10.224.0.0\r\n   </td>\r\n  </tr>\r\n  <tr>\r\n   <td>10.192.0.0\r\n   </td>\r\n  </tr>\r\n  <tr>\r\n   <td>10.160.0.0\r\n   </td>\r\n  </tr>\r\n  <tr>\r\n   <td>10.128.0.0\r\n   </td>\r\n  </tr>\r\n  <tr>\r\n   <td>10.96.0.0\r\n   </td>\r\n  </tr>\r\n  <tr>\r\n   <td>10.64.0.0\r\n   </td>\r\n  </tr>\r\n  <tr>\r\n   <td>10.32.0.0\r\n   </td>\r\n  </tr>\r\n  <tr>\r\n   <td>10.0.0.0\r\n   </td>\r\n  </tr>\r\n</table>\r\n\r\n\r\n因为，最小的地址可以表示成 _0000000.......0000001_\r\n\r\n最大的地址可以表示成 _000(共11个0)...001111111.....111110_\r\n\r\n所以，只要用上述计算出的 8 个子网网络号与 最小地址 和 最大地址进行 **按位或运算** 就可以得到每个子网网段的主机地址范围了，\r\n\r\n\r\n<table>\r\n  <tr>\r\n   <td><strong>网络号</strong>\r\n   </td>\r\n   <td><strong>主机地址范围</strong>\r\n   </td>\r\n   <td><strong>广播地址</strong>\r\n   </td>\r\n  </tr>\r\n  <tr>\r\n   <td>10.0.0.0\r\n   </td>\r\n   <td>10.0.0.1 - 10.31.255.254\r\n   </td>\r\n   <td>10.31.255.255\r\n   </td>\r\n  </tr>\r\n  <tr>\r\n   <td>10.32.0.0\r\n   </td>\r\n   <td>10.32.0.1 - 10.63.255.254\r\n   </td>\r\n   <td>10.63.255.255\r\n   </td>\r\n  </tr>\r\n  <tr>\r\n   <td>10.64.0.0\r\n   </td>\r\n   <td>10.64.0.1 - 10.95.255.254\r\n   </td>\r\n   <td>10.95.255.255\r\n   </td>\r\n  </tr>\r\n  <tr>\r\n   <td>10.96.0.0\r\n   </td>\r\n   <td>10.96.0.1 - 10.127.255.254\r\n   </td>\r\n   <td>10.127.255.255\r\n   </td>\r\n  </tr>\r\n  <tr>\r\n   <td>10.128.0.0\r\n   </td>\r\n   <td>10.128.0.1 - 10.159.255.254\r\n   </td>\r\n   <td>10.159.255.255\r\n   </td>\r\n  </tr>\r\n  <tr>\r\n   <td>10.160.0.0\r\n   </td>\r\n   <td>10.160.0.1 - 10.191.255.254\r\n   </td>\r\n   <td>10.191.255.255\r\n   </td>\r\n  </tr>\r\n  <tr>\r\n   <td>10.192.0.0\r\n   </td>\r\n   <td>10.192.0.1 - 10.223.255.254\r\n   </td>\r\n   <td>10.223.255.255\r\n   </td>\r\n  </tr>\r\n  <tr>\r\n   <td>10.224.0.0\r\n   </td>\r\n   <td>10.224.0.1 - 10.255.255.254\r\n   </td>\r\n   <td>10.255.255.255\r\n   </td>\r\n  </tr>\r\n</table>\r\n\r\n\r\n其中，可以顺便算出子网的网络号和广播地址，\r\n\r\n主机号二进制位全0的地址是网络号，全1的地址是广播地址。\r\n\r\n\r\n### **例2、要将网络地址块 192.168.1.0/24 划分成 4 个子网**\r\n\r\n借助上述思路，可以计算出结果：\r\n\r\n\r\n<table>\r\n  <tr>\r\n   <td><strong>网络号</strong>\r\n   </td>\r\n   <td><strong>主机地址范围</strong>\r\n   </td>\r\n   <td><strong>广播地址</strong>\r\n   </td>\r\n  </tr>\r\n  <tr>\r\n   <td>192.168.1.192\r\n   </td>\r\n   <td>192.168.1.193 - 192.168.1.254\r\n   </td>\r\n   <td>192.168.1.255\r\n   </td>\r\n  </tr>\r\n  <tr>\r\n   <td>192.168.1.128\r\n   </td>\r\n   <td>192.168.1.129 - 192.168.1.190\r\n   </td>\r\n   <td>192.168.1.191\r\n   </td>\r\n  </tr>\r\n  <tr>\r\n   <td>192.168.1.64\r\n   </td>\r\n   <td>192.168.1.65 - 192.168.1.126\r\n   </td>\r\n   <td>192.168.1.127\r\n   </td>\r\n  </tr>\r\n  <tr>\r\n   <td>192.168.1.0\r\n   </td>\r\n   <td>192.168.1.1 - 192.168.1.62\r\n   </td>\r\n   <td>192.168.1.63\r\n   </td>\r\n  </tr>\r\n</table>\r\n\r\n\r\n","readmeFilename":"README.md"}