::ffff:
là tiền tố mạng con cho địa chỉ IPv4 (32 bit) được đặt bên trong không gian IPv6 (128 bit). IPv6 được chia thành hai phần, tiền tố mạng con và hậu tố giao diện. Mỗi cái dài 64 bit, hoặc 4 nhóm gồm 4 ký tự thập lục phân.
Trong IPv6, bạn được phép xóa các số 0 ở đầu, sau đó xóa các số 0 liên tiếp, nghĩa là ::ffff:
thực sự được dịch thành 0000:0000:ffff:0000
, địa chỉ này đã được chỉ định là tiền tố mạng con IPv4 thành IPv6, vì vậy bất kỳ bộ xử lý IPv6 nào cũng hiểu nó đang hoạt động với địa chỉ IPv4 và xử lý nó cho phù hợp.
Trong tương lai gần, tất cả các địa chỉ IP sẽ là IPv6, điều này là do chúng ta đã gần hết số lượng (4,2 tỷ, trừ đi một số không gian cho các mục đích sai) trong không gian địa chỉ IPv4.
IPv6 cho phép một không gian lớn hơn nhiều. "340 undecillion phải là đủ cho bất kỳ ai" - Bill Gates phát biểu trên IPv6.
Điều quan trọng là bắt đầu định địa chỉ IP bằng cách sử dụng không gian tên IPv6 và do đó đưa ::ffff:
vào mã của bạn vì trong tương lai sẽ có dữ liệu thập lục phân thực giữa các dấu hai chấm đó. Nếu bạn loại bỏ nó vì lý do thẩm mỹ, mã của bạn sẽ bị hỏng khi nó chuyển sang mạng IPv6 hoặc nó đối đầu với địa chỉ IPv6.
Một số mạng hiện đang chạy IPv6 và bạn sẽ sớm gặp phải các địa chỉ IP IPv6; tạo bước nhảy vọt ngay bây giờ hoặc có nguy cơ phá vỡ mã của bạn trong tương lai.
Phiên bản TL; DR (viết tắt) của vấn đề là: Mọi thứ đều hoạt động tốt. Đừng thay đổi nó, đó là phiên bản IPv6 của địa chỉ IPv4.
Nếu bạn muốn làm cho mã của mình tương thích với IPv6, tất cả những gì bạn phải làm là kiểm tra ::ffff:
tiền tố ... nếu nó tồn tại, hãy xóa nó và xử lý phần còn lại dưới dạng IPv4 ... nếu ::ffff:
không tồn tại, đó là địa chỉ IPv6 và cần được xử lý như vậy. Bạn có thể kiểm tra kỹ bằng cách xem các dấu chấm có trong chuỗi hay không, nếu có thì đó là IPv4.
Hãy ghi nhớ mọi thứ, trừ những điều chỉnh bạn cần thực hiện đối với địa chỉ IP, bạn chỉ đang ghi lại IP, phải không? Nó sẽ quan trọng đối với trình phân tích cú pháp và tổng hợp nhật ký để mong đợi ::ffff:127.0.0.1
và tương tự như vậy trong tương lai. Trừ khi bạn cần thay đổi một IP, hãy để nó như những gì bạn nhận được.
req.ip
hoặcreq.ips
?