子網掩碼怎麼理解?
內網中192.168.1.199的前三組是網路號,後一組是主機號,子網掩碼就是255.255.255.0
如果IP同樣是192.168.1.199 那麼子網掩碼可以設成255.255.255.192嗎,怎麼理解如果在同一個區域網出現這兩種掩碼可以相互通訊嗎
從前有一個地主,有256間房子,地主家的門牌號碼是「192.168.1」,那麼他家第一間房子的門牌號碼是192.168.1.0,第二間是192.168.1.1,…第256間的編號是192.168.1.255。
地主老了,需要把256間房子分給4個兒子,平均分配,每個兒子可以分64間。
請來一位先生主持公道,先生這麼來操作:
192.168.1.0-192.168.1.63 分給大兒子192.168.1.64-192.168.1.127 分給二兒子192.168.1.128 -192.168.1.191 分給三兒子192.168.1.192-192.168.1.255 分給四兒子
那如何來描述四個兒子的子網網段呢?
192.168.1.0/26192.168.1.64/26192.168.1.128/26192.168.1.192/26/26是什麼鬼?
255.255.255.192的二進位是多少? 「11111111-11111111-11111111-11」大家數數一共多少個1?不用數了,是26個1,為了簡化子網掩碼的表示,用/26代替255.255.255.192。按位與運算
我們來看大兒子的網段192.168.1.0/26是如何得到的?以大兒子的房間為例:
192.168.1.0-192.168.1.63二進位表示:
192.168.1.011000000.10101000.00000001.00000000
192.168.1.63
11000000.10101000.00000001.00111111
首尾地址完全相同的是多少?
11000000.10101000.00000001.00數數一共多少位?26位!那麼用這個「192.168.1.0/26」就可以表示大兒子所有房間。
對照房間的門牌號碼「192.168.1.199」,很顯然屬於四兒子的。
一個主機192.168.1.199/26 能否和直連主機192.168.1.200/24 通信?可以的,因為都是四兒子的房間。
一個主機192.168.1.199/26 能否和直連主機192.168.1.1/24 通信? 不可以,因為一個是大兒子的房間,一個是四兒子的房間,無法直連通信!內網中192.168.1.199的前三組是網路號,後一組是主機號,子網掩碼就是255.255.255.0
首先要說明的是:不是某個IP的網路號和主機號決定子網掩碼是什麼,而是子網掩碼決定了某個IP地址的網路號與主機號是什麼,IP地址是要搭配子網掩碼使用的。例如上面的子網掩碼決定了192.168.1.199的前三段192.168.1是網路號,最後一段199是主機號。
我們再來理解子網掩碼的作用,先舉個例子,市面上的兩個廠家都生產電子秤,每個廠家都堅稱他們的秤最准,那你是怎麼知道他們的秤到底準不準?很簡單,你去找一個 1KG 的國際千克原器,各放到他們的秤上測量,如果秤的測量值是1KG,那這把秤就是準的,子網掩碼的作用就相當於這個大家公認的國際千克原器,是我們測量兩個IP是否屬於同一個網段的一個工具(應該說是讓你知道某個IP地址的網路號與主機號分別是什麼) 。
如果讓你判斷一個IP地址:192.168.1.199的網路號和主機號分別是什麼?
請問你怎麼判斷?你憑什麼說192.168.1是網路號?199是主機號?有什麼根據嗎?
但是如果我給你一個IP地址是以下(帶子網掩碼)形式的:
IP:192.168.1.199
子網掩碼:255.255.255.0
那麼根據大家公認的規則,你就可以得出這個IP的網路號和主機號了,怎麼算呢?
子網掩碼的長度和IP地址一樣也是一串32位的二進位數字,只不過為人類的可讀性和記憶性的方便,通常使用十進位數字來表示,例如把上面的IP地址和子網掩碼都轉換成相應的二進位就是下面這樣的:
十進位 二進位
IP 地址:192.168.1.199 ‐>11000000.10101000.00000001.11000111
子網掩碼:255.255.255.0 ‐>11111111.11111111.11111111.00000000
十進位的顯示形式是給人看的,二進位的顯示形式是給計算機看的。。。
子網掩碼的左邊是網路位,用二進位數字「1」表示,1的數目等於網路位的長度;右邊是主機位,用二進位數字「0」表示,0的數目等於主機位的長度。
例如上面的子網掩碼255.255.255.0的 「1」的個數是左邊24位,則對應IP地址左邊的位數也是24位;
十進位 二進位
IP 地址:192.168.1.199 ‐>11000000.10101000.00000001.11000111
子網掩碼:255.255.255.0 ‐>11111111.11111111.11111111.00000000
則這個IP地址的網路號就是11000000.10101000.00000001 ,轉換成十進位就是 192.168.1,網掩碼255.255.255.0的 「0」的個數是右邊8位,則這個IP地址的主機號就是11000111,轉換成十進位就是199.
下班了,後面有空再接。。。
子網掩碼不能割裂出來看。
子網掩碼、默認網關、MAC地址是需要一起解釋的東西。
1 計算機發送數據報的時候,知道對方IP是不夠的,必須要知道接受者的MAC地址才可以。數據鏈路層上是沒有IP地址概念的,只有發送者與接收者的MAC地址。
2 MAC地址與IP地址的關係,在乙太網上通過ARP維護。ARP簡單的工作原理為:
2.1 當有新設備加入網路時,會主動廣播自己的MAC與IP。2.2 當接收到2.1的信息的時候,本機建立一張對照表維護這個信息。2.3 當需要發送數據報給一個IP時,到2.2建立的表中查詢對應的MAC並發送。當查詢不到信息的時候,廣播一個查詢申請,要求指定的IP的主機執行2.1動作,並在稍後重新執行本步驟。3 子網掩碼結合本地IP地址後,用來確定目標IP是否在「邏輯上」與本計算機在同一個網路內(不管實際物理情況)。當目標地址同網(邏輯同網,即兩個IP在與子網掩碼進行AND計算後得出的網路名稱相同),根據2.3策略直接發送數據;當目標地址不同網(邏輯不同網,即兩個IP在與子網掩碼進行AND計算後得出的網路名稱不同),則根據2.3策略但將數據報發往默認網關IP對應的主機,由其負責路由代發(*)。
(*)默認網關為一個默認路由,如果有更明確的路由記錄,則直接發往路由指向的目標主機。子網掩碼的作用就是用來告訴主機有哪些ip地址是跟自己在同一個廣播域里,廣播地址又是什麼。
這樣當主機與同一個廣播域里的其他主機通訊時就可以直接通訊,如果不在同一個廣播域里,就發給默認網關。
比如ip是192.168.1.199/255.255.255.0,表示192.168.1.1-192.168.1.254在同一個廣播域,廣播地址是192.168.1.255。
如果改為192.168.1.199/255.255.255.192,表示與自己的ip在同一廣播域的ip範圍是192.168.1.193-192.168.1.254,廣播地址192.168.1.255
如果再改為192.168.1.199/255.255.255.240,表示廣播域ip192.168.1.193-192.168.1.206,廣播地址192.168.1.207
第一個掩碼對應的廣播域有254個可用ip,第二個掩碼對應的同一網段可用ip只有62個。第三個掩碼則只有14個。
假設目的地址是192.168.1.100,本機和對端都使用前面的24位掩碼,二者在一個廣播域里,直接通訊就可以了。本機和對端都使用後面的26位掩碼,二者必須通過路由器進行轉發才能通訊。
如果二者本應在同一廣播域里,掩碼本應該都設置為24位,但是誤將其中一個設置為26位,這種情況下,如果二者都正確配置了默認網關,並且默認網關正常運行,二者就可以通訊。
ensp模擬器實測通過。1. 不經計算,直接從IP地址讀出網路號、主機號是有類網路的功能。
2. 有類網路並不能使用 255.255.255.192子網掩碼。
3. 有類網路已被淘汰,幾乎不再使用了。
4. 至於無類網路下/24和/26的關係,你可以自己計算一下,看看什麼情況才會跨越子網。
CIDR VLSM
/24 255.255.255.0
/26 255.255.255.192
簡單歸類:
長度固定的掩碼 -&> 有類網路
IP地址分A/B/C/D/E類 -&> 有類網路
3種掩碼對應A/B/C類IP地址 -&> 有類網路
長度可變的子網掩碼 -&> 無類網路
IP地址沒有分類 -&> 無類網路
CIDR 地址表示 -&> 無類網路
VLSM 子網掩碼 -&> 無類網路
延伸閱讀:
路由和交換基礎
子網掩碼里的192是什麼意思呢?這個數字跟ip沒半毛錢關係!你把他想像成一個指令 這個指令就是指將256個地址劃成了四塊!ip地址0到63是一塊 64到127是二塊 128到191是三塊 192到255是四塊 所以當你看到192.168.1.199 255.255.255.192 是什麼意思呢?就是說你的地址是192.168.1.199而且你是在第四塊里!啥?你問我在這塊里又怎麼了?那我就告訴你!同一個塊里的地址可以互相通信!厲害吧??
至於你說在同一個區域網里不同掩碼能不能通訊 這個問題我借用林沛滿先生所著—wireshark網路分析就是這麼簡單 一書里開篇的例子給你解釋!(此出省略對林先生的仰慕之情一萬字)假設主機A
ip:192.168.1.3掩碼255.255.255.0網關192.168.1.1主機B
ip192.168.1.200掩碼255.255.255.0網關192.168.1.1此時通信沒有問題然後我很犯賤的把A的掩碼改成了255.255.255.128!我就問你賤不賤!先下班 有空再回答突然發現這裡還有個問題沒回答完 那就回答完吧
A的掩碼修改完後 我通過A來pingB 會有啥後果??能通嗎?BpingA能通嗎?兩者有啥區別?
先說ApingB
A通過對比本地ip 目的ip和本地掩碼得出結論 B和自己不屬於一個網段怎麼對比出來的?A的掩碼告訴A:和你屬於同一個網段的地址只有192.168.1.1到192.168.1.127這128個地址 其他地址都不和你一個網段
所以A會把數據包發給網關 通過網關轉給BB收到數據包準備回包了 目的地址是192.168.1.3 此時B的子網掩碼告訴B:A是跟你一個網段的 你直接發arp包查找A的二層地址就可以了!於是B就直接發包給A了
結論:A給B發包需要網關轉發 B給A發包可以直接送達給A子網掩碼是為了區分網路位和主機位。把IP地址比作一個人的名字,那麼子網掩碼可以讓你知道什麼是名,什麼是姓。
假設給你個名字,萊昂納多迪卡普里奧。你並不知道這九個字名和姓是從何處分開的。那麼現在給你一串數字111100000,告訴你這九個二進位數字分別對應名字的九個字,1和0的分界處就是名和姓的分界。 再舉個栗子。有一個網段是192.168.1.0 ,咱們把它比作一個村子,叫做司馬村。此網段的有一個主機地址是192.168.1.5,咱們叫他司馬光。另又有網段是192.168.0.0,叫做司村,村裡面同樣有個人叫做司馬光,主機位同樣是192.168.1.5。 這個時候給你司馬光(192.168.1.5IP地址)這個名字你如何區分他是哪個村子的?就需要子網掩碼了,司馬村的子網掩碼是255.255.255.0 ,而司村的子網掩碼就是255.255.0.0,這個時候你就能知道司馬光是哪個村子裡的。 192.168.1.5對應的二進位數是 11000000.10101000.00000001.00000101 而255.255.255.0對應的二進位數是 11111111.11111111.11111111.00000000 255.255.0.0的二進位數是 11111111.11111111.00000000.00000000 因為子網掩碼為1時對應的就是主網網段,也就是姓。為0對應的是主機位,也就是名。 把255.255.255.0對應的網段取出來就是192.168.1.0 255.255.0.0對應的網段取出來就是192.168.0.0給你198.168.1.5是,只要憑子網掩碼就可以知道他是哪個網段的。即就知道司馬光到底是姓司馬還是姓司,同時也知道他住在那個村子了。看了一圈,感覺我的回答還是比較通俗易懂的!!!用IC設計的知識來舉例的話,所謂子網掩碼就是好像是SOC系統里模塊地址段的分段掩碼,假設有一個32位系統,處理器可識別的系統內部空間地址段為0x00000000-0xFFFFFFFF,如果系統里有16個模塊,那麼平均分配的辦法(實際上不可能這樣分配)就是第一個模塊分到0x00000000-0x0FFFFFFF,第二個模塊分到0x10000000-0x1FFFFFFF,以此類推。所謂的地址分段掩碼,就是0xF0000000,這個掩碼可以把每個模塊的區塊地址進行區分,而將模塊內部的偏移地址進行屏蔽,在進行匯流排設計的時候,模塊介面處只需要把被訪問的地址和該掩碼相與,如果發現它等於分配給自己的地址段首地址的話,則對訪問進行相應。假設被訪問地址為0x12345678,通過0xF0000000 0x12345678操作得到0x10000000,那麼第二個模塊就知道該地址訪問的是自己,就可以進行響應了。
計算機物理層只懂通電 斷電也就是1和0,只能用二進位給它信號,子網掩碼是用來確定一個IP背後的網路位和主機位的,是一個32位的數字。一個IP地址如192.168.1.1,只是一組點分十進位數字,沒有net mask是無法賦值的(網路號 廣播號 網路大小)。00000000.00000000.00000000.00000000=0.0.0.011111111.11111111.11111111.11111111=255.255.255.25511111111.00000000.00000000.00000000=255.0.0.0=/811111111.10000000.00000000.00000000=255.128.0.0=/9……255.255.0.0=/16255.255.255.0=/241的位數決定了子網數,0的位數決定了每個子網裡的主機數。如/8掩碼,子網數=2的8次方個,每個子網有2的24次方個主機地址。每個子網第一個IP是網路ID,最後一個IP是廣播ID。換句話說子網掩碼可以把網路塊變大變小,同廣播地址的網路才能本地通訊。
子網掩碼是用來識別目的主機是否和源主機在同一個子網中的。
源主機使用子網掩碼和目的ip地址做與運算,子網掩碼和源主機ip地址與運算,這兩個結果作比較,如果想等,表示在同一子網中,直接投遞到目的主機。
如果不相等嗎,表示不同子網,所以扔給路由器。
如果子網掩碼設置的1長了(就是比如全都是1)那麼不影響通信,只是本來內網通信可以直接扔給目標主機,但是由於子網掩碼判斷為不同子網的主機,所以都會扔給路由器。路由器再送給目的主機。
但是如果1短了 (比如,一個B類地址,其子網掩碼使16個1的),那麼根據子網掩碼的判斷,只要ip網路部分相同,都會被認為是在同一子網中(因為與運算的結果都一樣),然後直接送到目的主機,不經過路由器。
這時候arp中肯定沒有目的主機的物理地址緩存,所以,發送arp請求。
但是目的主機不在同一子網中,arp不能誇路由。所以,最終卡死在arp上。
這就是子網掩碼的作用。
是和子網配套使用的。
以下只針對IPv4。首先,把四位十進位數的掩碼轉成32位二進位數,如果不是左邊連續的1右邊連續的0,那麼就不是正確的子網掩碼。例如: 1111 1111 1111 1111 1111 1111 0000 0000。其次,掩碼是用來區分IP address里的network address 和 user address的。通過把轉換成二進位的IP address和 Subnet mask按位與,可以得到network address。剩下的就是user address。如果在一個網路里,那麼兩個用戶的network address應該是一樣的,掩碼肯定也是一樣的,並且此時的報文傳輸可以不用路由。如果不在一個網路里,那麼兩個用戶的network address不會是一樣的,但是 subnet mask可以是一樣,也可以是不一樣,畢竟它只是決定了IP address的左側多少位是network address。此時的報文傳輸為: 用戶所在的兩個子網外用network address來走路由協議,子網內用user address,此時不用路由。
個人理解子網掩碼就是為了把一個子網劃分為多個子網用的
當ip地址為192.168.1.199時,如果子網掩碼為26位的話就相當於把192.168.1.0這個網段劃分了子網,把192.168.1.199和255.255.255.192轉化成二進位做「與」運算,就得出了子網號為192.168.1.192,很明顯和192.168.1.199/24不是同一個子網,因為192.168.1.199與255.255.255.0做與運算得到的網路號是192.168.1.0在同一個區域網中出現這兩個子網用路由器就可以通信了
非計算機網路專業,特別喜歡這個,關注@車小胖很久了,希望得到指正,么么噠敬上VLSM 可變長子網掩碼。 子網掩碼作用是確定網路位的,還有計算網路地址。最後說一句自己實驗行不行很容易。
掩碼(mask)在計算機裡面,一般都是用來操作二進位串的某位、某些位,或判斷某位上是0還是1的。至於子網嘛,根據其字面含義,結合ABCD這四類網路的劃分,子網就是對這四類網路的子網路(好像跟沒說似的)。那劃分標準呢?就是靠掩碼,也就是子網掩碼。根據子網掩碼,一般都是連續的1和連續的0組成的。根據掩碼的語義或規則,它不就是把ip中,從高位往低位「數」N位(N為掩碼中連續1的個數),這N位就是子網路的標識了。說簡單點,就是把網路再細分的一種手段。
ip地址分網路位和主機位,初學者理解掩碼最好從二進位角度,其實就是用來表示ip地址從左起有多少位是網路位,把ip地址和掩碼轉換成二進位按位進行與操作就得到網路地址,想知道兩個ip地址是不是在一個網段,分別各自與掩碼進行與操作,結果一樣就在同一網段,不一樣就在不同網段
把所有點分十進位,轉換成2進位。
IP地址和子網掩碼都是一個子網掩碼都是一個32位的二進位數。
子網掩碼有個非常明顯的特徵,就是前面是連續的1,後面是連續的0。一定是這樣。
然後和IP地址的二進位數對齊。1對應的就是網路號段,0對應的就是網內主機號段。
光看我的答案沒有用,再找本書多看幾次。輔助理解減少發送範圍用的,目的是為了降低網路損耗。
不請自來,這東西,如果有台switch你可以自己去動動手練習練習就都能明白了。沒有條件,又看不明白破書上一堆堆的術語,那麼最好找視頻教學,就入門來說要比視頻容易理解一些
推薦閱讀:
※http, keepalive用來複用連接,這樣不就是串列的了么,瀏覽器會並行的多個請求發出,keepalive怎麼體現作用?
※NoHttp 與 OKHttp 異同?以及兩者的發展前景?
※如何理解華為公有雲中提到的全動態BGP?
※小米路由器是外包做的嗎?