以IPv4為主,基本的表示方法是以4個Byte(32bits)來表示每個IP的位址,而通常在每個網段下會有一個網路Id位址跟廣播IP位址是不能夠被一般主機使用的。 一個網域的大小(即可發給電腦的IP數量的範圍)是由subnet mask 來決定的。例如一般最常見到的class C就是最後面的1個Byte全部都是0,而前3個Byte都是1的情況來做 filter(其實就是mask),在這樣的情況下,每一個class C的網段就會有2^8=256個IP 位址,但剛剛說了第一個通常會是給此網域當網路Id,最後一個位址會當廣播用的IP,所以扣掉這兩個位址,可用的就只剩下265-2=254個,這是一般 class C的規則。IP數的範圍取決於一開始subnet設定的大小。
那要怎麼用這些已知的資訊來計算出到底可以用的IP數有多少個呢?這時候還需要再回想關於位元運算的問題,也就是AND, OR這種的位元運算。
通常AND可以想成是「乘法」,而OR可以想成類似「加法」:
| AND | 1 | 0 |
| 1 | 1 | 0 |
| 0 | 0 | 0 |
| OR | 1 | 0 |
| 1 | 1 | 1 |
| 0 | 1 | 0 |
還有利用一個 「~」反向的運算符號就可以算出在某一個範圍內可以被使用的IP數量有多少個,code 在這裡: https://github.com/evelynbaby15/MyWork/blob/master/CountIP.java
另外最近也發現一個不錯的電腦數值系統的基礎教學網站 (Ryan's tutorials)
沒有留言:
張貼留言