::ffff:
เป็นคำนำหน้าเครือข่ายย่อยสำหรับที่อยู่ IPv4 (32 บิต) ที่อยู่ภายในช่องว่าง IPv6 (128 บิต) IPv6 แบ่งออกเป็นสองส่วนคือคำนำหน้าเครือข่ายย่อยและส่วนต่อท้ายของอินเทอร์เฟซ แต่ละอันมีความยาว 64 บิตหรือ 4 กลุ่มของอักขระเลขฐานสิบหก 4 ตัว
ใน IPv6 คุณได้รับอนุญาตให้ลบเลขศูนย์นำหน้าแล้วลบเลขศูนย์ที่ต่อเนื่องกันซึ่งหมายถึง::ffff:
แปลตามความเป็นจริงที่0000:0000:ffff:0000
อยู่นี้ถูกกำหนดให้เป็นคำนำหน้าเครือข่ายย่อย IPv4 ถึง IPv6 ดังนั้นโปรเซสเซอร์ IPv6 ใด ๆ จะเข้าใจว่ามันทำงานกับที่อยู่ IPv4 และจัดการกับมัน ตามนั้น
ในอนาคตอันใกล้ที่อยู่ IP ทั้งหมดจะเป็น IPv6 นั่นเป็นเพราะเรามีจำนวนเกือบหมด (4.2 พันล้านลบพื้นที่สำหรับวัตถุประสงค์อื่น ๆ ) ในพื้นที่ที่อยู่ IPv4
IPv6 ช่วยให้มีพื้นที่กว้างขวางมากขึ้น "340 undecillion ควรจะเพียงพอสำหรับทุกคน" - Bill Gates พูดใน IPv6
สิ่งสำคัญคือต้องเริ่มกำหนดแอดเดรส IP โดยใช้เนมสเปซ IPv6 ดังนั้นจึงต้องรวม::ffff:
โค้ดของคุณไว้ด้วยเนื่องจากในอนาคตจะมีข้อมูลเลขฐานสิบหกจริงระหว่างโคลอน หากคุณตัดออกด้วยเหตุผลด้านความสวยงามรหัสของคุณจะพังเมื่อเปลี่ยนเป็นเครือข่าย IPv6 หรือพบกับที่อยู่ IPv6
บางเครือข่ายกำลังใช้งาน IPv6 และคุณจะต้องเผชิญกับที่อยู่ IP IPv6 ในไม่ช้า ก้าวกระโดดทันทีหรือเสี่ยงต่อการทำลายรหัสของคุณในอนาคต
TL; DR (สั้น) ของเรื่องคือ: ทุกอย่างทำงานได้ดี อย่าเปลี่ยนมันเป็นเวอร์ชัน IPv6 ของที่อยู่ IPv4

หากคุณต้องการทำให้รหัสของคุณเข้ากันได้กับ IPv6 สิ่งที่คุณต้องทำคือตรวจสอบ::ffff:
คำนำหน้า ... หากมีอยู่ให้ลบออกและประมวลผลส่วนที่เหลือเป็น IPv4 ... หาก::ffff:
ไม่มีอยู่จะเป็นที่อยู่ IPv6 และ จำเป็นต้องดำเนินการดังกล่าว คุณตรวจสอบอีกครั้งได้โดยดูว่ามีจุดอยู่ในสตริงหรือไม่ถ้าเป็นเช่นนั้นก็คือ IPv4
จำไว้สำหรับทุกสิ่งยกเว้นการปรับเปลี่ยนที่อยู่ IP คุณแค่บันทึก IP ใช่ไหม? สิ่งนี้จะมีความสำคัญต่อตัวแยกวิเคราะห์และบันทึกการรวมที่คาดหวัง::ffff:127.0.0.1
และเช่นนี้ในอนาคต เว้นแต่ว่าคุณต้องการแก้ไข IP เพียงแค่ปล่อยให้เป็นสิ่งที่คุณได้รับ
req.ip
หรือreq.ips
?