Ray Lee | 李宗叡
Learn or Die
Published in
4 min readApr 14, 2024

--

# 前言

紀錄 IPv4 CIDR 的理解,這篇專門針對 CIDR 所需的知識來解說,不會延伸到不相關的

# IP 的劃分

就理論上而言,Public IP 由全球的互聯網號碼分配機構(如美國的互聯網號碼分配局 ARIN,亞洲的互聯網信息中心 APNIC 等)和各國的互聯網服務提供商統一分配和管理

就實務上,這邊簡化說明,實際的情形肯定是複雜得多

會有一台實體 router 來分配不同網段的 IP 給不同的國家,這邊可以簡稱 Country Network,再往下,不同國家內可能有不同的 ISP 業者,甚至是學術機構,大型企業,政府機構,所以在國家層級角度,會有實體 router 來將 Country Network 切成多個 network,並將這些 network 分配給上述的這些機構,這邊簡稱 Organization Network,所以 Organization NetworkCountry Network 的 subnet

這些機構各自又使用實體 router 將自己擁有的 network 做進一步的切分,比如中華電信 (ISP 業者) 將擁有的 Organization Network 切出一個 network 給 台南的民眾 使用,這邊簡稱 Tainan Network,所以 Tainan Network 是 Organization Network 的 subnet

可參考下圖:

從上圖可以看到,不同的 Network 底下都有數量不等的 IP,可以理解為一個 IP 區段,那問題來了,假如有 IP 為 172.168.3.24,那這個 IP 代表的是 network 172.168.3 下面的 24,還是是 network 172.168 下面的 3.24

# NetworkID & HostID

IP 由 NetworkID & HostID 所構成

以 IPv4 來說,共有 255.255.255.255 個,也就是 2³² 個 IP 可以使用

IP 可以代表 Network,比如這些電腦是位於哪一個 network,也可以代表 host,即某台 computer 的位置

subnet mask 被用來區分 NetworkID 與 HostID,比方說 172.168.3.24 的 network 部分是 172.168,而 host 共有 0.0 ~ 255.255,那就可以這樣表示

先是 IP 的表示方式 10101100.10101000.00000011.00011000

subnet mask 跟 IP 的表示方式類似,只要是 network 的部分,都用 1 表示,所以會是

11111111.11111111.00000000.00000000

計算規格是

  • 如果 subnet mask 是 1,而 IP 是 1,則得 1
  • 如果 subnet mask 是 1,而 IP 是 0,則得 1
  • 如果 subnet mask 是 0,而不管 IP 是 0 or 1,都得 0

通過上面的規則即可算出 Network ID 為 10101100.10101000.00000000.00000000,轉為十進制爲 172.168.0.0

# CIDR

所以我們只要知道 subnet mask & IP,我們就可以知道 NetworkID & HostID。但 subnet mask 一大串,所以可以用 CIDR (Classless Inter-Domain Routing) 來表示

承上例子,subnet mask 11111111.11111111.00000000.00000000,可以看到範圍從左邊開始算的佔據了 16 個 bits,所以可以表示為 172.168.0.0/16,這樣就代表了 整個 Network 的區段,172.168.0.0 ~ 172.168.255.255 這個範圍

如果是 172.168.3.24/16,這樣就是強調在 Network 底下的 Host,例如,在 172.168.0.0 ~ 172.168.255.255 這個 Network 中的 Host,IP 為 172.168.3.24

--

--

Ray Lee | 李宗叡
Learn or Die

It's Ray. I do both backend and frontend, but more focus on backend. I like coding, and would like to see the whole picture of a product.