IPv4,子網掩碼,默認網關


IPv4,子網掩碼,默認網關

 

在網上查找了相關的資料,發現都說的都比較晦澀難懂。這篇文檔從整體的網絡通訊流程,以通俗易懂地方式來解釋這些網絡詞匯,比如,如何判斷兩台主機是否在同一個網段下,以及什么時候會用到默認網關。本文內容是根據自己查閱資料和理解,如果有什么不對的地方,還請指出。(本文最后會列出所參考的文獻資料)

 

一個簡單的通信流程

首先先介紹一下在局域網下通信的一個基本流程。 在Windows電腦上,如果你打開你網絡的IPV4屬性,你會看到你有兩種選擇IP的方式。

 

自動獲取IP地址 會幫你自動設置IP值,子網掩碼 和 默認網關,因此大部分人都是用的自動獲取IP值。而手動設置IP則需要你能夠正確的設置這些值。

 

 當一台計算機需要和另一台計算機通訊時,計算機需要根據 本機子網掩碼和目標IP地址 計算出目標IP所在的網段,然后再根據 本機IP 和 本機的子網掩碼 得出本機所在的網段。如果兩個網段相同,那么兩台計算機是局域網,然后則開始通信;如果不同,也就意味着目標IP是一個遠程地址,這時候本機會把數據發送給默認網關,然后默認網關處理接下來的通信。

 

例如,如下的一個網絡結構:

一台局域網下有如下兩台主機

主機1  IP地址:192.168.137.5  子網掩碼:255.255.255.0  默認網關:192.168.137.1

主機2  IP地址:192.168.137.10  子網掩碼:255.255.255.0  默認網關:192.168.137.1

路由器的地址: 192.168.137.1 

 

假如:主機1要與主機2通訊,

首先用 主機1 子網掩碼 和 主機2 IP 計算出網段(網段:也被稱為 網絡地址)

復制代碼
主機2 IP地址     192.168.137.10     11000000.10101000.10001001.00001010

主機1子網掩碼     255.255.255.0      111111111.111111111.111111111.00000000
===========================================================
按位與&                             11000000.10101000.10001001.00000000
                                   192.168.137.0
復制代碼

然后用 主機1子網掩碼 和 主機1IP 計算出自己所在的網絡地址

復制代碼
主機2 IP地址     192.168.137.5      11000000.10101000.10001001.00000110

主機1子網掩碼     255.255.255.0      111111111.111111111.111111111.00000000
===========================================================
按位與&                             11000000.10101000.10001001.00000000
                                   192.168.137.0
復制代碼

兩個網段都是 192.168.137.0 ,因此主機1和主機2是處在同一個局域網內的,所以接下來的通信是主機1廣播ARP尋址包,查找主機2的MAC地址。

 

 

再假設一個 主機3,主機3是一台服務器,該服務器不與主機1在同一個局域網內。

主機3  IP地址:104.233.232.39  子網掩碼:255.255.255.224  默認網關:104.233.232.62

如果主機1訪問主機3上的資源,首先用 主機1的子網掩碼 和 主機3的IP 計算一下網絡地址。

復制代碼
主機3 IP地址     104.233.232.39     1101000.11101001.11101000.00100111

主機1子網掩碼     255.255.255.0      111111111.111111111.111111111.00000000

 ===========================================================

                                   1101000.11101001.11101000.00000000

                                 = 104.233.232.0
復制代碼

 104.233.232.0 和主機1所在的網段明顯不同,此時 主機1 會將請求發送給默認網關 192.168.137.1 ,也就是路由器的地址。然后路由器負責接下來的通信。當路由器找到主機3后,反饋給主機1。此后,主機1和主機3的通信,都要走路由器過。

 

上面簡單的概括了一下網絡通訊的流程,接下來進一步的分析一下這些概念。

IP地址 和 子網掩碼

IP地址和子網掩碼是緊密相連的,只有IP地址是無法得出這個IP地址所在的 網絡地址 的,要計算處IP地址所在的 網絡地址 就要用 子網掩碼。局域網內,只有相同 網絡地址 的計算機才能相互通訊。 就比如:公司的電話系統,例:459 001,459 002 ....等,電話號碼前都有一個區號比如459。 而IP中的 網絡地址 就相當於這里的區號,只不過IP中的 網絡地址 長度是不固定的,必須要IP地址和子網掩碼進行 按位與 計算,才能得出 網絡地址 值。

比如我有一個IP地址:104.160.41.50,子網掩碼為:255.255.248.0

接下來要計算出網絡地址,廣播地址,和 主機號

網絡地址:IP地址與子網掩碼 進行邏輯與(&)運算。

復制代碼
IP地址     104.160.41.50      1101000.10100000.00101001.00110010

子網掩碼    255.255.248.0     11111111.11111111.11111000.00000000
===========================================================
邏輯與&運算                   1101000.10100000.00101000.00000000
                   網絡地址 = 104.160.40.0
復制代碼

 

廣播地址:子網掩碼取反后,與 網絡地址 進行邏輯或(|)運算

復制代碼
子網掩碼     255.255.248.0     11111111.11111111.11111000.00000000
取反~       0.0.7.255         00000000.00000000.00000111.11111111

網絡地址    104.160.40.0      1101000.10100000.00101000.00000000
===========================================================
邏輯或|運算                   1101000.10100000.00101111.11111111 
                   廣播地址 = 104.160.47.255
復制代碼

主機號:子網掩碼取反后,與 IP地址 進行邏輯與(&)運算

復制代碼
子網掩碼     255.255.248.0     11111111.11111111.11111000.00000000
取反~       0.0.7.255         00000000.00000000.00000111.11111111

IP地址     104.160.41.50      1101000.10100000.00101001.00110010
=========================================================== 
邏輯與&運算                    00000000.00000000.00000001.00110010
                     主機號 = 0.0.1.50
復制代碼

 

 

默認網關

網關可以理解為一個網絡節點,它負責不同 網絡地址(aka. 網段) 之間的通信。 一般情況下(家用網絡環境 或 較小的網絡環境),默認網關 就是我們的路由器設備。

在前面的基本案例中,也提到了,當一個主機發現它所訪問的目標主機不在同一個網段內時,主機就會發送數據包默認網關,讓默認網關進行下一步的查找,查到了就反饋給主機。

 

本文就先介紹到這里了,在結束本文之前,給大家出一個思考題。

主機A  IP:192.168.10.5  子網掩碼:255.255.255.254  默認網關:192.168.10.1

主機B  IP:192.168.10.7  子網掩碼:255.255.255.0      默認網關:192.168.10.1

問題:請問主機A與主機B能相互通訊嗎?

 

本文參考文獻:

1. Default gateway 

2. Understand TCP/IP addressing and subnetting basics

3. Subnetwork


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM