iT邦幫忙

0

有關IP問題!!!!(如何換算IP子遮罩)

ip

各位先知您好
小弟問此問題會有些模糊,但卻是我不懂的地方
(IP網段的算法跟子網路遮罩算法,就是如果公司給妳一個網段~請算出它可用IP是如何和遮罩)應該是這樣說吧!!
我看網路的算法我都不太了解~是否可請您們教教我(例子我不會舉,是否可以幫我)

42
鐵殼心
iT邦高手 1 級 ‧ 2008-08-13 00:28:13
最佳解答

這一題的答案很長, 直接轉貼過來好了

1-3子網路遮罩的目的

因為IP位址分為主機和網路號碼,所以在Internet的網路上找尋電腦時,我們需要先找到網路號碼,然後在子網路中找到目的地的主機,所以電腦IP位址的設定除了IP位址外,另一個重要的號碼就是子網路遮罩。

子網路遮罩的用途

「子網路遮罩」(Subnet Mask)是一個固定的值,在電腦的定址計算中是使用子網路遮罩的值將IP位址分為網路號碼和主機號碼,子網路遮罩的值依網路等級的預設值,如下所示:

Class A:255.0.0.0

Class B:255.255.0.0

Class C:255.255.255.0

簡單的說255的二進位值能夠遮掉IP位址中的網路號碼,經過運算後剩下的就是主機號碼,如此可以識別IP位址所屬的網路。

網路分割

因為Internet的成長太為快速,目前的IP位址已經嚴重的不足,Class C網路的電腦數目的一般中小型公司來說依然太多,對於更小的網路,我們需要進一步的將Class C進行分割,此時靠的就是子網路遮罩。

如果想將Class C網路再向下進行分割,預設子網路遮罩255.255.255.0的最後一個Octet就不會是零,因為網路中的主機數目小於255,此時需要一個位元一個位元來處理,二進位值如下所示:

11111111 11111111 11111111 00000000

上述的子網路遮罩最後一串零在與IP位址運算後,就可以得到主機號碼,當進一步分割後的子網路遮罩,如下示:

二進位 , 十進位 , IP數目

11111111 11111111 11111111 11000000 , 255.255.255.192 , 64

11111111 11111111 11111111 11100000 , 255.255.255.224 , 32

11111111 11111111 11111111 11110000 , 255.255.255.240 , 16

11111111 11111111 11111111 11111000 , 255.255.255.248 , 8

11111111 11111111 11111111 11111100 , 255.255.255.252 , 4

上述最後一個Octet的位元組1代表分割,其分割的方式為2的次方,可以將255個IP位址分為1/4、1/8、1/32、1/64個IP位址,此時上述子網路遮罩中位元值0就能夠運算主機號碼。

不過上述每一個子網路,其IP位址範圍的,第一個和最後一個IP位址是保留作為特殊的用途(第一個位址代表的是Network ID, 最後一個位址代表的是廣播位址),所以實際上可以分配的IP位址為62、30、14、6和2,分別屬於2、6、14、30、62個更小的Class C網路。

舉一個例子,以255.255.255.224的子網路遮罩來說,可以分配的IP位址有30個,6個子網路遮罩的IP位址範圍,其最後一個Octet如下表所表:

二進位 , 十進位

00100001~00111110 , 33~62

01000001~01011110 , 65~94

01100001~01111110 , 97~126

10000001~10011110 , 129~158

10100001~10111110 , 161~190

11000001~11011110 , 193~222

以下這個網址寫的也很詳細
http://www.freebsd.org.hk/html/solaris8/netmask.html

40
kaiin323
iT邦高手 1 級 ‧ 2008-08-13 07:43:56

老實說我覺得上面兩個網站寫的還是有點簡略,
不是很懂的人,看完還是霧煞煞

建議你一定要到下面這個網站去看,內容詳細且口語化淺顯易懂
看完保證功力大增!
http://www.study-area.org/network/network\_ip\_addr.htm

下面節錄一段跟題目比較相關的答案,
如果看不懂這段內容的話,那你就一定得把整個網頁K一次囉~

===============================
為了更好的理解 Sub-net Mask 的功用﹐我們還是以剛才的 IP (139.175.152.254) 為例子,再來一翻推算﹕

我們知道它在預設情形之下的 Net Mask 是﹕
11111111.11111111.00000000.00000000

如果我們借用了 Host ID 的其中三個 bit 來做 Sub-net ID 的話﹐將原來的 Net Mask 和 Sub-net Mask 做一個 OR 的運算﹕
11111111.11111111.00000000.00000000
OR
00000000.00000000.11100000.00000000
得出﹕
11111111.11111111.11100000.00000000

換成十進位後﹐實際的 Net Mask 將會變成這樣﹕255.255.224.0 。

因為借用的 ID 只有 3 個 bit﹐所以我們可以將原來的 B Class 網路切割為 8 個子網路﹐而它們的 Sub-net ID 則分別從 000 到 111 這 8 個組合﹐再加上原來的 Net ID (10001011.10101111.00000000.00000000)﹐各子網路的實際 Net ID 就成了﹕

10001011.10101111.00000000.00000000(139.175.0.0)
10001011.10101111.00100000.00000000(139.175.32.0)
10001011.10101111.01000000.00000000(139.175.64.0)
10001011.10101111.01100000.00000000(139.175.96.0)
10001011.10101111.10000000.00000000(139.175.128.0)
10001011.10101111.10100000.00000000(139.175.160.0)
10001011.10101111.11000000.00000000(139.175.192.0)
10001011.10101111.11100000.00000000(139.175.224.0)

這時候﹐本來是 16 個 bit 的 Host ID 只剩下 13 個 bit 了﹐也就是說﹕在每個子網路裡面﹐最多只能有 2^13 = 8,192 - 2 = 8,190 台主機﹐而它們可分配的號碼分別由
00000.00000001 到
11111.11111110 之間。

然而,我們並不能簡單的將它以十進位的 0.1 到 31.254 這樣表示﹐因為我們在表示一個完整的 IP 必需是 4 個完整的 Octet ,因此我們還得與各個不同的 Sub-net ID 再相加一起才能得出最終的 IP 號碼。例如﹕

在 Sub-net ID 001 之下的主機號碼﹐將會是從
00100000.00000001 到
00111111.11111110 之間﹐
亦即是﹕從 32.1 到 63.254 之間﹐
整個 IP 位址則是﹕從 139.175.32.1 到 139.175.63.254 之間。

同樣的,在 Sub-net ID 100 之下的主機號碼﹐將會是從
10000000.00000001 到
10011111.11111110 之間﹐
亦即是﹕從 128.1 到 159.254 之間﹐
整個IP位址則是﹕從 139.175.128.1 到 139.175.159.254 之間。

明白了﹖還是請您自己再動手算算在 110 這個 Sub-net ID 之下的主機號碼範圍是多少﹖還有這個子網的 Net_ID 和廣播位址分別是什麼﹖

如果您得出來的主機 IP 不是 139.175.192.1 到 139.175.223.254 之間﹐那麼您需要重新溫習前面所學﹐確定每一個概念都清楚了才繼續。否則您只會更混亂(記住:我已經在這裡警告過您了)。

鐵殼心 iT邦高手 1 級 ‧ 2008-08-13 15:57:39 檢舉

感謝指教
study-area.org裡面的東西也是不少的

18
chen53
iT邦新手 3 級 ‧ 2008-08-13 10:59:56

研讀相關資料搞懂他最好,但不幸還沒搞懂時,就要使用,請參考下列網址
http://www.subnetmask.info/
他可以幫你計算

我要發表回答

立即登入回答