Danh mục sản phẩm
Bài 11: Địa chỉ IPv6 — Cấu trúc, cách rút gọn, các loại địa chỉ
💡 Liên hệ thực tế
Việt Nam từng dùng hệ thống số điện thoại 7 số, rồi 8 số, rồi 10 số — mỗi lần dân số và số lượng thuê bao tăng lên, hệ thống cũ không đủ chỗ chứa, buộc phải mở rộng số chữ số. Địa chỉ IPv4 (32-bit, khoảng 4.3 tỷ địa chỉ) đang gặp đúng vấn đề đó: với hàng chục tỷ thiết bị IoT, điện thoại, laptop trên toàn cầu, 4.3 tỷ địa chỉ đã cạn kiệt từ lâu.
🌐 Giải pháp: IPv6 — hệ thống địa chỉ mới với 128-bit, cho ra một con số khổng lồ tới mức đủ cấp cho mỗi hạt cát trên Trái Đất một địa chỉ riêng mà vẫn còn dư. Anh Nam bên VNExperts hiện đã bắt đầu tư vấn triển khai IPv6 song song IPv4 (gọi là "dual-stack") cho nhiều khách hàng doanh nghiệp, chuẩn bị cho tương lai gần khi IPv4 không còn đủ dùng.
📘 Kiến thức cốt lõi
Cấu trúc địa chỉ IPv6: gồm 128 bit, chia thành 8 nhóm, mỗi nhóm 16-bit, viết dưới dạng số thập lục phân (hexadecimal), cách nhau bởi dấu hai chấm :.
Ví dụ đầy đủ: 2001:0db8:0000:0000:0000:ff00:0042:8329
So với IPv4 (192.168.1.10 — 4 nhóm, dạng thập phân), IPv6 dài hơn hẳn — nhưng có 2 quy tắc rút gọn giúp viết ngắn lại rất nhiều:
📐 Quy tắc rút gọn 1 — Bỏ số 0 dẫn đầu trong mỗi nhóm: 0db8 → db8 | 0000 → 0 | 0042 → 42
📐 Quy tắc rút gọn 2 — Thay 1 dãy nhóm toàn số 0 liên tiếp bằng dấu :: (chỉ được dùng 1 lần duy nhất trong 1 địa chỉ):
Trước rút gọn: 2001:0db8:0000:0000:0000:ff00:0042:8329 Sau quy tắc 1: 2001:db8:0:0:0:ff00:42:8329 Sau quy tắc 2: 2001:db8::ff00:42:8329
⚠️ Lỗi thường gặp nhất: dùng
::hai lần trong cùng 1 địa chỉ. Ví dụ2001::db8::42là sai — vì máy tính không biết mỗi cụm::đại diện cho bao nhiêu nhóm số 0, gây ra địa chỉ mơ hồ, không xác định được.
🏷️ 3 loại địa chỉ IPv6 chính:
| Loại | Ý nghĩa | Ghi chú |
|---|---|---|
| Unicast | Gửi đến một interface cụ thể |
Dùng cho giao tiếp một-một |
| Multicast | Gửi đến một nhóm thiết bị cùng tham gia |
IPv6 sử dụng Multicast thay cho Broadcast |
| Anycast | Gửi đến một trong nhiều thiết bị cùng sử dụng địa chỉ đó |
Routing sẽ chọn một node phù hợp, thường là node gần/thuận lợi nhất |
🌍 Anycast — "cùng một địa chỉ, chọn một nơi phục vụ"
Hãy tưởng tượng một dịch vụ có rất nhiều máy chủ đặt ở nhiều nơi trên thế giới. Các máy chủ này cùng quảng bá một địa chỉ IP. Khi người dùng gửi yêu cầu đến địa chỉ đó, hệ thống định tuyến sẽ đưa lưu lượng đến một máy chủ phù hợp theo đường đi của mạng, thường là máy chủ gần hoặc thuận lợi nhất về mặt định tuyến.
Đây là cách các dịch vụ Internet quy mô lớn như DNS và CDN có thể phục vụ người dùng trên toàn thế giới.
Ví dụ, khi nhiều máy chủ cùng quảng bá một địa chỉ Anycast:
┌── Server Singapore
│
User Việt Nam ───┼──→ cùng một địa chỉ IP
│
└── Server Hong Kong
→ Routing chọn một node phù hợp
Người dùng ở khu vực khác có thể được định tuyến đến một node khác, dù địa chỉ IP mà họ truy cập vẫn giống nhau.
💬 Mẹo nhớ:
- Unicast → 1 người nhận
- Multicast → 1 nhóm người nhận
- Anycast → nhiều nơi cùng địa chỉ, chọn 1 nơi để phục vụ
- Broadcast → không tồn tại trong IPv6
💡 Điểm cần nhớ: IPv6 không có địa chỉ Broadcast. Khi cần gửi dữ liệu đến nhiều thiết bị, IPv6 sử dụng Multicast.
📏 Một điều cần lưu ý: IPv6 cũng dùng ký hiệu /số giống CIDR ở IPv4 — nhưng số này đếm trên 128-bit chứ không phải 32-bit. Ví dụ fe80::/10 nghĩa là: 10 bit đầu tiên của địa chỉ được cố định là 1111111010 (dạng nhị phân), dùng để nhận diện đây là một địa chỉ Link-Local — 118 bit còn lại có thể thay đổi tùy theo thiết bị. Cách hiểu hoàn toàn giống ký hiệu /24 bạn đã học ở IPv4 (Bài 8), chỉ khác ở chỗ đây là một dải/phạm vi địa chỉ (network prefix) được IANA quy định sẵn cho từng mục đích, chứ không phải subnet mask do bạn tự chia.
🔒 Địa chỉ IPv6 đặc biệt cần nhớ:
| Địa chỉ | Ý nghĩa |
|---|---|
::1 |
Loopback — tương đương 127.0.0.1 của IPv4 |
fe80::/10 |
Link-Local — tự động sinh ra trên mọi interface, chỉ dùng trong mạng cục bộ |
:: |
Địa chỉ "không xác định", tương đương 0.0.0.0 của IPv4 |
🔎 NDP (Neighbor Discovery Protocol) — Link-Local dùng để làm gì trong thực tế?
Nhắc lại Bài 4, để gửi dữ liệu trong mạng LAN, thiết bị không chỉ cần biết địa chỉ IP mà còn cần biết địa chỉ MAC của thiết bị lân cận. Với IPv4, ARP đảm nhiệm việc tìm địa chỉ MAC tương ứng với một địa chỉ IP. Với IPv6, chức năng này cùng nhiều nhiệm vụ khác được thực hiện bởi NDP (Neighbor Discovery Protocol).
NDP hoạt động dựa trên ICMPv6. Trong mạng LAN, các thiết bị sử dụng địa chỉ Link-Local (fe80::/10) rất nhiều trong quá trình trao đổi NDP, đặc biệt để phát hiện Router và các thiết bị lân cận.
(Khi học đến Bài 16 về ARP trong IPv4, bạn có thể quay lại so sánh với NDP — hai cơ chế đều giúp thiết bị tìm thông tin của các thiết bị lân cận, nhưng IPv6 tích hợp chức năng này vào ICMPv6/NDP thay vì sử dụng một giao thức riêng như ARP.)
NDP gồm 4 loại message chính:
| Message | Vai trò | Tương đương bên IPv4 |
|---|---|---|
| RS (Router Solicitation) | Host chủ động hỏi: "Có Router nào trên mạng này không?" | Không có tương đương trực tiếp |
| RA (Router Advertisement) | Router thông báo prefix mạng, thông tin cấu hình và khả năng tự cấu hình địa chỉ (SLAAC) | Một số chức năng tương tự DHCP |
| NS (Neighbor Solicitation) | Hỏi thông tin của một thiết bị lân cận, trong đó có việc tìm địa chỉ MAC tương ứng với IPv6 | ARP Request |
| NA (Neighbor Advertisement) | Trả lời NS và cung cấp thông tin cần thiết, bao gồm địa chỉ MAC | ARP Reply |
💡 Mẹo nhớ:
RS → hỏi Router
RA → Router trả lời
NS → hỏi Neighbor
NA → Neighbor trả lời
Và đây là lý do Link-Local rất quan trọng trong IPv6: ngay khi interface tham gia IPv6, thiết bị có thể sử dụng địa chỉ Link-Local để giao tiếp với các thiết bị lân cận và thực hiện những chức năng cơ bản của NDP — ngay cả khi thiết bị chưa có Global Unicast Address.
💬 Hỏi & Đáp nhanh
❓ Vì sao dấu :: chỉ được dùng 1 lần trong 1 địa chỉ, không được dùng nhiều lần?
✅ Vì nếu dùng 2 lần, máy tính không thể xác định chính xác mỗi cụm :: đại diện cho bao nhiêu nhóm số 0 — gây ra địa chỉ mơ hồ, không giải mã lại được chính xác 128-bit ban đầu. Quy tắc chỉ cho phép 1 lần để đảm bảo mỗi địa chỉ rút gọn luôn có duy nhất 1 cách hiểu.
❓ IPv6 có thay thế hoàn toàn IPv4 ngay lập tức không?
❌ Không — quá trình chuyển đổi diễn ra dần dần qua nhiều năm. Hiện tại phần lớn mạng doanh nghiệp và ISP đang chạy dual-stack (chạy song song cả IPv4 và IPv6) để đảm bảo tương thích ngược, trong lúc chờ hệ sinh thái IPv6 hoàn thiện hơn.
❓ Vì sao fe80::/10 lại có /10 — con số này có liên quan gì đến subnet mask không?
✅ Có liên quan về mặt ký hiệu nhưng khác về bản chất sử dụng: /10 vẫn đếm số bit cố định giống CIDR, nhưng ở đây fe80::/10 là dải địa chỉ được quy định sẵn để nhận diện loại Link-Local (giống như biển số xe được cấp theo tỉnh — 10 bit đầu là "mã tỉnh" cố định, phần còn lại mỗi xe mỗi khác). Khi bạn tự subnetting IPv6 để chia mạng nội bộ, con số sau dấu / mới là subnet mask do bạn tự quyết định — bài học IPv6 Subnetting tiếp theo sẽ đi sâu vào việc này.
❓ Địa chỉ Link-Local (fe80::/10) dùng để làm gì trong thực tế?
✅ Mỗi khi một interface được bật lên (dù chưa cấu hình IPv6 thủ công), nó tự động sinh ra một địa chỉ Link-Local để giao tiếp với các thiết bị khác trong cùng mạng cục bộ — ví dụ dùng trong các giao thức định tuyến IPv6 (OSPFv3) để trao đổi thông tin giữa các router lân cận mà không cần cấu hình IP thủ công.
❓ NDP có làm được nhiều việc hơn so với việc chỉ tìm MAC không?
✅ Có — NDP làm được nhiều hơn thế: ngoài việc tìm MAC (qua NS/NA), NDP còn giúp host tự động tìm Router và tự cấu hình địa chỉ IPv6 (qua RS/RA, cơ chế gọi là SLAAC) mà hoàn toàn không cần DHCP. Đây là điểm IPv6 làm tốt hơn hẳn IPv4 — một thiết bị mới cắm vào mạng có thể tự có địa chỉ IPv6 hợp lệ và biết luôn Default Gateway, chỉ nhờ NDP.
📝 Bài tập đánh giá
Câu 1: Địa chỉ IPv6 2001:0db8:0000:0000:0000:0000:0000:0001 sau khi rút gọn đúng quy tắc sẽ là gì?
- A. 2001:db8::1
- B. 2001::db8::1
- C. 2001:0db8:0:1
- D. 2001-db8-1
Câu 2: Loại địa chỉ IPv6 nào dùng để gửi dữ liệu đến thiết bị gần nhất trong một nhóm các thiết bị giống nhau?
- A. Unicast
- B. Multicast
- C. Anycast
- D. Broadcast
Câu 3: Trong NDP, message nào đảm nhiệm vai trò "hỏi địa chỉ MAC ứng với 1 địa chỉ IPv6 cụ thể" trong mạng LAN?
- A. RS (Router Solicitation)
- B. RA (Router Advertisement)
- C. NS (Neighbor Solicitation)
- D. NA (Neighbor Advertisement)
👉 Đáp án:
Câu 1: A — Bỏ số 0 dẫn đầu và thay dãy nhóm toàn số 0 liên tiếp (6 nhóm 0000) bằng :: một lần duy nhất, kết quả là 2001:db8::1.
Câu 2: C — Anycast gửi đến thiết bị gần/thuận lợi nhất trong nhóm nhiều thiết bị cùng chia sẻ một địa chỉ. IPv4 cũng triển khai được Anycast, nhưng không có loại địa chỉ riêng dành cho nó như IPv6.
Câu 3: C — NS dùng để hỏi địa chỉ MAC ứng với 1 địa chỉ IPv6 cụ thể trong mạng LAN; NA là message phản hồi lại, cung cấp địa chỉ MAC đó.
📚 Bài viết thuộc khóa học CCNA của VNExperts
🧭 Điều hướng
| ⬅️ Bài trước | 🏠 Mục lục khóa học | Bài kế tiếp ➡️ |
|---|---|---|
| Bài 10: VLSM | Mục lục khóa học CCNA | Bài 12: IPv6 Subnetting cơ bản |
