怎麼判斷任意兩臺計算機的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地址和子網掩碼都拿出來比較即可,就是子網掩碼是否互相包含的問題需要注意,其它情況都比較簡單。


分享到:


相關文章: