Subnet & CIDR — đọc CIDR cho đúng
CIDR /N là gì, phần mạng vs phần host, cách tính số host, network/broadcast/gateway, và câu hỏi trung tâm 'hai IP có cùng mạng không?'. Đọc thành thạo một dải mạng thực tế — kiến thức nền bắt buộc cho LAN gia đình, mạng văn phòng và cloud VPC.
TL;DR: Ký hiệu CIDR IP/N chia 32 bit địa chỉ thành N bit phần mạng (cố định cho cả subnet) và 32−N bit phần host (thay đổi cho từng máy). Số địa chỉ trong subnet là 2^(32−N); trừ 2 (network + broadcast) ra số host dùng được. Vậy /24 = 256 địa chỉ (254 dùng), /16 = 65.536 (65.534 dùng). Hai IP cùng mạng khi phần mạng (theo /N) trùng nhau — đây là câu hỏi quyết định "gửi thẳng bằng ARP" hay "đưa cho gateway". Đọc 192.168.1.0/24: mạng 192.168.1.0, gateway thường là 192.168.1.1, 254 IP cho host. Đây là kỹ năng nền cho LAN gia đình, mạng văn phòng và cloud VPC.
Bạn mở trang quản trị router nhà mình (hoặc gõ ip addr / ip route trên máy) và thấy mạng LAN được mô tả như sau:
Subnet: 192.168.1.0/24
Gateway: 192.168.1.1
/24 nghĩa là gì? Mạng này chứa được bao nhiêu thiết bị? IP 192.168.1.50 có "thuộc" mạng này không, còn 192.168.2.50 thì sao? Trả lời được những câu này là bạn đã nắm subnet & CIDR — mảnh ghép trung tâm của module, và là thứ khiến mọi cấu hình mạng (router gia đình, LAN văn phòng, cloud VPC) trở nên đọc được.
1. Analogy — Mã vùng số điện thoại
Số điện thoại 024-3825-1234: phần đầu 024 là mã vùng Hà Nội — mọi số trong Hà Nội đều bắt đầu bằng nó; phần sau là số thuê bao riêng. Nhìn mã vùng, bạn biết hai số có cùng tỉnh hay không.
CIDR làm y hệt với IP: /N nói "N bit đầu là mã vùng (phần mạng), phần còn lại là số thuê bao (phần host)".
| Số điện thoại | Địa chỉ IP |
|---|---|
Mã vùng 024 (chung cả tỉnh) | Phần mạng (N bit đầu, chung cả subnet) |
| Số thuê bao riêng | Phần host (32−N bit sau, riêng mỗi máy) |
| Cùng mã vùng = cùng tỉnh | Cùng phần mạng = cùng subnet |
| Độ dài mã vùng | Con số /N |
/N = "có bao nhiêu bit là mã vùng". N càng lớn → phần mạng càng dài → mỗi mạng càng nhỏ (ít host). /24 nhỏ hơn /16 rất nhiều: /24 chứa 256 địa chỉ, /16 chứa 65.536.
2. CIDR /N — phần mạng vs phần host
CIDR (Classless Inter-Domain Routing — định tuyến liên miền không phân lớp, RFC 4632) là cách viết một dải mạng dưới dạng IP/N, trong đó N gọi là prefix (tiền tố) — số bit đầu thuộc phần mạng. Địa chỉ IP có 32 bit; /N cắt nó làm hai phần:
Ví dụ 192.168.1.0/24 — 24 bit mạng cố định, 8 bit host thay đổi
- Phần mạng (N bit đầu): giống nhau cho mọi máy trong subnet — như mã vùng.
- Phần host (32−N bit sau): khác nhau cho từng máy.
/N đôi khi viết dạng subnet mask: số có N bit 1 rồi toàn bit 0. /24 = 255.255.255.0; /16 = 255.255.0.0; /26 = 255.255.255.192. Hai cách viết tương đương.
3. Một subnet chứa bao nhiêu địa chỉ?
Phần host có 32−N bit, nên tổng địa chỉ = 2^(32−N). Trong đó 2 địa chỉ không gán cho host: địa chỉ đầu (network address) và địa chỉ cuối (broadcast). Vậy host dùng được = 2^(32−N) − 2.
| CIDR | Subnet mask | Bit host | Tổng địa chỉ | Host dùng được |
|---|---|---|---|---|
/8 | 255.0.0.0 | 24 | 16.777.216 | 16.777.214 |
/16 | 255.255.0.0 | 16 | 65.536 | 65.534 |
/24 | 255.255.255.0 | 8 | 256 | 254 |
/26 | 255.255.255.192 | 6 | 64 | 62 |
/30 | 255.255.255.252 | 2 | 4 | 2 |
Nhớ mốc: mỗi lần /N tăng 1, mạng nhỏ đi một nửa. /24 = 256, /25 = 128, /26 = 64… Và /24 → /16 là tăng phần host thêm 8 bit = nhân 256 lần số địa chỉ (256 → 65.536).
4. Network, broadcast, gateway — ví dụ 192.168.1.0/24
Cho subnet 192.168.1.0/24 (phần host = 8 bit cuối):
- Network address (host bits = 0):
192.168.1.0— tên của chính subnet, không gán cho máy. - Broadcast (host bits = 1):
192.168.1.255— gửi tới mọi máy trong subnet, không gán cho máy. - Host dùng được:
192.168.1.1→192.168.1.254(254 địa chỉ). - Gateway (quy ước, không bắt buộc): thường là địa chỉ host đầu
192.168.1.1— router để ra mạng khác.
Đây chính là lý do router nhà bạn hay ở 192.168.1.1, và gateway của mạng văn phòng thường ở 10.0.0.1: quy ước lấy host đầu tiên của subnet làm cửa ngõ.
5. Câu hỏi trung tâm — "Hai IP có cùng mạng không?"
Đây là điều quan trọng nhất của cả module. Để biết hai IP có cùng subnet không, so phần mạng của chúng (che đi phần host theo /N):
- Dưới
/24:192.168.1.50và192.168.1.200→ phần mạng đều là192.168.1→ cùng mạng. Máy gửi thẳng bằng ARP (bài trước). - Dưới
/26(host = 6 bit → mỗi block 64 địa chỉ:.0–.63,.64–.127,.128–.191,.192–.255):192.168.1.50ở block.0–.63, còn192.168.1.200ở block.192–.255→ khác mạng. Máy không ARP đích mà gửi tới gateway.
Cùng 192.168.1.x mà dưới /26 lại là khác subnet. Chính /N — không phải mấy octet đầu trông giống nhau — quyết định ranh giới. Đây là nguồn lỗi định tuyến rất hay gặp.
Quy tắc gói lại: cùng mạng → gửi thẳng (ARP); khác mạng → đưa cho default gateway. Subnet/CIDR chính là công cụ trả lời "cùng hay khác".
6. Đọc một dải mạng thực tế
Giờ áp tất cả vào dải mạng LAN gia đình ở đầu bài — 192.168.1.0/24 với gateway 192.168.1.1. Ghép từng mảnh:
Subnet: 192.168.1.0/24
Gateway: 192.168.1.1
/24→ phần mạng 24 bit (192.168.1), phần host 8 bit →2^8= 256 địa chỉ, 254 host dùng được (trừ network + broadcast).- Network address:
192.168.1.0(host bits = 0 — tên của chính subnet, không gán cho máy). - Gateway:
192.168.1.1(host đầu — cửa ngõ ra mạng khác, theo quy ước lấy.1). - Host dùng được:
192.168.1.2→192.168.1.254(router thường tự cấp dần qua DHCP cho điện thoại, laptop, TV…). - Broadcast:
192.168.1.255(host bits = 1 — gửi tới mọi máy trong subnet).
Hai máy 192.168.1.50 và 192.168.1.80 cùng /24 → cùng mạng → nói chuyện trực tiếp trong LAN (qua switch, bằng ARP). Một máy muốn ra Internet → đích khác mạng → gửi tới gateway 192.168.1.1 → router NAT ra ngoài. Toàn bộ là subnet logic bạn vừa học, đọc thẳng từ cấu hình thật.
7. Pitfall — hiểu nhầm thường gặp
❌ Nhầm 1: "/24 với /16 gần như nhau."
✅ Lệch 256 lần: /24 = 256 địa chỉ, /16 = 65.536. Đặt nhầm prefix khiến mạng quá nhỏ (hết IP) hoặc quá lớn (lãng phí, khó quản lý).
❌ Nhầm 2: "Mọi địa chỉ trong subnet đều gán được cho máy."
✅ Hai địa chỉ luôn bị giữ: network address (host bits = 0) và broadcast (host bits = 1). /24 có 256 địa chỉ nhưng chỉ 254 host dùng được.
❌ Nhầm 3: "Cùng 192.168.1.x là chắc chắn cùng mạng."
✅ Còn tuỳ /N. Dưới /26, 192.168.1.50 và 192.168.1.200 khác subnet. Luôn nhìn prefix, đừng đoán theo octet.
❌ Nhầm 4: "Subnet mask và CIDR là hai thứ khác nhau."
✅ Chúng tương đương: 255.255.255.0 ⇔ /24. CIDR chỉ là cách viết gọn số bit 1 trong mask.
8. 📚 Deep Dive — tài liệu gốc
Đọc khi muốn tới gốc CIDR:
- RFC 4632 — Classless Inter-Domain Routing (CIDR) — định nghĩa ký hiệu
/Nvà cách phân bổ địa chỉ không theo lớp. - RFC 1878 — Variable Length Subnet Table — bảng tra subnet mask ↔ prefix.
Ghi chú: CIDR thay cho hệ "class A/B/C" cũ. Khi đọc tài liệu cũ thấy "lớp C", hãy quy về tư duy /N — linh hoạt và đúng với thực tế hôm nay. Công cụ ipcalc <IP>/<N> tính sẵn network/broadcast/range cho bạn.
9. Tóm tắt
- CIDR
IP/N: N bit đầu = phần mạng (cố định cả subnet), 32−N bit sau = phần host (riêng mỗi máy). Tương đương subnet mask (/24⇔255.255.255.0). - Số địa chỉ =
2^(32−N); host dùng được = trừ 2 (network + broadcast)./24= 254,/16= 65.534. - Mỗi subnet có network address (host=0), broadcast (host=1), và quy ước gateway = host đầu (
.1). - Cùng mạng ⇔ phần mạng (theo
/N) trùng → gửi thẳng bằng ARP; khác mạng → đưa cho gateway. Cùng dải IP chưa chắc cùng mạng — phải xét/N. 192.168.1.0/24: mạng192.168.1.0, gateway192.168.1.1, 254 IP host; máy cùng/24nói chuyện trực tiếp, ra ngoài qua gateway + NAT.- Đây là kỹ năng nền đọc mọi cấu hình mạng thực tế: LAN gia đình, mạng văn phòng, và cloud VPC.
10. Tự kiểm tra
Q1Trong CIDR `IP/N`, con số N nói lên điều gì, và vì sao N càng lớn thì mạng càng nhỏ?▸
32−N bit là phần host. N càng lớn → phần mạng chiếm nhiều bit hơn → phần host còn ít bit hơn → ít địa chỉ host hơn, tức mạng nhỏ hơn. Mỗi lần N tăng 1, số địa chỉ giảm một nửa.Q2Subnet `/24` chứa bao nhiêu địa chỉ, và bao nhiêu trong số đó gán được cho máy? Vì sao chênh nhau?▸
/24 có phần host 8 bit → 2^8 = 256 địa chỉ. Nhưng chỉ 254 gán được cho host, vì hai địa chỉ bị giữ: network address (toàn bit host = 0, vd 192.168.1.0 — tên của subnet) và broadcast (toàn bit host = 1, vd 192.168.1.255 — gửi tới mọi máy). Quy tắc chung: host dùng được = 2^(32−N) − 2.Q3Hai IP 192.168.1.50 và 192.168.1.200: chúng cùng mạng dưới /24 hay /26? Giải thích.▸
Dưới /24: phần mạng là 192.168.1 cho cả hai → cùng mạng.
Dưới /26: phần host là 6 bit → mỗi block 64 địa chỉ: .0–.63, .64–.127, .128–.191, .192–.255. 192.168.1.50 nằm block .0–.63, còn 192.168.1.200 nằm block .192–.255 → khác mạng.
Bài học: cùng dải octet chưa chắc cùng subnet — phải xét /N.
Q4Vì sao trả lời được 'cùng mạng hay khác mạng' lại quan trọng với cách máy gửi gói tin?▸
Q5Đọc cấu hình LAN nhà bạn — Subnet 192.168.1.0/24, Gateway 192.168.1.1 — cho biết network address, broadcast, số host dùng được, và gateway làm gì.▸
- Network address: 192.168.1.0 (host bits = 0 — tên của subnet, phần mạng 24 bit = 192.168.1).
- Broadcast: 192.168.1.255 (host bits = 1 — gửi tới mọi máy trong subnet).
- Host dùng được: phần host 8 bit →
2^8= 256 địa chỉ, trừ 2 còn 254 (192.168.1.1 đến 192.168.1.254). - Gateway 192.168.1.1: host đầu, là cửa ngõ ra mạng khác — máy gửi gói tới đây khi đích khác subnet.
Hai máy cùng /24 (vd .50 và .80) nói chuyện trực tiếp qua switch bằng ARP; muốn ra Internet thì gửi tới gateway .1.
Q6Subnet mask 255.255.255.0 tương đương CIDR nào, và vì sao?▸
/24. Subnet mask là chuỗi 32 bit gồm các bit 1 (phần mạng) rồi bit 0 (phần host). 255.255.255.0 = ba octet đầu toàn 1 (8+8+8 = 24 bit 1) rồi octet cuối toàn 0 → 24 bit mạng → /24. CIDR chỉ là cách viết gọn "có bao nhiêu bit 1" trong mask.Bài tiếp theo: Routing & default gateway — gói tin nhảy hop thế nào
Bài này có giúp bạn hiểu bản chất không?
Hỏi đáp về bài này
Chưa có câu hỏi
Có gì chưa rõ trong bài? Đặt câu hỏi đầu tiên — câu trả lời từ cộng đồng giúp bạn (và người sau).
Đặt câu hỏi đầu tiên