Trình chuyển đổi IPv4 ↔ IPv6
Riêng tư theo thiết kế — chạy hoàn toàn trong trình duyệt của bạn
Đổi hướng và dán một IPv4 như 192.0.2.1 để xem dạng IPv4-mapped (::ffff:192.0.2.1), dạng expanded đầy đủ và dạng IPv4-compatible của IPv6. Chuyển sang IPv6 → IPv4 để rút IPv4 nhúng trong địa chỉ mapped, hoặc để xem dạng compressed và expanded của một IPv6 bất kỳ.
Ba cách biểu diễn IPv4 trong IPv6
RFC 4291 quy định hai cách mang IPv4 trong IPv6. Cách hiện hành là IPv4-mapped: ::ffff:a.b.c.d. Cách cũ là IPv4-compatible: ::a.b.c.d — đã lỗi thời cho code mới nhưng vẫn xuất hiện trong tài liệu cũ và một số stack legacy. Công cụ cũng trả về dạng expanded đầy đủ (tám nhóm 16-bit hex không rút gọn), hữu ích khi grep log hoặc so khớp địa chỉ theo từng byte.
Notation compressed và expanded
IPv6 cho phép rút gọn: dãy nhóm 16-bit toàn số 0 dài nhất có thể thay bằng một dấu :: duy nhất. Vì thế 2001:db8:0:0:0:0:0:1 trở thành 2001:db8::1. Dấu :: chỉ được xuất hiện một lần trong một địa chỉ. RFC 5952 quy định: hex viết thường, chỉ rút gọn dãy dài nhất, bỏ số 0 đứng đầu trong từng nhóm. Dạng compressed là để công bố; dạng expanded là thứ mà ipset hay BPF cần.
Vì sao debug dual-stack lại quan trọng
Khi server lắng nghe trên socket AF_INET6 mà bỏ IPV6_V6ONLY, kernel hiển thị client IPv4 dưới dạng ::ffff:. Log ứng dụng dính kiểu mapped khiến grep với danh sách IPv4 dự kiến không khớp. Chuyển qua công cụ này để chuẩn hóa trước khi so sánh — hoặc để xác nhận tunnel đang chuyển traffic 6to4 chính xác.
Câu hỏi thường gặp
- Địa chỉ IPv6 mapped từ IPv4 là gì?
- Nó nằm trong ::ffff:0:0/96 (RFC 4291). Socket dual-stack hiển thị client IPv4 dưới dạng địa chỉ mapped, nên một bind duy nhất phục vụ được cả hai giao thức.
- Vì sao có hai định dạng prefix zero?
- ::a.b.c.d là dạng IPv4-compatible đã lỗi thời theo RFC 4291. ::ffff:a.b.c.d là dạng IPv4-mapped hiện hành. Chúng tôi hiển thị cả hai vì hệ thống cũ vẫn tạo dạng compatible.
- ::ffff:a.b.c.d có lỗi thời không?
- Không — IPv4-mapped vẫn là cách khuyến nghị để biểu diễn endpoint IPv4 trong code dual-stack ngày nay. Cái lỗi thời là IPv4-compatible (không có ffff).
- Có thể trích IPv4 từ mọi IPv6 không?
- Chỉ khi IPv6 nằm trong dải mapped hoặc compatible. Với IPv6 thông thường như 2001:db8::1 không có IPv4 để trích — công cụ chỉ hiển thị dạng expanded và compressed.
- :: và 0:0:0:0:0:0:0:0 khác nhau ra sao?
- 0:0:0:0:0:0:0:0 là địa chỉ unspecified tường minh, còn :: là dạng compressed của nó — cũng là cách biểu diễn chuẩn trong IPv6.
- IP tôi nhập có rời khỏi trang không?
- Không. Việc chuyển đổi chạy trong JavaScript của tab này; chúng tôi không thấy, không log và không lưu địa chỉ bạn nhập.