資安筆記 - 區域網路與網際網路

資安筆記 - 區域網路與網際網路

白龍 Lv3

區域網路的介紹

所謂的區域網路指的就是常常聽到的內網,VLAN,具體的功能就是讓使用者只能在一個限制的網路中使特定的IP或服務

區域網路中遇到的問題

全部接在一台Switch上

在一個區域網路中也會有收發封包的協定存在,畢竟區域網路就是用來傳送資料的,不過只是在一個區域中而已,但是在傳送這些資料也會有不同的方式,請看表

  • 單播封包-已知目的 | 直接傳送到目的地
  • 單播封包-未知目的/未連線過 | Flooding(廣播行為) 到每一個設備
  • 廣播封包 → 傳送到每個 Port
  • 多播封包 → 傳送到每個 Port

甚麼是 Flooding

其實就是廣播的意思,但是我們之前有提到說廣播的Mac位置是FF:FF:FF:FF:FF:FF,但是Flooding是只說你指定了一個這個區域網中沒有紀錄的Mac位置,這時候機器就會單獨發送到每一個裝置中去問

其實這個跟多播封包的概念也是相同的

頻寬浪費問題

這個問題較多的原因是因為就是有人一直發送廣播/多播的封包,這樣這個區域網中的Switch就會一直處理這些封包到你的裝置中,就會造成整體網路性能下降

常見導致原因

  • 廣播封包:跟我沒有關係但是我也收 ( ARP、DHCP )
  • 多播封包:我不是那一群但是我也收 ( 多點視訊會議 ( Multipoint videoconferencing )、IPTV… )

安全性問題

在一個公司必定會有許多不同的部門,例如經濟部門和服務部門,身為一間公司的老闆你一定不希望服務台可以看到公司的經濟部門的後台網站,因為這樣就可以看到經濟部門的私密資訊。剛剛所說的就是一個區域網路的安全問題,在更具體一點還有這些問題

  • 不同服務需分開,不可被竊聽
    VoIP、E-Mail、視訊會議…
  • 某些網路應該獨立,不可以連到公司內部
    免費網路、訪客網路、功能測試網路…

那想要解決這些問題就是在你的公司中劃分不同的網路(VLAN),共有兩種方式可以解決

  1. 買很多台switch,每個部門一台自己的switch
    對,但是假設你今天有可以能20個部門,那你就要花20台switch的金錢在上面
  2. 買支持VLAN劃分區域網路的Switch
    這個問題就是假設你一個部門需要24個Port,那你就要去找一個支援24Port的Switch,或著是接很多台Switch

為何Switch可以解決問題

Switch其實就一個處理網路封包的中心,所以當很多個設備都接在一台Switch中,這些設備就只能經過這台Switch處理網路封包,不會與外面的網路連線。

/那有些Switch本身就支援在自己的系統中模擬多台Switch,如果你買這類型的Switch就等同於你有很多台Switch可以分割你的網路/

虛擬區域網路

講了這麼多,虛擬區域網路還沒有好好說,其實區域網路就是一個在特定範圍的小網路世界,在這個世界中你可以架設你自己的網站、服務、API等,要訪問這些服務的人只能在你的個世界中使用,並且你也可以自由的接上自己的服務或是關閉服務

同時在這個世界中你可以再去分割多個空間,並且這些分割出來的空間不會互相干擾,就像是VLAN1(空間一)的其中一個設備廣播訊息時(發送廣播封包),VLAN2(空間二)的設備因為在不同的網路,所以不會接收到VLAN1(空間一)的廣播訊號,總結來說要強調的就是這兩個VLAN(空間)不會互相接收訊息

  • 不同Switch,相同LAN

剛剛有提到可以買一台支持劃分VLAN的Switch,但是假設你在劃分LAN的Switch接口不夠時想要使定二台Switch來延伸你的區域網路時,你要如何讓兩台Switch也可以互通一個LAN,把兩個VLAN可以同步

# 如果剛剛說的有點抽象,其實就是這個意思

lan preview

沒錯,你只要有一條線可以連接兩個Switch在一起就可以讓兩台Switch互通了,當然不是直接插上去就可以了,還是要設定你的Lan才行

這條互通線路的名稱

這條互通線路的名稱叫做 Trunk Port,用於連接兩個Switch Port的線

區域網路的表頭

下面的圖片是一個封包在區域網路中的格式,最重要的其實藍色的部分 802.1Q,這個Header代表的是在一個區域網路中用來辨識這個封包是來自哪一個VLAN的資訊,這邊就一個一個介紹

  • TPID : 區域網路
    用來表示這是一個有使用 802.1Q 的封包 ,也表示這是一個區域網路的封包
  • PCP : 權重
    用來表示這個封包需要被處理的優先度0最低,7最高
  • CFI : MAC碼
    用來查看這是否是一個標準的MAC碼,還是非標準的MAC碼
  • VID : 區域網路ID
    用來告訴交換機說我這個封包要到哪一區域網路中

header

Tag是甚麼

其實就是用來分辨這個封包是否來自一般的乙太網路,也就是對外世界的網路封包

  • 有Tag封包
    表示這個封包是一個來自內網/VLAN的封包,封包經過交換機時會處理這個封包應該發送到哪一個網路中

  • 無Tag封包
    就是一般的封包,交換機不會特別去處理這個封包

設備可否辨識tag

  • 終端設備(如集線器、普通交換機、電腦、手機等)大多無法辨識或處理 VLAN Tag,因此它們不會貼上或移除標籤。

  • 網路設備(如路由器、智慧型交換機等)可以辨識並處理 VLAN Tag。它們能夠判斷封包屬於哪個 VLAN,決定應該發送到哪個端口,並根據需要貼上或移除 Tag。根據封包的目標 VLAN,它們可能加上或移除 Tag 來進行封包的傳送。

區域網路需要知道的詞語

  • VLAN
    就是一個被區域化的網路
    網路設備中可規劃數個 VLAN ( 通常有預設 VLAN 1,不建議修改與刪除 )
    每個 VLAN 必須指定一個 VID ( 0 ~ 4094 ),有些可另設名稱、描述

  • VID
    一個區域網路中的Tag/標示,就是一個封包在網路中傳送時的VLAN標示,表示封包應該傳送到哪個VLAN中

  • PVID
    使用IP的Port去區劃分網路,可以設定一個IP中不同的PORT指向一個VLAN,可能Port:10是VLAN1,Prot:20是VLAN2

  • Trunk Port (tagged)
    剛剛上方有提到,就是兩個Switch中有一個線路相連,把相同的VLAN連線到一起,所以那當S1想要傳送資訊給S2時,就需要設置一個Trunk Port讓資料可以傳輸到另一個交換機
    # S1 = Switch 1 / S2 = Switch 2

  • Access Port (untagges)
    這其實就是一般網路,剛剛有說道VLAN 802.1Q表頭的部分,其實差別就是他沒有802.1Q的標籤,所以對於裝置來講就是一個單純的網路,不需要處理我這個封包應該傳送到哪,就是當一個好小孩就行了,負責處理的都是Switch就可以

  • Hybird Port (hybird link)
    這個Port其實就是 Trunk Port + Access Port,為什麼這麼說呢,因為他同時可以發送有Tag的Port和沒有Tag的Port,具體的方式就是直接偵測當前處理的封包中是否有tag

    • 如果有:就直接發送到對應的VLAN中
    • 如果沒有:就發送到你預設的LAN中
  • Tunnel Port
    這個Port就是封包透過的 QinQ VLAN header 顯示並傳送封包,不要問我QinQ是甚麼因為我也不知道
    但是我知道這個Port可以讓連線遠端的Port,甚麼意思呢,就是假設你今天在台灣有一個VLAN,你在日本也有一個VLAN,你今天想要把兩個VLAN連線到一起你不可能直接拉一條Hybird線到日本,這時候你就要使用Tunnel Port來實現魔法了
    # 我只知道他可以這樣用,我不知道原理所以別問我

如何設定區域網路

首先一定需要一台Switch並且要支援802.1Q,再來就是要把功能打開

接下來就是要新增你自己的VLAN,具體要設定的是

  • VID
  • VLAN 名稱
  • VLAN 方法
  • 最後就是你的設備接上去就完成了

如果沒有錢買802.1Q的交換機

沒辦法買到802.1Q的交換機其實你也可以買很多台一般的Switch,因為你只是要劃分不同的網路區塊而已,支援802.1Q的設備就只是可以在一台機器裡面模擬多個交換機,最終的結果都是一樣的

分割區域網路

共有4種

  • Port base(常用)
    使用Port去分辨不同的Port應該到哪一個VLAN,EX:

    • VLAN1 = 0, 1, 2
    • VLAN2 = 3, 4, 5
  • MAC base (常用)
    使用MAC去分辨不同的MAC應該在哪一個VLAN位置,EX:

    • VLAN1 = AA:AA… AA:AB…
    • VLAN2 = AA:AC… AA:AD….
  • Subnet base (有用)
    使用不同的IP去分辨不同的VLAN,EX:

    • VLAN1 = 192.168.0.110/24
    • VLAN2 = 192.168.0.111/24
  • Layer3 Protocol base (我沒看過)
    使用不同的連線模式去分辨不同的VLAN,EX:

    • VLAN1 = IP連線
    • VLAN2 = IPX連線

體驗設定VLAN

Switch

Router

用完之後其實超做都相對簡單,就只要創建和設定就完成了,設定時也會發現原本不知道在做甚麼的選項都看得懂了,所以也不要把VLAN想像的這麼複雜可怕

數字系統

其實這單元就是在講不同的進位方式,這個主題在網路的教學有很多,不多說我們就開始吧

最常見的進制

  • 10進位

就是我們看到的數字,我應該不用多說

  • 60進位

就是時鐘所用的進位單位,每60秒進位成1分鐘,60分鐘變成1小時

  • 2進位

這就是電腦在儲存資料所用的進位單位,只會有0和1
# 也可看成高電位為1,低電位為0

  • 16進位

這個進位在生活中最常見就是色彩邊碼了,#ffffff就是白色,也可以用0x123456

  • 8進位

這個進位在現代其實已經很少見到了,我也拿不出甚麼舉例

進會沒有邊界

我上面列的並不是所有的進位,因為進位是可以自己去定義的,假設我今天想要一個4進位,那就是如果數字到達4時就要進位,以下是一個簡單的例子

  • 四進位表格
加上去 +1 +2 +3 +4 +5 +6 +7 +8
10進位 1 2 3 4 5 6 7 8
4進位 1 2 3 10 11 12 13 20

可以看到就是當個位數遇到4時,就要進位

進位的換算

10進位轉其他進位

假設我們要10進位轉換為任意一個進位,其實很簡單我直接用舉例的

假設我們要把 10進位的13 轉換為 2進位

我們就只要一直把這個數字除以2直到0就可以得到答案了,看不懂那就看圖吧

算式 結果 餘數
13/2 6 1
6/2 3 0
3/2 1 1
1/2 0 1

接下來在把餘數從下面網上看,就是答案了 -> 1101

那假設你今天想任意的其他進位呢,很簡單你就只要把除以2(因目前為2進位),改為除以<你想要的進制>就可以了

要注意

在短除法時一定要除到結果等於0時才算結束

  • 如果要用程式碼解的話就是像這樣
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>

using std::cout;
using std::endl;
using std::string;

string toBinary(int n) {
string r;
while (n != 0) {
r += (n % 2 == 0 ? "0" : "1");
n /= 2;
}
return r;
}

int main() {
int number = 15;

cout << "decimal: " << number << endl;
cout << "binary : " << toBinary(number) << endl;

return EXIT_SUCCESS;
}

其他進位轉10進位

假設你今天想要知道 101101 是多少呢,一樣非常簡單直接用舉例的

  • 2進位表格
位數 5 4 3 2 1 0
數值 1 0 1 1 0 1
算式 1 x 2^5 0 x 2^4 1 x 2^3 1 x 2^2 0 x 2^1 1 x 2^0
結果 32 0 8 4 0 1

現在我們把所有的結果相加就會等於 45 答案就出來了,那我們要如何驗算呢,就直接再用上一個 10轉2進位 的公式就可以了

如果要轉其他的進位也是相同的道理,你只要把 2 變成你想要轉的進位格式就可以解出來了

以程式碼表示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <ctime>
using namespace std;
int twototen(int a)
{
double b = 1;
int d = 0;

while(a != 0)
{
if (a % 10 == 1)
{
d = d + b;
b = b * 2;
a = a / 10;
}
else
{
b = b * 2;
a = a / 10;
}

}
return d;
}

兩進位轉換的快速算法

假設你今天有一個16進位的數值想要轉換成2進位,在沒有學之前可能就是慢慢轉成10再轉換成2,nonono這樣太慢了,我們可以看到,16其實是2的4次方,這表示16進位的一個次代表2進位的4個字(A = 10 = 1010),所以假設我們有一個16進位是 1D ,我們先看這10進位的數值 1x16^1 + 13*16^0 = 16 + 13 = 29,轉換為2進位就是 11101

那我們把 1D 換成 兩個二進位就是

16進位數 1 D
10進位數 1 13
2進位數 0001 1101

現在我們把兩個2進位拼接起來就變成 00011101 ,再把前面無用的0去掉就變成 -> 11101

是不是超酷的,一樣的答案欸,(我是這麼覺得啦)

網際網路

前言簡介

在之前有提到過IP數量不足的問題,現在就是要更深入探討為什麼IP會不足的原因

我們之前都有說道有三種不同的IP Class,每一組可用的Host數量也不一樣(可以參考這個連結),那也因為這個問題就很容易出現IP Address分配不公、使用率不足的問題,例如

一次分配IP就是分配一整段

  • Class A 可分配組數最少,但每組的 Host IP 超級多
  • Class C 可分配組數最多,但每組的 Host IP 超級少

更糟的是都已經知道IP Address 總數不足了,卻有還有人在浪費的問題

  • 理論IP數量不到43億 ( 232=4,294,967,296 ) 的公有IP位址
  • 還需再扣掉 “私有 IP 位址” 數量近 1,800 萬 “多播 IP 位址” 數量近 2.7 億

在這個危機重重的網路世界中,你又要如何申請到符合你的IP種類呢,或要配到那個網段?

  • Class B? 用的完嗎?
  • Class C? 一定夠嗎?

其實現在的你根本不用管這件事情了,因為你根本申請不到了

IP 網路的問題

安全問題

  • 大內網問題
    假設你今天是一間公司的網管並且你的公司有一個Class C的IP,並且你的公司在不同地區都有很多主機,但是問題是這些主機都連線到同一個IP,這表示你在任何一台擁有相同IP的主機上都可以直接連線到你的個伺服器中,增加伺服器被入侵時整的內網都會被攻擊的風險

  • 網路塞車問題
    還有一個問題是因為你今天主機太多了,當你的使用者在發送一個廣播封包時就會跑到所有的IP中,每個伺服器都會接收到用戶發的訊息,或是伺服器在與伺服器溝通時廣播的訊號就會傳送到所有通道中,這樣很容易造成網路塞車

  • 路由列表問題
    因為每次每個裝置發送一個封包時都會有訊號,假設你今天有越來越多的裝置連上這個網路,你的Switch需要記得的MAC碼就會越來越多,當路由器達到一個他能記住的極限時就有可能出現許多網路問題

解方

這個解方其實也很簡單,只要你把在每個地區的主機在設置一個小內網,當這個地區的主機想要與其他主機聯絡時,就只要經過這個地區內的交換機處理封包就可以了,不在需要把廣播封包發送到整的Class網域中

但是假設你今天想要聯絡在外部地區的主機時,就可以透過發送Acccess Port的封包告訴交換機說我這個封包想要傳送到外面,這時候交換機就會自動幫你把封包傳送到外面了

同時這個解方也解決了IP浪費的問題,因為在原本的網路架構中,你必須要給每個主機都分配一IP,我們剛剛有提到不同的Class可以分配的Host數量都不一樣,很有可能你分配到ClassC這樣你的Host就很少,但是你又需要很多的Host端口,又或著是你分配到ClassA,但是你也只有100個主機需要分配IP,但是classA支援你超過1000萬個host

那我們如果使用大內網中的小內網架構,我們只需要把每個不同地區的交換機用一條Trunk Port連線起來,就只需要分配地區數量的IP給每個交換機就可以了

所以使用這個最佳解方的優點有

  • 不會浪費分配的IP數量
  • 讓一個區域內的主機在溝通時,發送出來的封包不會廣播到整個IP中
  • 可以做區域化的管理設定

網路遮罩

# 這是回家候用GPT理解的,請善用AI工具

剛看到網路遮罩時的我也是非常的興奮,因為我真的想要了解它到底是甚麼東西,但是聽完後跟各位一樣我還是沒有很懂只有聽動後面的計算,那在這裡我就重新用已經知道的知識去解釋網路遮罩到底是甚麼吧

網路遮罩的用途

網路遮罩其實就是用來判斷 封包要發送到的位置IP是在內網還是在外網 ,這樣好理解多了對吧(我聽到方向時也是搞不清楚,方向??

那我們在簡報中所提到的方向其實指的就是 網內網的方向網外網的方向,所以到目前為止你只要知到他是一個存在於網路設備上判斷封包傳送路徑的一串判別碼就可以了

但是這串識別碼又是如何檢查要傳輸出去還是傳輸進來呢?

網路設備

剛剛所提到的網路設備其實非常多,包含了你的電腦、交換機、路由器、手機、伺服器等,在這些裝置上因為都需要接發網路封包,因此都需要判斷這個封包應該傳送到內還是外,所以都會使用到網路遮罩

網路遮罩的格式

在理解下一個段落(設備是如何計算這識別碼)前,你需要先理解他的格式是如何運作的…

其實網路遮障跟IPV4的格式一樣,都是四串數字來顯示

  1. 這是網路遮罩的範例 255.255.255.0
  2. 我們在以二進位來看就是 11111111.11111111.11111111.00000000

以二進看:1表示 NetworkID / 0表示 HostID

這兩個是甚麼

  • NetworkID

    如果是你Class C的IP是192.168.50.1,那你的NetworkID就是192.168.50.NetworkID

    如果是你Class A的IP是10.132.189.123,那你的NetworkID就是10.Net.work.ID

  • HostID

    如果是你Class C的IP是192.168.50.1,那你的HostID就是Host.I.D.1

    如果是你Class A的IP是10.132.189.123,那你的HostID就是HostID.132.189.123


所以其實可以看到就只是你當前的IP而已,有可能在內網,也有可能在外網,但是比較常見的是在內網中
這樣再回看上面的應該有懂一點了吧

不同Class的遮罩

不同的Class也會有不同的網路遮罩,這邊不多說了自己判斷就知道了

  • ClassA : 255.0.0.0 /8 1x8,0x8,0x8,0x8

  • ClassB : 255.255.0.0 / 16 1x8,1x8,0x8,0x8

  • ClassC : 255.255.255.0 / 24 1x8,1x8,1x8,0x8

# 後面的 /8,/16,/24 指的是在二進位中1的數量有多少

不過值得注意的是網路遮罩只會存在於你的電腦中,因為它是你電腦個別的辨識碼,別人是無法知道的
# 上面這句我還要再查查

網路遮罩的計算

剛剛有講到網路遮罩的主要目的就是判別這個封包應該丟到內網還是外網,那現在就是要來講說電腦是如何計算遮罩的,上課有提到一個神祕口訣…

神秘口訣:

把我的IP、他的IP,都用我的遮罩做 And 運算

好非常抽象,所以直接用舉例表示

假設你今天的IP是192.168.100.0,你想要傳送的IP是Google(8.8.8.8)

  1. 首先我們先把IP轉成二進位表示
IP IP Address 192.168.100.10 IP Address 8.8.8.8
2進位IP 11000000 10101000 01100100 00001010 00001000 00001000 00001000 00001000
2進位遮罩 11111111 11111111 11111111 00000000 11111111 11111111 11111111 00000000
  1. 接著使用剛才的口訣,我們把每一個數字都做AND運算就會變成
計算 計算結果
我的結果 11000000 10101000 01100100 00000000
GOOGLE的結果 00001000 00001000 00001000 00000000

甚麼事AND運算

這個非常簡單,指的就是 「雙方都有1才是1」 ,沒錯就是這麼簡短,直接用例子舉最快

  • AND閘真值表
輸入一 輸入二 結果
0 0 0
0 1 0
1 0 0
1 1 1

可以發現規律吧,就是兩個輸入都有1時輸出才是1

  1. 判斷NetworkID是否相同
    如果相同:表示對方的設備同樣在這個內網中,不需要把資料傳送到外部網路再傳給對方
    如果不同:表示對方設備在外網,需要透過交換機把你的資料轉發到外面的網路世界

計算網段、廣播位置、可用IP範圍

知道怎麼計算遮罩後,除了理解我和他是否在相同的網路中,還要理解這個算出來的結果還可以表示的其他資訊,假設我們今天算出了一個網段是這樣的

計算 計算結果
IP 11000000 10101000 01100100 00101010
遮罩 11111111 11111111 11111111 00000000

做完and運算後會變成

計算 計算結果
結果 11000000 10101000 01100100 00000000

現在我們可以去分析這個結果。可以看到其實根本就是把IP的Class顯示出來而已,但這邊要看的不是IP的CLass,而是後面00000000的意思

在一個網段中通常Class第一個IP(xxx.xxx.xxx.1)是整個網段的Gateway,也就是用來讓使用者在區域網路中連線到外部的IP,最後一個IP(xxx.xxx.xxx.255)可以回顧之前我們在講廣播的時候,我們是不是有說255就是在整個網路中廣播訊息的IP位置,對這個255就是廣播訊息的位置。那你可能問我那剩下的IP是甚麼,剩下的IP其實就是我們可以使用的IP,可能是用來架設伺服器、開設網頁等

分割子網路

為什麼要分割子網段

分割子網段的用意是為了減少在同一個網段中的廣播數量和提升安全性,具體可以看以下

  • 優點
    減少網路壅塞、提高網路效能:廣播減少、流量分流
    子網路間隔離、增加安全性:減少、降低駭客、病毒所造成的損失…
  • 缺點
    互通需透過各小網段中的閘道器 ( Gateway )
    整體網段有浪費 IP 之實:網段位址 x N、廣播位址 x N、閘道器位址 x N

分割原因

對壓那為甚麼分割就可以提升安全性和減少網路塞車呢,我們用一個例子解釋..

  • 安全性
    假設今天一個公司用的網路都是150.214.10.7/24,今天公司的用戶資料庫伺服器的IP是150.214.10.100,免費公共網路的路由器IP是150.214.10.200。當今天一位駭客到了這家公司樓下的路易莎連上公司的免費公共IP,駭客就可以跟改在電腦中的網段去連線到公司用戶資料庫的伺服器,剛好公司的伺服器又有安全漏洞那這個公司就Gameover了

  • 網路塞車
    一個伺服器中在運行的伺服器數量可能非常多,如果今天這個公司的1000台伺服器都連線在同一個IP中,當每次有伺服器需要發送詢問請求時就會發送到整個IP中,那今天公司又有這麼多的伺服器所以我們可以判斷發送廣播的數量也會很多,進而造成網路塞車

那這樣要如何解決的,最簡單的方法就是申請新的ISP,但是這是不可能的因為可以申請的早就被申請完了,那這時候就只能來分割子網段啦

分割方式與原理

分割子網路的方法很簡單,他的意思就是把原本 1 ~ 255 的NetworkId切分成你想要的段數,並且每個網段都是獨立分開無法連線到其他網段,這樣說可能有點抽象所以下面有張圖片可以參考

原理圖

可以看到原本1 ~ 255的網段被切成了4分,分別為[0 ~ 63 / 64 ~ 127 / 128 ~ 191 / 192 ~ 255],這樣切分完畢後每個網段就不會互相影響了,但是我們不是有說到一個網段的組成需要包含Gateway、廣播和使用者網段嗎,沒錯再被切分的網段中也都有這些但是在哪呢

我們也可以把一個小網段看成一個完整的網段,也就是說網段的第一個是Gateway,最後一個是廣播網段,中間的都是使用者網段,以第最後一段舉例好了,他的Gateway就是207.108.14.192,廣播就是207.108.14.255,這樣你理解了嗎


接下來我們就要來實際的去切割網段了,分割子網段的原理其實就是借用HostId作為可變的NetworkID,甚麼意思呢

  1. 我們先把一般Class C網路遮罩的IP以二進位的方式顯示

11111111.11111111.11111111.00000000

  1. 前面有提到說1就是NetworkID,0就是HostID,這時候NetworkID要跟HostID借用後就會變成

11111111.11111111.11111111.11000000

  1. 可以看到HostId少了兩個0,其實這樣你就完成分割了,很快沒看清楚對吧那就再看一次

看不懂得我們現在就來一一解釋為什麼加入了幾個1就可以成功分割子網路了,我們在之前有個很基本的觀念就是ISP給你的網路IP(NetworkID)你是不可能跟改的對吧,那我們使用分割遮罩的方式就有點像是偽造了一個新的IP出來給電腦,這樣電腦有了這個偽造的新IP後就會把它當成是一個全新獨立的IP,就等於有一個新的IP,但是偽造新IP會有一個副作用

那要如何偽造給電腦的,就是告訴電腦說其實我們的NetworkID是AAAAAAAA.AAAAAAAA.AAAAAAAA.AAoooooo(二進未表示),A的部分是不能更改的因為是NetworkId,那剩下的o就是我們可以改的部分,我們總共剩下6個O所以在二進位六個O的變化數量就是 2^6 (o數量),這就代表在這個偽造的網段中可以用的數量只剩下62個 (扣除Gateway和廣播),這就是偽造(分割)IP的副作用

那你可能會問欸那剩下的192個網段呢,剛剛不是說我們偽造了一個IP給電腦嗎,在這個IP中可以更改的偽造NetworkID就是在AAoooooo中的AA,我們用2進位來看 AA 在二進位中可以有的變化數量就是 2^2 (偽NetworkID數量),這樣我們在把剛剛每一個網段的可用數量乘以4就會出現原本的網段數量了

變化數量是甚麼

就是在二進位中如果有一個一位數 A,它的變化量就是2,因為要嘛是0,要嘛是1,總共也只有這兩種選擇;那今天如果有個二位數 AA,它的變化就有可能是 [00, 01, 10, 11],總共有四總

現在要快速計算有多少變化量就是直接使用公式 <幾進位>^<最高位數>,所以以AA為例,幾進位就是2 (因他是2進位),最高位數就是2(共兩個A),所以可以得出公式 2^2 = 4

偽造IP的真名

偽造IP只是我為了方便寫所以創造出來的名詞,實際上他真正叫做Subnetting,對他就叫做子網段

  • 上方的分割結果表格
可用網段 Gateway 廣播 可用數量
AAAAAAAA.AAAAAAAA.AAAAAAAA.00xxxxxxxx AAA.AAA.AAA.0 AAA.AAA.AAA.63 62
AAAAAAAA.AAAAAAAA.AAAAAAAA.01xxxxxxxx AAA.AAA.AAA.64 AAA.AAA.AAA.127 62
AAAAAAAA.AAAAAAAA.AAAAAAAA.10xxxxxxxx AAA.AAA.AAA.128 AAA.AAA.AAA.191 62
AAAAAAAA.AAAAAAAA.AAAAAAAA.11xxxxxxxx AAA.AAA.AAA.192 AAA.AAA.AAA.255 62

那假如我們需要分割更多呢,同樣也可以分割,但是不幸的是你只能分割 二的平方數量,也就是說只能有2^1~7的分割數量,具體原因要再講解太多,以後你到更高的Level後再回頭想就會懂了,真的想要現在理解可以去學一下數位邏輯


現在可能理解完分割原理後就是講說要如何去分割子網斷了,你可能有看過在一些IP的後方會有一串/8, 16, 24,其實這個就是表示在二進位中NetworkID的數量,例如:

AAAAAAAA.AAAAAAAA.AAAAAAAA.xxxxxxxx

這段IP中共有24個A(networkID),所以這段IP後面的數字就是/24,如果只有16個A,那就是/16

有了這個簡單的觀念後可以想想,那假設我今天是/25呢,欸沒錯那現在的IP就會是這樣

AAAAAAAA.AAAAAAAA.AAAAAAAA.Axxxxxxx

因為現在A的數量就共有25個,所以就是/25

那這個跟計算子網段又有甚麼關西呢,其實可以發現/<數字>其實就可以決定要分割的數量,假設今天是/26就代表子網段的的數量是26-24個,那再把這個數字代入2的幾次方中就可以知到我可以把這個網段分成多少段了,假設今天是/28那分割的網段數量就是2^(28-24)也就是16段,但是當然分割多少段也有一個極限直,為什麼呢你自己去試試看就知道了

接下來可以開始講分割公式了,其實如果你能理解我剛剛講的那其實你基本上已經可以自己計算了,接下也能比較容易懂這個公式在做甚麼

計算前綴長度:8 - Log2( <分割數量> ) + <Class [類別] 的預設前綴長度>

計算每網段HostId數量:2^< 分割數量 | 前綴長度 - Class [類別] 的預設前綴長度 >

計算網段數量: 2^(前綴長度 - Class 的預設前綴長度)

這邊就簡單舉幾個例子

  1. 192.168.100.0/27
  • 前綴長度27
  • 網段數量:2 ^ (27 - 24) = 8
  • 每網段主機數量:2 ^ (32 - 27) - 2 = 30

  1. 172.16.0.0/20
  • 前綴長度20
  • 網段數量:2 ^ (20 - 16) = 16
  • 每網段主機數量:2 ^ (32 - 20) - 2 = 4094

  1. 10.0.0.0/12
  • 前綴長度12
  • 網段數量:2 ^ (12 - 8) = 16
  • 每網段主機數量:2 ^ (32 - 12) - 2 = 1,048,574