javascript判断两个IP地址是否在同一个网段的实现思路

JavaScript023

javascript判断两个IP地址是否在同一个网段的实现思路,第1张

1)基本思路:

要判断两个IP地址是否在同一个网段,将它们的IP地址分别与子网掩码做与运算,得到的结果为网络号,如果网络号相同,就在同一子网,否则,不在同一子网。

2)具体实现:

复制代码

代码如下:

/**

*

[isEqualIPAddress

判断两个IP地址是否在同一个网段]

*

@param

{[String]}

addr1

[地址一]

*

@param

{[String]}

addr2

[地址二]

*

@param

{[String]}

mask

[子网掩码]

*

@return

{Boolean}

[true

or

false]

*/

function

isEqualIPAddress

(addr1,addr2,mask){

if(!addr1

||

!addr2

||

!mask){

console.log("各参数不能为空")

return

false

}

var

res1

=

[],

res2

=

[]

addr1

=

addr1.split(".")

addr2

=

addr2.split(".")

mask

=

mask.split(".")

for(var

i

=

0,ilen

=

addr1.length

i

<

ilen

i

+=

1){

res1.push(parseInt(addr1[i])

&

parseInt(mask[i]))

res2.push(parseInt(addr2[i])

&

parseInt(mask[i]))

}

if(res1.join(".")

==

res2.join(".")){

console.log("在同一个网段")

return

true

}else{

console.log("不在同一个网段")

return

false

}

}

子网掩码决定可用的主机数量多少,以及ip是否在同一个网段,举两个例子。

以网段192.168.0.0为例:

子网掩码为255.255.255.0时,可用IP为192.168.0.1-192.168.0.254(255位广播地址)。

子网掩码为255.255.0.0时,可用IP为192.168.0.0-192.168.255.254。

以192.168.10.1和192.168.100.1为例:

子网掩码为255.255.255.0时,他们不在一个网段;

子网掩码为255.255.0.0时,他们在一个网段。

综上所述,多个IP地址是否在同一个网段以及该网段有多少两个可用的IP地址,由子网掩码决定。

IP和掩码一起使用,掩码限制了IP地址段的范围,也可以理解为子网的反问句,

也就是说,同一个IP地址有不同的掩码,网络段中的IP地址可能不同。网关是与您的IP地址相同子网中的任何其他可用IP地址,但通常是用作网关的隧道段的第一个或最后一个地址。网关的地址配置在路由器或其他三层设备上。

其作用是实现网络中不同网络段之间的正确互连,一般可以理解为通过网关接入Internet。

设置IP地址,子网掩码,网关的步骤如下:

1.打开“网络与共享中心”,找到已连接的网络,以本地连接为例,点击“本地连接”选项度数。

2.输入“本地连接”选项后,找到“属性”选项。

3.选择并打开properties选项以输入本地连接。

4.在“属性”选项中找到“Internet协议版本4(TCP/ipv4)”。

5.双击“Internetprotocolversion4(TCP/ipv4)”,进入修改IP地址、子网掩码、网关选项。