Skip to main content

IP Addressing & Subnetting


IPv4 — Địa chỉ IP phiên bản 4

IPv4 là 32-bit số nhị phân, thường viết dạng dotted-decimal (4 octet, mỗi octet 0–255):

192   .  168  .   1   .  100
11000000.10101000.00000001.01100100
└─────────────────────────────────┘
32 bits

Các lớp địa chỉ (Classful — lịch sử)

ClassRangeDefault MaskDùng cho
A1.0.0.0 – 126.255.255.255/8Large enterprise
B128.0.0.0 – 191.255.255.255/16Medium networks
C192.0.0.0 – 223.255.255.255/24Small networks
D224.0.0.0 – 239.255.255.255Multicast
E240.0.0.0 – 255.255.255.255Reserved

Địa chỉ Private (RFC 1918)

Không được route trên Internet public:

RangeCIDRSố địa chỉDùng cho
10.0.0.0 – 10.255.255.25510.0.0.0/816 triệuDatacenter, cloud VPC
172.16.0.0 – 172.31.255.255172.16.0.0/121 triệuEnterprise LAN
192.168.0.0 – 192.168.255.255192.168.0.0/1665,536Home, small office

Địa chỉ đặc biệt

Địa chỉÝ nghĩa
127.0.0.1Loopback — bản thân máy
0.0.0.0Tất cả interface (listen)
255.255.255.255Broadcast toàn mạng
169.254.x.xAPIPA — tự gán khi DHCP fail

CIDR — Classless Inter-Domain Routing

CIDR dùng prefix notation để chỉ định subnet mask: 192.168.1.0/24

192.168.1.0   /24
└──────────┘ └─┘
Network Prefix length (số bit của network)

Bảng CIDR thường dùng

CIDRSubnet MaskSố hostsDùng cho
/8255.0.0.016,777,214Lớp A enterprise
/16255.255.0.065,534VPC lớn
/24255.255.255.0254Subnet thông thường
/25255.255.255.128126Chia đôi /24
/26255.255.255.19262Nhỏ hơn
/27255.255.255.22430Subnet nhỏ
/28255.255.255.24014Rất nhỏ
/29255.255.255.2486Point-to-point
/30255.255.255.2522WAN link
/32255.255.255.2551Single host
Công thức tính số hosts

Số hosts = 2^(32 - prefix) - 2 (trừ 2 vì: network address + broadcast address)

Ví dụ /24: 2^(32-24) - 2 = 256 - 2 = 254 hosts


Subnetting — Chia mạng con

Ví dụ thực tế: VPC AWS 10.0.0.0/16

Phân tích subnet 192.168.1.0/24

Network:   192.168.1.0
Broadcast: 192.168.1.255
First host: 192.168.1.1
Last host: 192.168.1.254
Hosts: 254

NAT — Network Address Translation

NAT cho phép nhiều máy dùng chung một IP public — giải quyết bài toán thiếu IPv4.

Các loại NAT

LoạiMô tảDùng cho
SNAT (Source NAT)Thay đổi source IP — nhiều private ra một publicInternet access từ LAN
DNAT (Destination NAT)Thay đổi dest IP — forward port vào server nội bộPort forwarding, load balancing
PAT (Port Address Translation)SNAT kèm port — một IP public cho nhiều clientsHome router, NAT Gateway
# Ví dụ iptables NAT (Linux)
# SNAT — cho phép LAN ra Internet
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

# DNAT — forward port 80 vào server nội bộ
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10:80

IPv6 — Thế hệ tiếp theo

IPv6 là 128-bit, viết dạng hexadecimal, chia thành 8 nhóm 4 hex digits:

2001:0db8:85a3:0000:0000:8a2e:0370:7334

Rút gọn: omit leading zeros + :: thay một nhóm toàn 0 liên tiếp:

2001:db8:85a3::8a2e:370:7334

IPv6 quan trọng

Địa chỉÝ nghĩa
::1Loopback (= 127.0.0.1)
fe80::/10Link-local (tự gán trong LAN)
fd00::/8Unique local (= private IPv4)
2000::/3Global unicast (routable)
ff02::1All nodes multicast

So sánh IPv4 vs IPv6

IPv4IPv6
Kích thước32 bit128 bit
Số địa chỉ~4.3 tỷ~340 undecillion
HeaderVariable (20-60 bytes)Fixed (40 bytes)
NATCần thiếtKhông cần
Auto-configDHCPSLAAC (tự cấu hình)
SecurityOptional IPSecBuilt-in IPSec

Tính subnet nhanh — Cheat Sheet

# Linux — xem thông tin subnet
ip addr show # xem IP và prefix
ipcalc 192.168.1.0/24 # tính subnet (cần cài ipcalc)

# Python nhanh
python3 -c "import ipaddress; n=ipaddress.ip_network('10.0.0.0/16'); print(f'Hosts: {n.num_addresses-2}, First: {list(n.hosts())[0]}, Last: {list(n.hosts())[-1]}')"
Bạn cóCần ít nhấtDùng CIDR
2 hosts/30 (2 hosts)
10 hosts/28 (14 hosts)
50 hosts/26 (62 hosts)
100 hosts/25 (126 hosts)
200 hosts/24 (254 hosts)
500 hosts/23 (510 hosts)