ในขณะที่ IPv6 กำลังเข้ามาเราน่าจะเรียนรู้เรื่องเล็กๆ น้อยๆ ของ IPv6 กันเสียหน่อย ไม่อย่างนั้นอาจจะมีคนทำเสื้อมาล้อเลียนเราได้ว่า "I hacked ::1"
เริ่มต้นด้วยการเขียนแอดเดรส IPv6 แบบเต็มๆ นั้นเราแบ่งเลข IPv6 ซึ่งมี 128 บิตออกเป็น 8 ชุด ชุดละ 16 บิต แล้วเขียนแต่ละชุดในรูปของเลขฐาน 16 คั่นแต่ละชุดจากกันด้วยเครื่องหมายโคลอน เช่น
0010000000000001 0000110110111000 0000000000000010 0000000000000011 0000000000000100 0000000000000101 0000000000000110 0000000000000111
เราจะเขียนได้เป็น
2001:db8:2:3:4:5:6:7
แต่ถ้าเลขฐาน 16 ที่มีค่าเป็น 0 อยู่ติดกันหลายชุดเราจะสามารถเขียนย่อด้วยโคลอนคู่ติดกันได้ เช่น
0010000000000001 0000110110111000 0000000000000010 0000000000000000 0000000000000000 0000000000000000 0000000000000110 0000000000000111
จะเขียนเป็น
2001:db8:2::6:7
เนื่องจากการเขียนนั้นทำได้หลายรูปแบบทำให้สับสนยุ่งยาก จึงได้มี RFC5952: A Recommendation for IPv6 Address Text Representation ที่เป็นการแนะนำการเขียนแอดเดรสของ IPv6 เอาไว้ดังนี้ (RFC ที่ยกมาแต่ละตัวตอนนี้มีสถานะต่างๆ กัน ไม่มีตัวไหนเป็น "มาตรฐาน" นะครับ ยังเปลี่ยนไปเปลี่ยนมาตลอด มองว่าเป็นคำแนะนำสำหรับเวลานี้ก็แล้วกัน)
ที่ผ่านมานั้นเป็นการเขียนแอดเดรส IPv6 ธรรมดา ในกรณีของแอดเดรส IPv6 พิเศษเช่น
ไอพีเหล่านี้มีความพิเศษตรงที่ได้ฝังเอาหมายเลข IPv4 เอาไว้ในส่วนนัยสำคัญต่ำ (ขวามือสุด) ของ IPv6 ซึ่งสามารถที่จะเขียนในรูปแบบพิเศษที่ผสมกันระหว่างเลขฐาน 16 ที่คั่นด้วยโคลอนกับเลขฐานสิบที่คั่นด้วยจุด โดยมีข้อกำหนดว่าแนะนำให้เขียนในรูปแบบพิเศษนี้เมื่อสามารถแบ่งแยกชี้ชัดได้ว่าไอพีนี้มี IPv4 แอดเดรสฝังอยู่โดยดูจาก "พรีฟิก (prefix: ส่วนต้นทางซ้ายมือของแอดเดรส)" ที่รู้กันดีเท่านั้น เช่นพรีฟิกที่กำหนดใน RFC4291 และ RFC2765 แต่ถ้ามีวิธีการอื่นที่ทำให้รู้ได้ว่าพรีฟิกนั้นมี IPv4 ฝังอยู่ก็อาจจะเขียนแบบผสมด้วยก็ได้
ตัวอย่าง IPv6 ที่เขียนในรูปแบบนี้เช่น ::ffff:10.0.0.1 (เป็น IPv4-Mapped IPv6 address)
ส่วนในการเขียน IPv6 ร่วมกับหมายเลขพอร์ทนั้นสามารถทำได้หลายวิธีเช่นเดียวกับ IPv4 เช่น
ตอนนี้เราพอจะรู้แล้วว่ารูปแบบการเขียน IPv6 นั้นเป็นอย่างไร แล้วมี "แอดเดรส/พรีฟิก" อะไรที่เราควรรู้ไว้บ้าง?
และอันสุดท้าย
รู้แบบนี้แล้วก็อย่าไปบอกใครเขาล่ะว่าได้ "hacked ::1" มา
ที่มา