我,網工。

樓上幾位答案有點分散,我在這裡做一個總結和補充。

簡單來說,子網掩碼的作用是為了表述網路狀態的一種補充技術。比如隨意給一個IP地址。172.16.32.64。在不給你子網掩碼的時候,你甚至都不能確定這是否是一個合法的IP地址。因為如果給一個/26以上的子網掩碼地址的話這個地址就代表了網段地址。不能直接配給主機使用。

人們使用子網掩碼劃分了網段,最初時候網段是按照A、B、C類來劃分的,當然還有D、E類地址,那個是屬於特殊地址,暫時不在討論範圍。但是使用中會發現劃分好的地址類會造成浪費,空白大半個網段地址或一個地址段不夠用。後期就用可變子網掩碼來做「訂製服務」了。

另外,這裡插播一個小知識。子網掩碼是為了劃分網段,劃分網段是為了幹什麼呢?

劃分網段是為了隔離廣播域。在一個二層網路中,有很多特殊業務的數據幀是需要「廣播」給全體成員的。成員在接收到廣播後查看是否和自己有關,如果無關就丟棄,如果有關就接收並處理。這就像是大家微信里的工作群,部門群,公司群等一樣。平時裡面這個@一下這位同事,一會又被@回去。如果人員不是太多的話還好。如果一個群里有幾百上千人,可用想像你的手機會響成什麼樣。別的活還干不幹了?所以大家一般都屏蔽了大群,自己開部門群或者相關業務群的吧。這就是隔離廣播域,廣播域越小,受到的干擾就相對較少。

這裡又出現問題了,如果大家都不看大群,大群里通知的內容大家都沒看到怎麼辦?老大會在大群里找各個部門的部門領導,找到領導後也就相當於定位到了他所在的部門群,這就是路由定址。路由定址時通常會模糊到找這個網段的地址。這時也可以用可變子網掩碼技術做網段聚合,也就是CIDR。比如某公司用了兩個C類網線,192.168.0.0/24和192.168.1.0/24。就可以直接聚合成一個大的網段地址作為這個公司的路由定址。如192.168.0.0/23(這裡只是舉例,192.168.X.X的地址段是私有地址段,不能直接接入公網的)。


僅供參考,希望大家指正:

贊同 @張月錕 的回答:區分網路地址和主機地址。

以下是多啰嗦幾句:為什麼會出現子網掩碼

是由於IPv4的地址資源緊缺,做不到每個網路設備都能獲得一個網路地址。可變長度的網路地址分配方式相比以前主類網路劃分方式更加靈活,在有限的網址資源的情況下,提高網路地址的利用率,減少網路地址的浪費。而靈活的代價就是:網路地址可以改變長度,沒有規律可循了,只能靠子網掩碼來劃分了,所以這就是子網掩碼的用途:區分網路地址和主機地址。

網址說到底就是0和1組合的一串符號,用來在網路環境中表明通信節點的身份。沒有子網掩碼之前,網路地址按照主類網路的方式進行區分,這個請自行搜索「主類網路地址」以及「A, B, C, D類網路地址」。但是這種劃分方式不夠靈活,也很浪費地址資源,並且隨著通信設備的普及,有上網需求的通信設備不斷增加,並且online和offline之間的切換頻繁,數量是隨著時間變化而變化的。因此固定給各大機構分配網路地址的方式不能滿足人民迫切且隨時的上網需求(捂嘴笑),因此子網掩碼的出現,在劃分地址資源方面做出了改進。

但這仍然無法滿足越來越多的網路設備能夠及時的接入網路,享受網上衝浪,因此又出現了很多其它技術來緩解這一問題,但到目前為止,還沒有滿意的解決方案。當然,據道聽途說IPv6能夠解決這一問題,畢竟它能讓地球上的每一粒沙子都能分配到自己的IP地址。

另說明一點,IPv6技術的出現是早於主類網路劃分的,幾乎與IPv4先後出現的。(如有闡述錯誤,請大家指正)

以上,溜了。


讓你知道哪部分網路地址


子網掩碼主要是為了方便路由器進行快速轉發使用的。

對於一個路由器而言,它並沒有必要知道具體的IP地址,路由器的每一個介面都與一個網路直接對應,路由器只需知道,報文應該發向哪個網路哪個介面就足夠了。

而子網掩碼就是對網路進行標識,大大減少了路由表的路由項,提高轉發速度。

試想如果沒有子網掩碼,那麼路由器的路由表將需要為每個ip設立路由項,這是多麼的可怕,互聯網中的路由器是承受不了的,即便路由器可以承受,但是查找路由的時間,也是網路通信不能承受的。


由於internet的每台主機都需要分配一個唯一的IP地址,因此分配的IP地址很多,這將使路由器的路由表變得很大,進而影響了路由器在進行路由選擇時的工作效率。解決這個問題的方法就是將一個大的網路劃分為幾個較小的網路,每個小的網路成為一個子網。

當一個分組到達一個路由器時,路由器應該能夠判斷出IP地址的網路地址。子網掩碼用來判斷IP地址的哪一部分是網路號與子網號,哪一部分是主機號。為了完成這種編號分離,路由器將對IP地址和子網掩碼進行「與」運算。

如果把IP地址比做是一個人的姓名,那麼子網掩碼就可以看成是這個人家族的族譜。

結合一個人的姓名和族譜可以知道這個人的很多信息,那麼同樣知道了IP地址和子網掩碼,也可以看出來很多東西。

具體的可以查看下面這篇文章。

https://www.zhihu.com/answer/1378716039


程序要通過本地連接來訪問一個ip,系統就拿子網掩碼來對照測算,看是不是一個網段的。不是的話就要走路由。所以子網掩碼是用來判斷網段的。


ip地址=網路號+主機號。

但ip地址是一連串連續的二進位數據,是沒有分隔符的。

子網掩碼的作用就是告訴路由器,網路號佔多少位。

具體的可以看下CIDR的介紹:

http://wanweibaike.com/wiki-%E6%97%A0%E7%B1%BB%E5%88%AB%E5%9F%9F%E9%97%B4%E8%B7%AF%E7%94%B1?

wanweibaike.com


在百度搜到的騰訊視頻上面的視頻,看完很通俗易懂。

子網掩碼在IP主機通信中的作用_騰訊視頻


子網掩碼結合IP地址一起使用,用於區分IP地址的網路地址和主機地址兩部分。

子網掩碼有兩個特殊地址,當子網掩碼的主機地址全為0時,表示該網路地址,當子網掩碼的主機地址全為1時,表示該網路的廣播地址。


推薦閱讀:
相关文章