Địa Chỉ IP và Subnet
Ở tầng mạng (tầng 3, Bài 1), mỗi thiết bị được định danh bằng một địa chỉ IP. Hiểu IP và subnet là nền để hiểu định tuyến, NAT, firewall, và gần như mọi thứ còn lại. Bài này tập trung vào IPv4 (vẫn phổ biến nhất) rồi giới thiệu IPv6.
Địa chỉ IPv4 là gì
Một địa chỉ IPv4 là một số 32 bit, viết thành 4 nhóm số thập phân (0–255) ngăn bởi dấu chấm — gọi là "dotted decimal":
192 . 168 . 71 . 168
└┬┘ └┬┘ └┬┘ └┬┘
8 bit 8 bit 8 bit 8 bit = 32 bit tổng cộng
Mỗi nhóm (octet) là 8 bit nên giá trị 0–255. Tổng 32 bit cho khoảng 4,3 tỉ địa chỉ — nghe nhiều nhưng thực ra đã cạn (lý do có IPv6, cuối bài).
Phần mạng và phần host
Đây là ý quan trọng nhất: một địa chỉ IP gồm hai phần — phần xác định mạng (network) và phần xác định thiết bị (host) trong mạng đó. Giống địa chỉ nhà: "Quận 1, đường Lê Lợi" (mạng) + "số nhà 123" (host).
Bao nhiêu bit dành cho phần mạng do subnet mask quyết định. Cách viết hiện đại là CIDR: thêm /N sau IP, nghĩa là N bit đầu là phần mạng.
Ví dụ thật từ một máy Mac trong mạng nhà:
ifconfig en0 | grep inet
inet 192.168.71.168 netmask 0xffffff00 broadcast 192.168.71.255
netmask 0xffffff00 (hệ thập lục phân macOS) = 255.255.255.0 = /24. Diễn giải:
192.168.71.168 /24
┌──────────────┴───────────────┐
24 bit phần mạng | 8 bit phần host
192 . 168 . 71 . 168
└──── mạng ─────┘ └host┘
→ Mọi máy có dạng 192.168.71.X cùng một mạng
→ 8 bit host = 256 địa chỉ, dùng được .1 đến .254 (254 máy)
Hai địa chỉ trong mỗi mạng bị "đặc biệt", không gán cho host:
- Địa chỉ mạng (
192.168.71.0) — đại diện cho cả mạng. - Địa chỉ broadcast (
192.168.71.255) — gửi tới mọi host trong mạng (chính dòngbroadcastở trên).
/24 (256 địa chỉ) là cỡ mạng nhà/văn phòng nhỏ phổ biến nhất. CIDR cho phép cỡ linh hoạt: /16 (65.536 địa chỉ), /30 (4 địa chỉ — hay dùng cho liên kết point-to-point). Số càng nhỏ, mạng càng lớn.
Công cụ ipcalc tính nhanh các thông tin này:
ipcalc 192.168.71.168/24
Nó in ra địa chỉ mạng, broadcast, dải host dùng được — tiện khi chia subnet.
IP riêng và IP công khai
Để ý: máy Mac trên có IP 192.168.71.168, nhưng khi hỏi "IP ra Internet của tôi là gì":
curl https://checkip.amazonaws.com
203.0.113.45
Hai địa chỉ khác hẳn nhau. Vì sao? Có hai loại IP:
- IP riêng (private) — chỉ dùng trong mạng nội bộ (nhà, văn phòng, VPC). Không định tuyến được trên Internet. Theo RFC 1918, ba dải được dành riêng cho mục đích này:
10.0.0.0/8 (10.x.x.x) — mạng lớn
172.16.0.0/12 (172.16–31.x.x) — vừa
192.168.0.0/16 (192.168.x.x) — mạng nhà/nhỏ ← Mac ở đây
- IP công khai (public) — duy nhất toàn cầu, định tuyến được trên Internet. IP
203.0.113.45là của router/nhà mạng, chia sẻ cho cả nhà.
Tất cả thiết bị trong nhà bạn dùng IP riêng (192.168.x.x), nhưng ra Internet thì "núp" sau một IP công khai duy nhất của router. Cơ chế biến đổi giữa hai loại này gọi là NAT — chủ đề Bài 5. (Đây cũng là lý do nhiều thiết bị có thể chia sẻ vài tỉ địa chỉ IPv4 ít ỏi.)
Vài địa chỉ đặc biệt nên biết
127.0.0.1 loopback — chính máy này (localhost)
0.0.0.0 "mọi địa chỉ" — khi dịch vụ bind 0.0.0.0 là nghe trên mọi interface
192.168.x.255 broadcast của mạng đó
169.254.x.x địa chỉ tự gán khi không lấy được IP (dấu hiệu DHCP lỗi)
Nhớ Bài 13 series Linux: dịch vụ bind 127.0.0.1 chỉ truy cập từ chính máy; bind 0.0.0.0 mới cho bên ngoài vào. Giờ bạn hiểu vì sao: 0.0.0.0 nghĩa là mọi interface.
IPv6: vì sao và khác gì
4,3 tỉ địa chỉ IPv4 đã cạn (quá nhiều thiết bị). IPv6 giải quyết bằng địa chỉ 128 bit — số lượng gần như vô hạn. Viết bằng hệ thập lục phân, 8 nhóm ngăn bởi dấu hai chấm:
2001:0db8:85a3:0000:0000:8a2e:0370:7334
(rút gọn: nhóm 0 liên tiếp thay bằng ::, bỏ số 0 đầu)
2001:db8:85a3::8a2e:370:7334
IPv6 đang dần phổ biến (di động, cloud), nhưng IPv4 vẫn ở khắp nơi và là cái bạn gặp nhiều nhất khi học. Khái niệm mạng/host, định tuyến vẫn tương tự; IPv6 thì không cần NAT vì đủ địa chỉ cho mọi thiết bị. Series tập trung IPv4; biết IPv6 tồn tại và vì sao là đủ cho giờ.
Tổng kết
Địa chỉ IPv4 là số 32 bit, gồm phần mạng + phần host, phân chia bởi subnet mask viết theo CIDR (/24 = 24 bit mạng). Mỗi mạng có địa chỉ mạng và broadcast riêng. IP riêng (RFC 1918: 10/8, 172.16/12, 192.168/16) dùng nội bộ; IP công khai định tuyến trên Internet — và máy bạn có cả hai (private trên LAN, public qua router, nhờ NAT). IPv6 (128 bit) ra đời vì IPv4 đã cạn.
Bạn đã biết thiết bị được định danh thế nào. Bài 3 xuống một tầng (tầng liên kết): trong một mạng nội bộ, các máy thực sự tìm và nói chuyện với nhau ra sao — qua MAC và ARP.