2012-10-16 75 views
11

說,我有一個子網255.255.255.242,並且我有一個已知的IP在該子網內說192.168.1.101。從子網掩碼計算IP的範圍

現在我計算IP範圍的方式是這樣的:

子網掩碼,發現第一個字節是不是一個255在我的例子,它的第四個八位字符,而其242因此,採取256和242減去,這給了我們14所以我們現在知道,這些網絡中,爲192.168.1.x網絡中,所有的範圍是14所以剛開始他們上市...

192.168.1.0 
192.168.1.14 
192.168.1.28 
....42 
....56 
....70 
....84 
....98 
....112 

在這裏,我們可以停下來。我的地址192.168.1.101屬於.98網絡。 .98包含從192.168.1.98到192.168.1.111的所有IP地址,因爲我們知道192.168.1.112啓動下一個網絡。

我想確認一下,這是否是正確和最簡單的過程。

+0

255.255.255.242是不是一個有效的子網掩碼。這些位不能有空位。 – Joe

+0

好的,你可以幫我把計算喬 –

回答

31

網絡掩碼是一系列的1位。這些位必須是連續的,沒有0間隙。任何使用1位的內容都是網絡的一部分,剩餘的內容對該網絡中的主機分配有效。 255.255.255.224有27個「1」位,這意味着它是一個/ 27網絡。

要計算此權限,您需要將IP轉換爲數字表示。例如,255.255.255.224是11111111 11111111 11111111 11100000是4294967264. 192.168.1.101是3232235877(11000000 10101000 00000001 01100101)。

如果你將IP和按位與網絡掩碼進行AND運算,那就給你網絡地址。這是該範圍的底端:掩碼

11111111 11111111 11111111 11100000 (mask) 
11000000 10101000 00000001 01100101 (ip) 
----------------------------------- 
11000000 10101000 00000001 01100000 = 192.168.1.96 (network address) 

補(按位NOT)爲您提供了範圍的大小:

00000000 00000000 00000000 00011111 = 31 

因此,對於IP範圍爲192.168之間.1.96 - 192.168.1.127。 (127 = 96 + 31)

+1

出色,清晰如水晶。謝謝喬。 –

+0

令人驚訝的細節,非常感謝。但是我想知道是否有一個錯誤:如果我沒有弄錯,.96到.127會產生32個元素。那麼它是.127還是.126? – dvkch

+0

你是對的,因爲基於0的數學。該範圍內有32個有效地址,但0是其中的一個,所以上限爲(n + 31)。 – Joe

0

感謝你們喬和dig_123,但是,喬的答案本來可以用一個/ 28的子網來解釋,而不是所述的/ 27女巫本來就更接近他的例子, 112。

所以,喬如果我明白你的觀點正確的話你說你採取了子網的八位字節;確定增量位值並將其添加到SN字節中的子網值,這應給出範圍並提供網絡,第一主機,最後一個主機和廣播地址的值。那是對的嗎?即在我的例子中,第4個字節是240,增量是16.因爲第4個八位字節的值是96,它落在16位增量的計算範圍內,實際上它落在96和112之間,這是16位的一個範圍,所以我們可以得出結論,我們的網絡地址,這個例子是:

0-15 
15-31 
32-47 
48-63 
64-79 
80-95 
96-111 
112-127 
128 
NW 192.168.1.96 /28 
1st 192.168.1.97 /28 
Last 192.168.1.110 /28 
Bcast 192.168.1.111 /28 
+1

「_...你採用子網劃分的八位字節......」否。八位字節與子網劃分無關。點分十進制符號僅僅是爲了讓人們更容易閱讀。 IPv4地址只是32位整數。你真的需要用二進制進行子網劃分,然後一切都變得有意義並且很容易看到。當涉及到子網劃分時,忘記八位組,否則就是在設置失敗。 –

0

要添加的東西對喬的回答是:如果你想要做的操作更加程序(假定上的位運算符的知識)。

您已經知道只有最後一個數字纔會發生變化,但是對於其他情況,稍後可能會以稍微不同的方式使用此方法。

Number from mask: 224 
Number from IP: 101 

使用例如Python或你最喜歡的計算器程序:

  • Start address byte: 224 & 101 = 96
  • End address byte: (~224 & 255) | 96 = 127

(~224 & 255)只設置一個的每一位,這不是一個在244(也就是最後5位);用96對結果進行或運算,只是複製第一個地址的前3位。

所以,結果是預期的:192.168.1。 - 192.168.1。 。


如果掩碼在最後一個數字之前結束,則有一個非常相似的過程;讓我們做一個例子:

讓我們用255 .0.0作爲面膜,和相同的IP地址(192 .1.101)。

同樣只有一個照顧數,也就是現在的一個排在第二位:168

  • Start address byte: 224 & 168 = 160
  • End address byte: (~224 & 255) | 160 = 191

現在,左邊的數(第一個位置)保持不變(192),右邊的其餘數字範圍從0到255(取決於他們所要求的,也可能是1到254)。

因此,解決辦法是:192 .0.0 - 192 .255.255