回首頁
修改
Mail
FTP

中




2007年11月9日 星期五

[Tcp/ip] 關於Tcp/ip與子網路遮罩 基本概念及個人心得

關於tcp/ip的書真的很多 為了方便記憶
整理一下讓自己以後不用在去重看一次
說穿了就是怕老了 忘記

第一部: IP組成簡介與換算
IPv4協定:
在ipv4協定裡IP位址組成與子網路遮罩都是
32 bits 組成的一組數據,就是 32個0,1組成
因為只有0與1 所以就是以二進位的方式來表示
00000000.00000000.00000000.00000000 >0.0.0.0 十進位
11111111.11111111.11111111.11111111 >255.255.255.255
換算公式2的7次方+2的6次方.....+2的0次方 共八組
公式表:|128|64|32|16|8|4|2|1|
10進位轉2進位:
舉例:172/2=86(為0為最後一個)除不進就是1 除的進就是0 類推.
答: 10101100(第8個0就是第一個除的盡的86)
2進位轉8:這個最簡單直接套公式 (3個位元為一組
11 111 111 =(2+1)(4+2+1)(4+2+1)=377

And邏輯運算原理:1&1=1,1&0、0&1、0&0皆都是0

第二部: IP結構與遮罩簡介
一個IP(Internet Protocol)位址的組成有兩個結構:
網路ID(Network ID) 又有人稱為 [網路編號]
主機ID(Host ID) 又有人稱為[主機編號]
在這兩者之間的分界為:子網路遮罩(Subnet mask)
而子網路遮罩(Subnet mask)又可稱為(netmask)
功用:用來把ip位址分成兩部份
各層次對應表示方式:
Class A=255.0.0.0 (8位元的子網路遮罩)0~127
Class B=255.255.0.0 (16位元) 128~191
Class C=255.255.255.0 (24位元) 192~223
(記住沒有一組對外ip是127開頭的也沒有ip的位址會超過223)切記
127.0.0.0為保留測試用
CIDR(Classless interdomain routing)表示法
先列出網路位址加上一個/在加上子網路遮罩位元數
例:10.0.0.0/8 (網路ID共有8bit)
換算成10進位的遮罩表示方式
就是255.0.0.0 [因為只有第一組有位址所有是8位元]
二進位就是:11111111.00000000.00000000.00000000

接下來要講到子網路的切分
這邊用Class c 來做點示範
假設isp 公司配給我們一組c級網路
使用27位元子網路遮罩來分割205.219.128.0網路
那麼 此公司可使用多少子網路?
以及每個子網路能有多少台主機
解題的方式:當然是用公式來帶比較快
以下也會列出用手算的這樣才能夠深入了解
公式為:2的N次方-2
(-2是因為扣掉0.0.0.0及255.255.255.255)
以205開頭這組ip是Class c 等級
所以netmask是24位元然後以27位元分割
就是24+3=27位元 往右移3個位元 就變成下面所示
27位元子網路遮罩為:
11111111.11111111.11111111.11100000
換成十進位就是:255.255.255.224
224怎麼來的:2的7次方+2的6次方+2的5次方=128+64+32
(可參考以上的對照表 可更快算出來唷)
所以網域表示法就是:
205.219.128.0/27 or
205.219.128.0/255.255.255.224
還記的上面兩個問題吧!
第一個問題是可切成多少子網路?
因為位移了3個位元所以n=3(因為第四組的前3個代表網路id)
其實也可以用27-24=3來帶入N
套用公式:2的3次方-2=6
其實原本可用子網路為8個但減掉000跟111這兩個子網路
所以剩下六個可用子網路

第二個問題是每個子網路最多能有多少台主機(ip)呢?
[算子網路數量與子網路的所有機台公式都是一樣的]
由於往右移了3個位元所以剩下5個可用位元當網路id
套公氏就是:2的5次方-2 = 30
每個子網路裡最多有30個ip位址唷
還有另一種算法是(256/子網路總數)-2
256/8-2=30 這不就ok了!前提要先知道子網路總數
為什麼是256呢? 因為0~255 也要把0算進去ㄚ!

接下來用手動來算
列出所有的二進位(不會轉換請看一開始的解說唷)
|--------十進位表示205.219.128.0----------------------------|
|--network:11001101.11011011.10000000.000 00000  
|------- 十進位表示205.219.128.31---------------------------|
|broadcast:11001101.11011011.10000000.000 11111 
|---------十進位表示255.255.255.224-----------------------|
|--netMask:11111111.11111111.11111111.111 00000
|--------------------------------------------------------------------|
network= 表示第一個ip
Broadcast: 最後一個ip
前面我們有提過,子網路遮罩(netmask)功用:用來把ip位址分成兩部份
所以從上述表格我們可以從第3行netmask的最後面多出來的3位元開始來看(分割)
(記住子網路遮罩切割的範圍通常都在13~29之間唷)但也有例外
往上切上去就變成
(意思就是將子網路遮罩的最後面11100000與要分割的網路ip最後一組00000000)做AND邏輯運算
可得到一組數字00011111換算成十進位就是31也就是廣播位置
00000000 與00011111 兩個分別是205.219.128.0與205.219.128.31
如果用計算的方式就是 255-224=31 就是第一組子網路的broadcast(廣播)
上面有提到計算的方式可算出共有8個子網路及各子網路主機數為30個ip
如果不用公式來算,要怎麼知道共有幾個子網路跟主機數呢?
其實很簡單就用推的方式,由於我們已經算出第一組子網路的ip範圍
那麼扣掉第一組network 及 Broadcast(廣播位址)
能夠分發的ip範圍就是205.219.128.1~205.219.128.30(30組ip就是這麼來的)
好了!我們已經知道每一個子網路的主機數量為30個ip
所以一直往下面推,推到255大概就知道有幾組
其實可以用一個公式來算 這是我自己想的
256/第一個子網路主機數量+2=??
來試算一下
256/(30+2)=8 哇! 共有八個子網路 每個子網路能配到三十組ip

在來一個應用題
假設一個ip位址為168.95.0.0 要切成四個子網路!
那麼子網路的ip範圍及子網路遮罩為多少還有每個子網路的總數量為何?
以上共三個問題 先來解決
1.子網路遮罩問題
代公式:2的N次方=子網路數量 (這邊不用-2 因為已經知道要切4個了!)
(但是還是要知道4-2才是真正可使用的子網路數)
2的2次方=4 所以n=2
所以需要加2bit 於子網路遮罩中
168開頭ip屬Class b (netmask:255.255.0.0)
11111111.11111111.11000000.00000000 =255.255.192.0
上列已經在第三組加上2bit的換算成十進位就是255.255.192.0 解完
2.子網路總數量算法:
2的14次方-2=16382
為何是14? 只要數數上面有幾個0就知道了!0代表網路id
所以數1就是可以算出子網路數量 疑!不信ㄚ!來試看看
位移多出來兩個11所以n=2 2的2次方
3.直接列出來摟
168.95.0.1~168.95.63.254 (63*256+254)=16382
168.95.64.1~168.95.127.254 (127-64*256+254)=16382
168.95.128.1~168.95.191.254 (191-128*256+254)=16382
168.95.192.1~168.95.255.254 (255-192*256+254)=16382
懂了吧!

接下來要為大家介紹一個好用工具
前面為了要理解原理請務必請先用手算一次
在來用工具驗證一下
此套3CIPCalc是由http://www.3com.com/所提供的工具
相信很多人都已經知道
二話不說 來看一下怎麼操作

從上圖可以看到很多資訊
要注意的就是在第一開始IP Address 192.168.0.1
記住最後一碼不能為0 要寫1才能試算(結果都是一樣)
如果子網路有超過兩個 底下有一個Disply subnet 可以秀出所有
介面蠻簡單的 自己玩玩摟!

ps:補充一個問題
192.168.10.100/25 與 192.168.10.200/25 是否在同一個網域內?
通常遇到這個問題不要攪錯題目雖然是同網段但不同網域
一樣是用192.168.10.0來算因為是25分成兩個子網路
分別是
192.168.10.0~192.168.10.127
192.168.10.128~192.168.10.255
所以一個是100與200 位在不同的子網路 所以答案是否定的!

AND的運算:只有雙為1的時候﹐其結果才會是1﹐否則為0
0 AND 0 = 0
1 AND 1 = 1
0 AND 1 = 0

OR運算:只有雙方為0的時候才為0﹐否則都會是1
0 OR 0 = 0
1 OR 1 = 1
0 OR 1 = 1

NOT的運算:凡是經過NOT運算﹐其結果都會相反
NOT 0 = 1
NOT 1 = 0

ps: 這就是切割子網路的一個缺點就是第一段和最後一段會被犧牲掉了
,不過現代技術已經進步了 在Router上下一個指令就可
以用所以理論上來講是頭尾都不能用,不過現在來講是可以
被使用的。但這是比較屬於進階的範圍!


收工!花了一天半的時間

1 回應:

匿名提到... 提到...

版主你好:您的文章非常的實用阿,不知是否可以轉載至小弟的msn space底下呢?!
我會再注明出處滴!