佛系筆記

緣分到了,文件自然就做好了!

0%

我的網路筆記第一集IP

一、IP 位址的組成與分級

IP 的組成是 32 bits 的數值,也就是由 32 個 0 與 1 組成的一連串數字,不過因為人類對於二進位實在是不怎麼熟悉,所以為了順應人們對於十進位的依賴性,因此就將 32 bits 的 IP 分成四小段,每段含有 8 個 bits ,將 8 個 bits 計算成為十進位,並且每一段中間以小數點隔開,那就成了目前大家所熟悉的 IP 的書寫模樣了。如下所示:

1
2
3
IP 的表示式:
00000000.00000000.00000000.00000000 => 0.0.0.0
11111111.11111111.11111111.11111111 => 255.255.255.255

所以 IP 最小可以由 0.0.0.0 一直到 255.255.255.255,但在這一串數字中,其實還可以分為兩個部分,主要分為 Net_ID ( 網域號碼 )與 Host_ID ( 主機號碼 ) 兩部份,我們先以 192.168.0.0 ~ 192.168.0.255 這個 Class C 的網域當作例子來說明好了

在下面的範例當中,前面三組數字 ( 192.168.0 ) 就是網域號碼,最後面一組數字則稱為主機號碼

1
2
3
4
192.168.0.0~192.168.0.255 這個 Class C 的說明:
11000000.10101000.00000000.00000000
11000000.10101000.00000000.11111111
|----------Net_ID---------|--host--|

PS:上面例子當中的 192.168.0.0, 192.168.0.1, 192.168.0.2, …., 192.168.0.255 (共 256 個) 這些 IP 就是同一個網域內的 IP 群( 同一個網域也稱為同一個網段 ),請注意,同一個 Net_ID 內,不能具有相同的 Host_ID ,否則就會發生 IP 衝突,可能會造成兩部主機都沒有辦法使用網路的問題

舉例:電話號碼台中區 ( 04 )、台北 ( 02 ) 代表網路邊號,家裡電話號碼123456代表主機邊號台中電話 04-123456 你不能保證在其它區號比如台北 02 裡面沒有 1234567 這個號碼而若台中使用了區號 04 的話,台北就不能使用04而必須改用其它 ( 02 ) 所以整個區號加電話號碼必須是唯一的

Net_ID 與 Host_ID 的限制:

在同一個網段內,Net_ID 是不變的,而 Host_ID 則是不可重複,此外,Host_ID 在二進位的表示法當中,不可同時為 0 也不可同時為 1,因為全為 0 表示整個網段的位址 ( Network IP ),而全為 1 則表示為廣播的位址 ( Broadcast IP ),例如上面的例子當中,192.168.0.0 ( Host_ID 全部為 0 ) 以及 192.168.0.255 ( Host_ID 全部為 1 ) 不可用來作為網段內主機的 IP 設定,也就是說,這個網段內可用來設定主機的 IP 是由 192.168.0.1 到 192.168.0.254,所以在算主機編號時,要扣掉 2 ( 網路本身識別碼和廣播位址 )

IP 的分級:

為了 IP 管理與發放註冊的方便性,InterNIC 將整個 IP 網段分為五種等級, 每種等級的範圍主要與 IP 那 32 bits 數值的前面幾個位元有關,基本定義如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
以二進位說明 Network 第一個數字的定義:
Class A : 0xxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx => NetI_D 的開頭是 0
|--net--|---------host------------|
Class B : 10xxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx => NetI_D 的開頭是 10
|------net-------|------host------|
Class C : 110xxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx => NetI_D 的開頭是 110
|-----------net-----------|-host--|
Class D : 1110xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx => NetI_D 的開頭是 1110
Class E : 1111xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx => NetI_D 的開頭是 1111

五種分級在十進位的表示:
Class A : 0.xx.xx.xx ~ 127.xx.xx.xx
Class B : 128.xx.xx.xx ~ 191.xx.xx.xx
Class C : 192.xx.xx.xx ~ 223.xx.xx.xx
Class D : 224.xx.xx.xx ~ 239.xx.xx.xx
Class E : 240.xx.xx.xx ~ 255.xx.xx.xx

二、IP 的種類

Public IP : 公共 IP ( 外網 ),經由 INTERNIC 所統一規劃的 IP,有這種 IP 才可以連上 Internet

組建一個企業級網路,需要去向電信運營商 ISP 申請一個接入 Internet 的寬頻,同時 ISP 還會給我們分配一個或多個 IP 地址,這些 IP 地址可以供我們企業內部上網,這些 ISP 分配給我們的 IP,就是公共 IP

要將網路連上 Intetnet 的時候,必須先註冊好網路編號 ( Net ID ),如果該 ID 已經被使用了,就必須選用另外的 ID 了,負責 Internet IP 註冊的機構叫做 InterNIC ( Network Information Center ),他們的網路位址是 http://www.internic.net ,他們將 IP 地址分配給註冊並向Internet NIC 提出申請的組織機構,通過它直接訪問網際網路,不過實際上的運作,一般機構或個人是不太可能直接從 InterNIC 上註冊 IP 的,而是經 ISP 分配下來,這些經過合法授權使用的 IP,稱之為公共 IP ( Public IP )

Private IP : 私有 IP 或保留 IP ( 內網 ),不能直接連上 Internet 的 IP,主要用於區域網路內的主機連線規劃

早在 IPv4 規劃的時候就擔心 IP 會有不足的情況,而且為了應付某些企業內部的網路設定,於是就有了私有 IP (Private IP) 的產生了。私有 IP 也分別在 A, B, C 三個 Class 當中各保留一段作為私有 IP 網段,那就是:

1
2
3
Class A:10.0.0.0    - 10.255.255.255
Class B:172.16.0.0 - 172.31.255.255
Class C:192.168.0.0 - 192.168.255.255

特殊的 loopback IP 網段:

Class A 的網域 lo, lo 的網路是當初被用來作為測試作業系統內部迴圈所用的一個網域,同時也能夠提供給系統內部原本就需要使用網路介面的服務 ( daemon ) 所使用

如果你沒有安裝網路卡在的機器上面,但是你又希望可以測試一下在你的機器上面設定的伺服器環境到底可不可以順利運作,這個時候就是利用這個所謂的內部迴圈網路,這個網段在 127.0.0.0/8 這個 Class A,而且預設的主機 ( localhost ) 的 IP 是 127.0.0.1 所以當你啟動了你的 WWW 伺服器,然後在你的主機的 X-Window 上面執行 http://localhost 就可以直接看到你的主頁,所以在算網路編號時,要扣掉 127

三、Netmask、Subnet mask ( 子網路遮罩 )

Netmask:

假設我們設定一個區網,使用的是 Class A ,那麼我們很容易就會想到,有這麼多電腦設定在同一個 Class A 的區段內 ( 256x256x256-2=16777214 ),一千多萬台的廣播,你的網路還能使用嗎,所以我們必須切網段,而切完的網段我們就稱為子網路 ( Netmask ),那如何切網段,就是讓第一個 Host_ID 被拿來作為 Net_ID ,以 Class C 為例網域號碼佔了 24 位元,要將這樣的網域切的更細,所以 Net_ID 就有 25 bits,至於 Host_ID 則減少為 7 bits,在這樣的情況下,原來的一個 Class C 的網域就可以被切分為兩個子網域,而每個子網域就有『 256/2 - 2 = 126 』個可用的 IP 了

Subnet mask ( 子網路遮罩 ):

那到底是什麼參數來達成子網路的切分呢?那就是 Netmask ( 子網路遮罩 ),以 192.168.0.0 ~ 192.168.0.255 這個網域為範例好了,如下所示,這個 IP 網段可以分為 Net_ID 與 Host_ID,既然 Net_ID 是不可變的,那就假設他所佔據的 bits 已經被用光了 (全部為 1),而 Host_ID 是可變的,就將他想成是保留著 (全部為 0),所以, Netmask 的表示就成為:

1
2
3
4
5
6
7
192.168.0.0~192.168.0.255 這個 C Class 的 Netmask 說明
第一個 IP: 11000000.10101000.00000000.00000000
最後一個 : 11000000.10101000.00000000.11111111
|----------Net_ID---------|-host--|
Netmask : 11111111.11111111.11111111.00000000 <= Netmask 二進位
: 255 . 255 . 255 . 0 <= Netmask 十進位
特別注意喔,netmask 也是 32 位元,在數值上,位於 Net_ID 的為 1 而 Host_ID 為 0

轉成十進位的話,A, B, C Class 的 Netmask 表示就成為這樣:

1
2
3
4
Class A, B, C 三個等級的 Netmask 表示方式:
Class A : 11111111.00000000.00000000.00000000 ==> 255. 0. 0. 0
Class B : 11111111.11111111.00000000.00000000 ==> 255.255. 0. 0
Class C : 11111111.11111111.11111111.00000000 ==> 255.255.255. 0

所以說, 192.168.0.0 ~ 192.168.0.255 這個 Class C 的網域中,他的 Netmask 就是 255.255.255.0 再來剛剛提到了當 Host_ID 全部為 0 以及全部為 1 的時後該 IP 是不可以使用的,因為 Host_ID 全部為 0 的時後,表示 IP 是該網段的 Network ,至於全部為 1 的時後就表示該網段最後一個 IP,也稱為 Broadcast ( 廣播位址 ),所以說,在 192.168.0.0 ~ 192.168.0.255 這個 IP 網段裡面的相關網路參數就有:

1
2
3
4
5
Netmask:   255.255.255.0   <==網域定義中,最重要的參數
Network: 192.168.0.0 <==第一個 IP
Broadcast: 192.168.0.255 <==最後一個 IP
可用以設定成為主機的 IP 數:
192.168.0.1 ~ 192.168.0.254

子網路切分:

以 192.168.0.0 ~192.168.0.255 這個情況為例,要分為兩個子網域以 Host_ID 拿來當作 Net_ID,那麼 Net_ID 使用了 25 bits 時,就會如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
原本的 C Class 的 Net_ID 與 Host_ID 的分別
11000000.10101000.00000000.00000000 Network: 192.168.0.0
11000000.10101000.00000000.11111111 Broadcast: 192.168.0.255
|----------Net_ID---------|-host--|

切成兩個子網路之後的 Net_ID 與 Host_ID 為何?
11000000.10101000.00000000.0 0000000 多了一個 Net_ID 了, 為 0 (第一個子網)
11000000.10101000.00000000.1 0000000 多了一個 Net_ID 了, 為 1 (第二個子網)
|----------Net_ID-----------|-host--|

第一個子網路
Network: 11000000.10101000.00000000.0 0000000 192.168.0.0
Broadcast: 11000000.10101000.00000000.0 1111111 192.168.0.127
|----------Net_ID-----------|-host-|
Netmask: 11111111.11111111.11111111.1 0000000 255.255.255.128

第二個子網路
Network: 11000000.10101000.00000000.1 0000000 192.168.0.128
Broadcast: 11000000.10101000.00000000.1 1111111 192.168.0.255
|----------Net_ID-----------|-host-|
Netmask: 11111111.11111111.11111111.1 0000000 255.255.255.128

簡易算法:

/24,24個 1= 11111111.11111111.11111111.00000000 所以是 255.255.252.0

/22,25個 1= 11111111.11111111.11111111.10000000 所以是 255.255.252.128

/24 11111111.11111111.11111111.00000000 所以是 0~255

/25 11111111.11111111.11111111.10000000 25 個 1,切法是 11111111 從第一個 1 二進位開始算所以是 2段.4段.8段.16段.32段.64段.128段,所以 /25 就是 2 段子網路 第一段:255.255.255.0~255.255.255.127、第二段:255.255.255.128~255.255.255.255,已 class c 來看就是 第一段 192.168.1.0~192.168.1.127、第二段 192.168.1.128~192.168.1.255、/26 0~63、64~127、128~191、192~255 依此類推

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
對IP劃分子網後的子網路遮罩
8位的子網路遮罩(/8)子網路遮罩255.0.0.0
9位的子網路遮罩(/9)子網路遮罩255.128.0.0
10位的子網路遮罩(/10)子網路遮罩255.192.0.0
11位的子網路遮罩(/11)子網路遮罩255.224.0.0
12位的子網路遮罩(/12)子網路遮罩255.240.0.0
13位的子網路遮罩(/13)子網路遮罩255.248.0.0
14位的子網路遮罩(/14)子網路遮罩255.252.0.0
15位的子網路遮罩(/15)子網路遮罩255.254.0.0
16位的子網路遮罩(/16)子網路遮罩255.255.0.0
17位的子網路遮罩(/17)子網路遮罩255.255.128.0
18位的子網路遮罩(/18)子網路遮罩255.255.192.0
19位的子網路遮罩(/19)子網路遮罩255.255.224.0
20位的子網路遮罩(/20)子網路遮罩255.255.240.0
21位的子網路遮罩(/21)子網路遮罩255.255.248.0
22位的子網路遮罩(/22)子網路遮罩255.255.252.0
23位的子網路遮罩(/23)子網路遮罩255.255.254.0
24位的子網路遮罩(/24)子網路遮罩255.255.255.0
25位的子網路遮罩(/25)子網路遮罩255.255.255.128
26位的子網路遮罩(/26)子網路遮罩255.255.255.192
27位的子網路遮罩(/27)子網路遮罩255.255.255.224
28位的子網路遮罩(/28)子網路遮罩255.255.255.240
29位的子網路遮罩(/29)子網路遮罩255.255.255.248
30位的子網路遮罩(/30)子網路遮罩255.255.255.252

ex:在一個 Lan 的環境下有兩台server,A Server IP 為 192.168.1.92 B Server IP 為 192.168.1.122 現在進行網段 Vlan 切割試問 submask “最小” 需為多少, 兩台 server 會在同一個網段內?

1
2
3
4
5
6
7
8
看2組IP可以確定是 class c
(192.168.0.0.0-192.168.255.255是calss c)

/24 0~254
/25 0~127、128~254
/26 0~63、64~127、128~191、192~255

92~122 在 64~127 這段裡面,所以最小4段