怎么判断任意两台计算机的ip地址属于同一个网络?

易安682


/*

//判断任意两台计算机的IP地址是否属于同一子网络

子网掩码是用来判断任意两台计算机的IP地址是否属于同一子网络的根据。

子网掩码与IP地址结构相同,是32位二进制数,其中网络号部分全为“1”和主机号部分全为“0”。利用子网掩码可以判断两台主机是否中同一子网中。若两台主机的IP地址分别与它们的子网掩码相“与”后的结果相同,则说明这两台主机在同一子网中。

示例:

I P 地址  192.168.0.1

子网掩码  255.255.255.0

转化为二进制进行运算:

I P 地址 11010000.10101000.00000000.00000001

子网掩码 11111111.11111111.11111111.00000000

AND运算

    11000000.10101000.00000000.00000000

转化为十进制后为:

    192.168.0.0

I P 地址  192.168.0.254

子网掩码  255.255.255.0

转化为二进制进行运算:

I P 地址 11010000.10101000.00000000.11111110

子网掩码 11111111.11111111.11111111.00000000

AND运算

     11000000.10101000.00000000.00000000

转化为十进制后为:

     192.168.0.0

通过以上对两台计算机IP地址与子网掩码的AND运算后,我们可以看到它运算结果是一样的。均为192.168.0.0,所以这二台计算机可视为是同一子网络。

/*

* 功能: 判断两台计算机IP地址是同一子网络。

* 输入参数: String Mask: 子网掩码,格式:“255.255.255.0”;

* String ip1: 计算机1的IP地址,格式:“192.168.0.254”;

* String ip2: 计算机2的IP地址,格式:“192.168.0.1”;

*

* 返回值: 0:IP1与IP2属于同一子网络; 1:IP地址或子网掩码格式非法; 2:IP1与IP2不属于同一子网络

*/

/*public int checkNetSegment(String mask, String ip1, String ip2)

{

/*在这里实现功能*/

/* return 0;

}

*/

#include<iostream>

#include <string>

#include<vector>

using namespace std;

bool CheckIP(string str, vector &numVec);

int IsSameSubNetwork(string ip1, string ip2, string net);

int main()

{

string subnetMask; //  255.255.255.0 //Value3.Value2.Value1.Value0

string IP1; //192.168.224.256

string IP2; //192.168.10.4

int result = 0;

int lenSubnetMask,lenIP1,lenIP2;

cin >> subnetMask;

cin >> IP1;

cin >> IP2;

result = IsSameSubNetwork(IP1, IP2, subnetMask);

cout << result << endl;

return 0;

}

//判断是否是正确的IP

bool CheckIP(string str, vector &numVec)

{

int size = str.size();

int pointCount = 0;

string::size_type index = 0;

int prePoint = 0;

//0-3,点之前

vector<string> part; //存放三位字符串/<string>

while ((index = str.find_first_of('.', index)) != string::npos) //没有找到

{

//..之间有数字,3-0?

if (index > prePoint){

part.push_back(str.substr(prePoint, index - prePoint));

}//if

++index;

prePoint = index;

++pointCount; //有几个点

}//while

//最后一段。

if (prePoint < size){

part.push_back(str.substr(prePoint));

}//if

//判断符合32位不,如果不符合,则错误。

int partSize = part.size();

if (partSize != 4){

return false;

}//if

// 判断每一部分均属于0-255

int num;

for (int i = 0; i < partSize; ++i){

num = atoi(part[i].c_str()); //自动转换为int

numVec.push_back(num); //变成数字------

if (num < 0 || num > 255){

return false;

}//if

}//for

// 代表错误IP

if (pointCount != 3){

return false;

}//if

return true;

}

//int IsSameSubNetwork(char * pcIp1, char * pcIp2, char * pcSubNetworkMask)

int IsSameSubNetwork(string ip1, string ip2, string net){

if (ip1 == "" || ip2 == "" || net == ""){

return 0;

}//if

// 转换为string (自己习惯) //初始化

/*

if (pcIp1 == NULL || pcIp2 == NULL || pcSubNetworkMask == NULL){

return 0;

}//

string ip1(pcIp1);

string ip2(pcIp2);

string net(pcSubNetworkMask);

*/

vector ip1Vec;

vector ip2Vec;

vector netVec;

int result, result2;

// ip 子网掩码 输入合法

if (CheckIP(ip1, ip1Vec) && CheckIP(ip2, ip2Vec) && CheckIP(net, netVec))

{

for (int i = 0; i < 4; ++i){

result = ip1Vec[i] & netVec[i]; //4个

result2 = ip2Vec[i] & netVec[i]; //4个

if (result != result2)

{

return 2; // 2:IP1与IP2不属于同一子网络

}//if

}//for

}//if

else

{

return 1; // 1:IP地址或子网掩码格式非法;

}//else

return 0; //0:IP1与IP2属于同一子网络;

}

————————————————

原文链接:https://blog.csdn.net/q286989429/article/details/50598968


开悟科技


大家好我是大明,想要判断两台电脑是否属于一个“局域网”内,可以直接通过查看IP地址的方式就可以,方法有很多,这类技巧在维护局域网的时候,经常会用的到,那么接下来大明就详细的讲一下都有哪些方法!


方法一

右键单击”网络“选择属性,打开网络连接窗口,然后右键单击“本地连接”选择“状态”选项,切换至“支持”选项界面,最后查看一下两台电脑的IP网段,及网关就可以判断出来了。

例如:两台电脑的IP地址分别是192.168.1.6,192.168.1.59,可以看得出来是“网段相同”那么就可以判断出两台电脑同属于一个局域网,另外两台电脑的网关一样,也可以说明两台电脑属于一个局域网。


方法二

右键单击“计算机”选择“属性”,选择切换到“计算机名”选项,查看一下两台电脑的“工作组”是否相同,然后双击打开“网络“如果能看得到两台电脑的计算机名,就可以判断两台电脑是在一个局域网里面。


方法三

依次点击”开始“菜单-”运行“-输入”对方电脑的IP地址“,或者输入对方电脑的”计算机名“,如果可以PING的通就说明两台电脑在一个局域网里面。


方法四

打开运行第三方”局域网查看工具“软件,然后点击”搜索计算机“,如果两台计算机出现在软件列表里面,就说明两台电脑同在一个局域网里面。


以上就是今天分享的内容,希望对大家有所帮助,如果认同大明的观点,就点点赞 关注一下,打开”今日头条APP“搜索”电脑技师大明“,有更多电脑原创知识,咱们下期再见!



电脑技师大明


不能单纯的通过分析IP地址和子网掩码来分析两台计算机的IP地址属于同一个网络,要根据实际情况。

比如:我家的电脑的IP地址是:192.168.1.26,邻居家电脑的IP地址是:192.168.1.27,这显然不是在同一个网络。这时你使用Ping命令可能会ping通。

如果网络环境比较简单,只有1台路由器,且两台电脑通过网线或无线连接在同一台路由器上,那么这种情况下,两台电脑的ip地址是属于同一个网络的。

如果网络环境比较复杂,有多台路由器,多台交换设备,线路特别复杂的情况下,如何判断两个电脑是不是在同一个网络呢?

1、简单的方法:

不通过网管,只需要两台电脑同时下载“飞鸽传书”这个软件并且打开,如果在同一个网络内,“飞鸽传书”就会在通讯录内出现对方的信息(支持Windows、MAC、IOS、Android、Linux)。

2、复杂的办法:

1)在两台电脑上,打开运行(WIN+R键),输入“CMD”后回车,再输入ipconfig /all,并且记录(截图或拍照即可)IP地址、物理地址(MAC地址)、子网掩码、网关地址。

这里可以初判断,一般子网掩码一样,网关地址一样的话,基本是属于同一个网络。

2)在1台电脑上,使用ping命令,ping一下对方的电脑,看是否出现数据包(没有是不正常的)。

3)在同一台电脑上,使用arp -a命令,查看一下路由表。对比一下,看是否有对方电脑的IP地址和MAC地址,如果IP和MAC能够对应上,就说明一定是在同一个网络内。

ping的目的,是产生路由表。如果没有ping可能arp -a后,就没有对方电脑的IP地址和MAC地址信息。

3、还有一种办法,就是自己登陆路由器的管理后台(或者将IP地址和MAC地址截图给网管),查看一下路由器分配的IP地址及对应的MAC地址。

分析两台电脑在不在同一个网络内,不能单纯的去分析IP地址、子网掩码、网关这些信息,到最后都不知道自己踩的坑是在哪里。

如果需要学习如何去划分IP地址和子网,一定要对路由器、交换机等设备、网络有相关知识的储备。

以上是我个人的一些经验和总结,希望可以帮助到大家,如果有不同的意见和建议,欢迎评论区留言一起讨论。

汇聚魔杖


首先看两台电脑是否连接同一个路由器,路由器有一个网关,连接了同一台路由器并且你的电脑设置了自动获取ip,那么你的两台电脑正常情况下就在一个网段了。

连接了同一个路由器后,如何确认他们在同一个网段呢?

有两个办法:

win+r输入cmd,输入ipconfig,分别查看两台电脑的ip地址。

看两台电脑ip的第三位是否相同,如果相同则在一个网段,否则不在同一个网段。

例如一台电脑的ip是92.168.0.101 ,另一台电脑的ip是192.168.0.50 则在一个网段内;如果另一台电脑的ip是192.168.1.50 则不在同一个网段内。


如果我的回答对您有帮助,请给我点个赞吧


科技美说


判断两台或以上计算机的ip是否属于同一个网络有一下几种方法:

第一种方法:打开电脑按下win+R键,输入cmd点击确定,输入ipconfig 敲回车,即可找到IP地址。

第二种方法:ping IP地址,比喻你知道的一台电脑IP地址是 192.168.66.8,那你就用:ping 192.168.66.8 即可知道。(如下图)

不难看出192.168.66.8已经通了,代表在同一局域网中。 192.168.66.3不通代表这个IP没有使用或线路不通。


李叔爱数码,如您爱家;每天分享数码/电脑领域干货,欢迎你与我交流互动。若你有其他问题,欢迎留言你的观点。


李叔数码之家


通过计算得到网络号,如果相同则在同一网段,不同则不在同一网段。

掩码和IP的二进制式进行“与”运算,1和1=1 1和0=0 0和0=0。

子网掩码是用来判断任意两台计算机的IP地址是否属于同一子网络的根据。

判断是否处于同一子网的简单易懂法:

1、打开网络邻居,查看工作组计算机,如果在里面能看到对方的计算机名称。那么两台电脑同属于一个局域网。

2、连接同个交换机或者路由器,而且都能上网,那么肯定是同个局域网。

3、用局域网查看工具来查,出现的电脑为同个局域网。

如果是在b类网的基础上,就不用看160.162段了,就看第三段,192转换成2进制就是11000000,说明第三段的前2位是网络号;

再看2个ip,将他们的第三段转换成2进制,分别是00000011和10101100,看他们的前面2位,如果一样的话就是处于同一个子网,显然这2个ip前面2位不一样,所以他们不在同一个子网。

专业知识计算法:

把两台电脑的IP地址与子网掩码转成二进制,然后相应位进行相与运算,得出的结果相同(结果再转成10进制更方便判断),就是属于同一子网。

相与运算是两个条件同时为1结果才为1,否则为0(1与1=1,1与0=0,0与0=0)。


穷Sao


一零chain解答

其实这个问题也简单

通过计算得到网络号,如果相同则在同一网段,不同则不在同一网段。

掩码和IP的二进制式进行“与”运算,1和1=1 1和0=0 0和0=0。

子网掩码是用来判断任意两台计算机的IP地址是否属于同一子网络的根据。

判断是否处于同一子网的简单易懂法:

1、打开网络邻居,查看工作组计算机,如果在里面能看到对方的计算机名称。那么两台电脑同属于一个局域网。

2、连接同个交换机或者路由器,而且都能上网,那么肯定是同个局域网。

3、用局域网查看工具来查,出现的电脑为同个局域网。

如果是在b类网的基础上,就不用看160.162段了,就看第三段,192转换成2进制就是11000000,说明第三段的前2位是网络号;

再看2个ip,将他们的第三段转换成2进制,分别是00000011和10101100,看他们的前面2位,如果一样的话就是处于同一个子网,显然这2个ip前面2位不一样,所以他们不在同一个子网。

专业知识计算法:

把两台电脑的IP地址与子网掩码转成二进制,然后相应位进行相与运算,得出的结果相同(结果再转成10进制更方便判断),就是属于同一子网。

相与运算是两个条件同时为1结果才为1,否则为0(1与1=1,1与0=0,0与0=0)。








慕白视频MC


如果你在一个大公司的办公网络下,有很多方法判断你在不在同一个IP下面,最简单的方法,直接在两台电脑运行里面输入ipconfig

看他们显示的IP段是不是在同一个网段,如果是在同一个网段,那肯定是在同一个IP上面,比如都是192.168.1.……,如果不是一个网段,那可能有可能是在两个路由器或者多个路由器下面,比如一台192.168.1.12而另一台192.198.3.23。那这明显就不在一个IP下面


WUTANGHUANG


所有连接到网络中的计算机都需要一个唯一的IP地址,如果想要直接通讯,那么两台计算机的IP地址需要在同一网段,那么怎么判断是不是同一网段呢?

当然是IP地址的某一部分。他们相同则属于同一网段,不同则属于不同的。IP地址用二进制表示有32位,通常是我们用点分十进制的方式来表示一个IP地址的比如常见的192.168.1.1。在默认情况下192.168.1属于网络位,最后的.1属于主机位,如果有另一个主机的网络位和上面的相同,那么我们可以说它们处在同一个网段。而判断网络位的位置依靠的是子网掩码。

在二进制的形式下,子网掩码的表现形式为从左侧开始连续为1的形式。上面的网络位之所以是192.168.1,因为默认情况下它的子网掩码是255.255.255.0。换算成二进制则是11111111.11111111.11111111.00000000,我们把192.168.1.1也换算成二进制位,和子网掩码的二进制位作逻辑与的运算1和1得1,0和0得0,1和0得0,最终得出来的结果就是网络位。

那么默认子网掩码在255.255.255.0的情况下,192.168.1.1和192.168.1.5就在同一网段!但如果子网掩码是255.255.255.252的情况下还在吗?你可以手动算下,也可以利用网上的子网掩码计算器!


风来了156


针对每一个问答都本着绝不大胆胡说,只管小心求证的态度,疯评科技来解答您的提问。


要判断任意两台计算机的IP地址是否属于同一个网络,我们需要知道的是同一个网络里面的计算机的子网掩码是相同的,那究竟子网掩码是什么?又该如何查找计算机的真实IP地址呢?

下面就让我一一来介绍吧。


什么是子网掩码?

  • 子网掩码的表示方法及其含义

子网掩码是采取四段点分十进制的表示方法,每一段数字的范围是0~255,比如有一个子网掩码是 255.255.255.0 这就是点分十进制表示法,用二进制表示则是11111111.11111111.11111111.00000000,有时我们也可以称之为为24位掩码。再举一个例子,子网掩码 255.255.240.0,其二进制表示则是11111111.11111111.11110000.00000000,可以简称为20位掩码。

需要注意的是子网掩码不会单独出现的,它一定是跟在IP地址的后面才有意义。

  • 子网掩码的意义

上面讲了子网掩码必须跟在IP地址后面才有意义,他有两个作用:

①限定IP地址的直连通信范围,就是在二层网络环境(设备直接连接或者只经过交换机连接,包括路由器的Lan口)下,每个设备只能与子网掩码在自己子网掩码范围内的设备通信(IP地址前段必须有一部分是相同的)。

举个例子:A设备的IP地址和子网掩码是 192.168.31.45 255.255.255.0 同一交换机下的另一个B设备是192.168.31.145 255.255.255.0,因为IP地址前三段是相同的,且子网掩码覆盖范围相同,所以二者可以直接通信。


②进行子网划分,就是将一个大掩码的网络划分成几个小掩码的网络。

举个例子,将192.168.31.0 255.255.255.0 划分成2个子网,则两个子网分别为192.168.31.0 255.255.255.128,代表一个子网范围是0~127,192.168.31.128 255.255.255.128,代表另一个子网范围是128~255.


了解了什么是子网掩码后,那么判断两个IP地址是否属于同一个网络,判定规则就很简单:IP地址前段相同(指的二进制表示法中从最前面开始有若干连续位是相同的);两个地址的子网掩码相同或者能够相互包含对方的IP地址范围。

知道了判定规则,后面我们就可以判断是否属于同一个网络了。

如何查找计算机的IP地址和子网掩码?

私网IP的计算机直接在计算机上查找,有线网卡就在本地连接的属性里面点击状态,再点击详细信息就可以看到,无线网卡就是在无线网络连接里面进行同样操作可以看到IP

地址。当然我们有更简单的方法用命令行来查找,开始——运行——cmd——ipconfig


通过PPPoE拨号的计算机可以上网来查找,比如在百度搜索里面直接输入IP,就可得到自己的IP地址。

有时候上面两种方法看到的ip地址不同,一般那个内网地址是计算机本来的地址,上网查的是自己出口设备所用到公网IP。


两台计算机的IP地址是否属于同一个网络?

我们在上面已经讲过了判定方法和查找计算机IP的方法了。这里就直接给出判断方法。

①两IP地址前面第一位就不相同,那肯定不在同一个网络了。比如,1.1.1.1 和2.2.2.2两个ip地址肯定不在同一个网络。

②两个IP地址前段有相同的,后面就看子网掩码了。比如1.1.1.1 255.0.0.0 和 1.2.2.2 255.0.0.0 因第一位相同,子网掩码的覆盖范围也一致,属于同一个网络。举个反例:1.1.1.1 255.255.0.0 和 1.2.2.2 255.255.0.0则不属于同一个网络。

③两个IP地址的子网掩码不同的情况,比如,192.168.31.45 255.255.255.128 和192.168.31.55 255.255.255.0 属于同一个网络,前者128的掩码覆盖最后一位范围是0~63,后者掩码覆盖最后一位范围是0~255,两者都在0~63区间内,所以是同一个网络。再来一个192.168.31.38 255.255.255.248与前面两个IP地址都不在一个网络,因为他的子网掩码覆盖最后一位范围是 32~39,前面两个子网掩码包含了38,但后面的子网掩码没有包含前面的45和55,所以不在一个网络。



判断两个IP地址是否在同一个网络,只需要IP地址和子网掩码都拿出来比较即可,就是子网掩码是否互相包含的问题需要注意,其它情况都比较简单。


分享到:


相關文章: