在網上查找了相關的資料,發現都說的都比較晦澀難懂。這篇文檔從總體的網絡通信流程,以通俗易懂地方式來解釋這些網絡詞彙,好比,如何判斷兩臺主機是否在同一個網段下,以及何時會用到默認網關。本文內容是根據本身查閱資料和理解,若是有什麼不對的地方,還請指出。(本文最後會列出所參考的文獻資料)windows
首先先介紹一下在局域網下通訊的一個基本流程。 在Windows電腦上,若是你打開你網絡的IPV4屬性,你會看到你有兩種選擇IP的方式。服務器
自動獲取IP地址 會幫你自動設置IP值,子網掩碼 和 默認網關,所以大部分人都是用的自動獲取IP值。而手動設置IP則須要你可以正確的設置這些值。網絡
當一臺計算機須要和另外一臺計算機通信時,計算機須要根據 本機子網掩碼和目標IP地址 計算出目標IP所在的網段,而後再根據 本機IP 和 本機的子網掩碼 得出本機所在的網段。若是兩個網段相同,那麼兩臺計算機是局域網,而後則開始通訊;若是不一樣,也就意味着目標IP是一個遠程地址,這時候本機會把數據發送給默認網關,而後默認網關處理接下來的通訊。tcp
例如,以下的一個網絡結構:spa
一臺局域網下有以下兩臺主機code
主機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 blog
假如:主機1要與主機2通信,ip
首先用 主機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地址所在的 網絡地址 就要用 子網掩碼。局域網內,只有相同 網絡地址 的計算機才能相互通信。 就好比:公司的電話系統,例: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能相互通信嗎?
本文參考文獻:
2. Understand TCP/IP addressing and subnetting basics
3. Subnetwork