Trả lời nhanh
Dán một địa chỉ IP ở bất kỳ dạng nào (192.168.1.1, 3232235777, 0xC0A80101, chuỗi 32 bit nhị phân hoặc IPv6): công cụ tự nhận dạng và đổi sang dạng chấm thập phân, số nguyên, hex, nhị phân, bát phân, dạng IPv4-mapped ::ffff:c0a8:101, prefix 6to4 và tên PTR tra ngược. Với IPv6 còn chỉ ra địa chỉ IPv4 nhúng bên trong (6to4, NAT64, Teredo).
Vì sao một IP có nhiều cách viết?
Cùng một địa chỉ IP có thể được lưu và hiển thị theo nhiều cách: cơ sở dữ liệu lưu số nguyên để so sánh dải nhanh, log tường lửa ghi hex, sách mạng dạy nhị phân, phần mềm IPv6 ghi ::ffff:a.b.c.d. Công cụ đổi qua lại giữa các dạng đó ngay trên trình duyệt, không gửi gì lên máy chủ, và cảnh báo các dạng “lạ” như 0300.0250.1.1 (bát phân) mà trình duyệt vẫn hiểu là 192.168.1.1, một mẹo hay bị dùng để giấu đường dẫn độc hại.

Cách đổi định dạng IP
- 1
Dán địa chỉ vào ô nhập: dạng chấm (192.168.1.1), số nguyên (3232235777), hex có 0x, chuỗi nhị phân 32 hoặc 128 bit, hoặc địa chỉ IPv6.
- 2
Xem dòng “Đã nhận dạng” để chắc công cụ hiểu đúng kiểu bạn nhập, cùng loại địa chỉ (riêng, công khai, CGNAT…).
- 3
Đọc bảng kết quả và bấm biểu tượng sao chép ở dạng cần dùng, ví dụ số nguyên để truy vấn SQL hoặc hex để tìm trong log.
- 4
Với IPv6, xem mục “IPv4 nhúng bên trong” nếu địa chỉ là IPv4-mapped, 6to4, NAT64 hoặc Teredo.
Một địa chỉ, nhiều cách viết (ví dụ 192.168.1.1)
| Dạng | Giá trị | Hay gặp ở |
|---|---|---|
| Chấm thập phân | 192.168.1.1 | Cấu hình router, máy tính |
| Số nguyên 32 bit | 3232235777 | Cột INT UNSIGNED trong MySQL (INET_ATON), cơ sở dữ liệu GeoIP |
| Hex | 0xC0A80101 | Log tường lửa, gói tin, mã C |
| Hex theo từng octet | c0.a8.01.01 | Công cụ bắt gói tin |
| Nhị phân | 11000000.10101000.00000001.00000001 | Học chia subnet |
| Bát phân (inet_aton) | 0300.0250.01.01 | Đường dẫn ngụy trang |
| IPv4-mapped IPv6 | ::ffff:192.168.1.1 = ::ffff:c0a8:101 | Socket IPv6 nhận kết nối IPv4 |
| Tra ngược (PTR) | 1.1.168.192.in-addr.arpa | Bản ghi DNS ngược |
IPv4 nhúng trong IPv6
| Dải | Cơ chế | IPv4 nằm ở đâu |
|---|---|---|
| ::ffff:0:0/96 | IPv4-mapped (RFC 4291) | 32 bit cuối |
| ::/96 | IPv4-compatible (đã bỏ) | 32 bit cuối |
| 2002::/16 | 6to4 (RFC 3056) | Bit 16–47, ngay sau 2002: |
| 64:ff9b::/96 | NAT64 (RFC 6052) | 32 bit cuối |
| 2001::/32 | Teredo (RFC 4380) | 32 bit cuối, đảo bit (XOR 0xFFFFFFFF) |
Ví dụ thực tế
Lọc dải IP trong MySQL
Nhập 10.0.0.0 và 10.255.255.255 lấy số nguyên 167772160 và 184549375, rồi viết WHERE ip BETWEEN 167772160 AND 184549375 cho cột lưu bằng INET_ATON.
Đọc địa chỉ trong log ứng dụng
Log Node.js hoặc Java ghi ::ffff:113.161.10.20: đó là kết nối IPv4 từ 113.161.10.20 đi qua socket IPv6, không phải máy khách IPv6.
Kiểm tra đường dẫn đáng ngờ
Đường dẫn http://3232235777/ hay http://0xC0A80101/ thật ra trỏ tới 192.168.1.1. Dán phần máy chủ vào công cụ để thấy địa chỉ thật trước khi bấm.
Tìm IPv4 của máy khách NAT64
Địa chỉ 64:ff9b::7f00:1 mang IPv4 127.0.0.1 ở 32 bit cuối; công cụ hiện ngay dòng NAT64 → 127.0.0.1.
Lỗi thường gặp
- Nhập số nguyên mà kết quả lại là IPv6.
- IPv4 chỉ có 32 bit (0 – 4.294.967.295). Số lớn hơn được hiểu là IPv6 dạng số nguyên 128 bit; kiểm tra lại số có bị thừa chữ số không.
- Nhập 010.1.1.1 ra 8.1.1.1.
- Theo quy ước inet_aton, octet bắt đầu bằng 0 là bát phân, nên 010 = 8. Cấu hình router nên luôn viết không có số 0 ở đầu để tránh hiểu nhầm.
- Chuỗi nhị phân không nhận.
- Cần đúng 32 bit (IPv4) hoặc 128 bit (IPv6); dấu chấm, khoảng trắng giữa các nhóm được bỏ qua. Thiếu số 0 ở đầu thì thêm cho đủ.
- Dạng hex của IPv6 trông khác dạng có dấu “:”.
- Đó vẫn là cùng một số 128 bit: dạng hex ghi liền 32 chữ số, dạng chuẩn RFC 5952 tách 8 nhóm và rút gọn nhóm 0.
Vì sao trình duyệt hiểu 3232235777 là một địa chỉ IP
Hàm inet_aton của hệ điều hành (và chuẩn URL của WHATWG mà trình duyệt theo) chấp nhận địa chỉ IPv4 ở dạng một số nguyên, hex có 0x, bát phân có số 0 đầu, hoặc ít hơn 4 phần (192.168.257 = 192.168.1.1). Kẻ gian lợi dụng điều này để giấu đường dẫn tới máy nội bộ hoặc vượt bộ lọc chỉ chặn dạng chấm.
Công cụ hiện rõ kiểu đã nhận dạng (“inet_aton”) khi gặp các dạng này, để bạn biết địa chỉ thật trước khi mở hoặc cho vào danh sách chặn.
Lưu IP trong cơ sở dữ liệu
Lưu IPv4 dạng số nguyên không dấu 32 bit giúp so sánh dải và đánh chỉ mục nhanh hơn chuỗi ký tự. MySQL có INET_ATON / INET_NTOA cho IPv4 và INET6_ATON / INET6_NTOA (VARBINARY(16)) cho cả hai loại; PostgreSQL có sẵn kiểu inet và cidr.
Thuật ngữ
- Octet
- Một nhóm 8 bit (0–255); IPv4 có 4 octet ngăn bởi dấu chấm.
- inet_aton
- Hàm chuyển chuỗi thành địa chỉ IPv4, chấp nhận cả dạng số nguyên, hex, bát phân.
- IPv4-mapped
- Địa chỉ ::ffff:a.b.c.d, cách phần mềm IPv6 biểu diễn một kết nối IPv4.
- 6to4
- Cơ chế cũ đóng gói IPv6 qua IPv4, mỗi IPv4 công khai có prefix 2002:xxxx:xxxx::/48.
- NAT64
- Cổng chuyển đổi cho máy chỉ có IPv6 truy cập máy chủ IPv4, dùng prefix 64:ff9b::/96.
- PTR
- Bản ghi DNS ngược, cho biết tên ứng với một địa chỉ IP.
Câu hỏi thường gặp
Đổi IP sang số nguyên như thế nào?
Nhân từng octet với 256 mũ vị trí: a×16.777.216 + b×65.536 + c×256 + d. Ví dụ 192.168.1.1 = 192×16.777.216 + 168×65.536 + 1×256 + 1 = 3.232.235.777.
::ffff:192.168.1.1 có phải địa chỉ IPv6 thật không?
Nó là cách biểu diễn một địa chỉ IPv4 trong phần mềm IPv6, không được dùng làm địa chỉ trên Internet. Khi thấy trong log, hãy hiểu đó là máy khách IPv4 192.168.1.1.
Công cụ có nhận địa chỉ IPv6 dạng số nguyên không?
Có, với số lớn hơn 32 bit. Kết quả cũng gồm dạng số nguyên 128 bit của mọi địa chỉ IPv6 bạn nhập.
Dạng bát phân 0300.0250.1.1 có hợp lệ không?
Hợp lệ theo inet_aton và các trình duyệt đều mở được, nhưng không nên dùng trong cấu hình vì dễ gây hiểu nhầm. Công cụ đổi được để bạn kiểm tra địa chỉ thật.
Tôi có thể dùng công cụ khi không có mạng không?
Có. Mọi phép đổi chạy trong trình duyệt, không gửi địa chỉ đi đâu.
Muốn tính dải mạng của địa chỉ thì dùng gì?
Dùng Tính Subnet IPv4 hoặc Tính Subnet IPv6; để đổi dải đầu – cuối thành danh sách CIDR, dùng Chuyển đổi IP ↔ CIDR.
Đánh giá và bình luận
Đang tải…