以前鏈接路由器配置靜態IP的時候只是知道將子網掩碼改成255.255.255.0,IP地址前三個數字和網關一樣最后一個數字改成未被占用的IP就好了,一直沒有理解子網掩碼到底代表什么意思。之前上《計算機網絡》這門課的時候好像聽老師講過,沒怎么仔細聽,只知道網絡地址和主機地址什么的.
今天看了《TCP/IP詳解》才對子網掩碼有所了解。下面做個總結。
子網掩碼其實是為了分割網絡,比如一個A類地址能容納的主機數有2^24-2個主機,一般一個組織是不可能用到這么多地址的,勢必會造成浪費。但是我們可以通過子網掩碼來將一個A類地址划分成多個子網,根據IP和子網掩碼可以判斷同一個網絡地址下的主機是否在同一個網段.
子網掩碼會將IP地址分成三部分,網絡號、子網號、主機號。網絡號可以直接從IP地址得到,子網號則是IP和子網掩碼作&運算減去網絡號,剩下的一部分就是主機號.可以根據網絡號和子網號來確定兩個主機是否處在同一網段
如A機Ip為192.168.1.2,B機Ip為192.168.1.126,子網掩碼都是255.255.255.224。
轉換成16進制如下:
A機:11000000 10101000 00000001 00000010 &運算后: 11000000 10101000 00000001 00000000
B機:11000000 10101000 00000001 01111110 &運算后: 11000000 10101000 00000001 01100000
掩碼: 11111111 11111111 11111111 11100000
&運算后得到的結果不同,所以可以得出A機和B機並不在同一個網段內.
當A機發送數據給B機時,會先將B機的IP與子網掩碼進行&運算查看是否在同一個網段,如果不在同一網段內則會把數據發送給網關,在同一個網段的可以直接在數據鏈路層通信。