IPv6 คืออะไร

Internet Protocol Version 6 address หรือ IPv6 คืออะไร ?

IPv6 คือตัวเลขที่กำหนดที่อยู่และระบุตัวตนภายใน network เช่นเดียวกันกับ IP address ที่เรารู็จักกัน ซึ่งจะมีค่าไม่ซ้ำกันของแต่ละ network interface ภายใน host หรือ อุปกรณ์ที่เชื่อมต่ออยู่ โดย IPv6 กำลังจะเข้ามาแทนที่ IPv4 ที่กำลังใช้งานกันอยู่ในปัจจุบัน อันเนื่องมากข้อจำกัดของ IPv4 ที่มี address ได้เพียงแค่ 32-bit แต่สำหรับ IPv6 แล้วมี address ได้ถึง 128-bit  สำหรับผู้ที่ไม่ได้เชี่ยวชาญทางด้าน IT อาจจะสงสัยว่าขนาดมันต่างกันเท่าเรา ให้เราลองคิดเป็นตัวเลข address เทียบกันคือ  232 กับ 2128  ถ้าลองคิดตามจะเห็นจำนวนที่ต่างกันมหาศาล

ชนิดของ IPv6 Address

หลักจากทราบกันแล้วว่า IPv6 คืออะไร กันไปแล้ว มาดูชนิดของ IPv6 address ว่าถูกแบ่งออกตามการทำ routing ใน network ออกเป็น 3 ชนิดคือ

1. Unicast Address

เป็นการกำหนดที่ตัว network interface โดย IP จะระบุจะส่ง packet ไปยัง unicast address เดียว หลักการทำงานเหมือนกับ IPv4 unicast address ใช้ในการรับส่งข้อมูลแบบ one-to-one จากเครื่องหนึ่งไปยังอีกเครื่องหนึ่ง

2. Anycast Address

กำหนดให้กับกลุ่มของ interface และมักจะใช้กับ node ที่อยู่ต่างกัน โดย packet ที่ส่งไปยัง unicast address จะถูกส่งไปยังสมาชิกใน network interface ซึ่งมักจะเป็น host ที่ใกล้ที่สุด อาศัยข้อมูล routing เป็นตัวบอกระยะห่าง anycast address ไม่สามารถระบุได้ชัดเนื่องจากมี format แบบเดียวกับ unicast address ซึ่งจะแตกต่างกันตรงใน network จะเห็นว่ามีการส่งไปหลายๆจุด

3. Multicast Address

ใช้กับ host หลายๆตัว ซึ่งจะเป็นต้องสื่อสารกับ host เหล่านั้น โดย packet ที่ส่งไปหา multicast address จะถูกส่งไปทุก interface ที่อยู่ภายใต้ multicast group

4. Loopback address

ใช้หมายเลข ::1/128 โดยมีหลักการทำงานเหมือนกับ loopback address บน IPv4 ทุกประการ (127.0.0.1)

จะเห็นว่า IPv6 ไม่มี broadcast address เหมือนกับ IPv4 ที่เป็น IP สุดท้ายของ subnet  นั้นก็เพราะ multicast address สามารถทำงานได้เหนือกว่า Broadcast โดยสามารถส่งไปทุก node ใน link local multicast group ff02::1  (169.254.0.0/16) แต่ก็ไม่เป็นที่แนะนำให้ใช้ เพราะ IPv6 protocol มีการแยก link-local multicast group เพื่อป้องกันการกวนระหว่าง network interface

IPv6 Format

IPv6 address ประกอบด้วยตัวเลข 128 bit ซึ่งจะมีการแบ่ง bit group ออกมาเช่นเดียวกับ IPv4 รวมถึงมีการจัดกลุ่ม address เฉพาะ และวิธีการทำ routing โดยค่าของ bit group ก็จะขึ้นอยู่กับคุณสมบัติของ address พิเศษที่ใช้งาน

1. Unicast และ anycast address format

bits48 (or more)16 (or fewer)64
fieldrouting prefixsubnet idinterface identifier

Unicast และ Anycast address ปกติจะประกอบไปด้วย 2 ส่วนคือ

  • Network prefix จำนวน 64-bit สำหรับทำ routing (routing prefix และ subnet id)
  • Interface identifier จำนวน 64-bit ใช้ในการระบ host network interface

ส่วนของ network prefix (routing prefix และ subnet id)  มีทั้งหมด 64 bit ซึ่ง routing prefix อาจะมีขนาดไม่แน่นอน ถ้ามี routing prefix ขนาดใหญ่หมายความว่าเราก็จะมี subnet id ที่เล็ก โดย bit ของ subnet id ขึ้นอยู่กับทางผู้ดูแลจะกำหนด ส่วน interface identifier จำนวน 64 bit จะถูก generate จาก Mac address ของ interface card หรืออาจจะได้การกำหนดโดย DHCPv6

นอกจากนี้ยังมีส่วนของ link-local address ที่ใช้งานภายใน ก็มีส่วนของ interface identifier เหมือนกัน ต่างกันเพียงส่วนของ network prefix format

bits105464
fieldprefixzeroesinterface identifier

ส่วนของ prefix จะประกอบด้วยค่า binary 1111111010 และตามด้วยส่วนของ 54 zero เพื่อบ่งบอกว่า network prefix ทั้งหมดเหมือนกันสำหรับ link-local addresses (fe80::/64 link-local address prefix) บ่งบอกว่าไม่มี routable

2. Multicast Address format

Multicast address ถูกทำขึ้นด้วยข้อจำกัดในเรื่อง format หลายข้อ ตามตัว application ที่ใช้

bits844112
fieldprefixflgscgroup ID

Prefix จะประกอบด้วยค่า binary 11111111

สำหรับ multicast address และ 3 ใน 4 bit ของ flg มีการกำหนดค่าแล้ว ส่วนที่เหลือเก็บไว้ใช้ในอนาคต

bitflagMeaning when 0Meaning when 1
8reserved  reserved  reserved
9R (Rendezvous)  Rendezvous point not embedded  Rendezvous point embedded
10P (Prefix)  Without prefix information  Address based on network prefix
11T (Transient)  Well-known multicast address  Dynamically assigned multicast address

สำหรับ 4 bit ของ sc หรือ scope ใช้ในการระบุว่า address ถูกต้องและไม่ซ้ำใน network

รูปแบบของ IPv6

IPv6 address จะแบ่งเป็น 8 กลุ่มด้วยกัน โดยใช้เลขฐาน 16 จำนวน 4 หลัก โดยแต่ละ group จะมีค่าเท่ากับ 16 bits และแบ่งโดย colons (:) แทน จุด (.) ใน IPv4

IPv4 - 172.16.100.1
IPv6 - 2001:0db8:85a3:0000:0000:8a2e:0370:7334

เลขฐาน 16ที่ใช้จะเป็นตัวเล็กทั้งหมดตามคำแนะนำของ  IETF ซึ่งเขียนในรูปแบเต็มๆจะมี เลข 4หลักประกอบด้วยกัน 8ชุด แต่ในความเป็นจริงเราสามารถละ 0 ข้างหน้าทิ้งได้ ซึ่งไม่ทำให้ค่าเปลี่ยนแปลง และสำหรับกลุ่มที่มีค่าเป็น 0 สามารถเว้นกลุ่มนั้นโดยเขียน :: ติดกันไปเลยก็ได้

IPv6 - 2001:0db8:85a3:0000:0000:8a2e:0370:7334
IPv6 - 2001:db8:85a3:0:0:8a2e:370:7334
IPv6 - 2001:db8:85a3:::8a2e:370:7334

สำหรับ localhost หรือ loopback address 0:0:0:0:0:0:0:1 รวมถึง unspecified address 0:0:0:0:0:0:0:0 สามารถเขียนในรูป ::1 and :: ก็ได้ครับ

ในช่วงที่ระหว่างการปรับเปลี่ยนจาก IPv4 ไปเป็น IPv6  การทำงานอาจจะมีการสับสนเวลาใช้ network ปนกันทั้ง IPv4 และ IPv6 จึงมีการระบุ address แบบพิเศษโดยเขียนรูปแบบผสมระหว่าง IPv4 ด้วย โดยกายใช้จุด ของ IPv4 แทนสำหรับส่วนที่เป็น format IPv4 เช่น

::ffff:c000:0280
::ffff:192.0.2.128

จะเห็นว่าแต่ละกลุ่มของ IPv4 จะมีค่าเท่ากับ 2bit ใน IPv6 ซึ่ง ถ้าทำการแปลงเลขฐาน 10 ใน IPv4  แต่ละกลุ่มได้ ก็จะได้ IPv6 มาจำนวน 2 bit

ตาราง Default IPv6 Address

PrefixPrecedenceLabelUsage
  ::1/128500  Localhost
  ::/0401  Default unicast
  ::ffff:0:0/96354  IPv4-mapped IPv6 address
  2002::/16302  6to4
  2001::/3255  Teredo tunneling
  fc00::/7313  Unique local address
  ::/9613  IPv4-compatible addresses (deprecated)
  fec0::/10111  Site-local address (deprecated)
  3ffe::/16112  6bone (returned)

IPv6 Subnet

สำหรับ IPv4 เรารู้แล้วว่ามีการแบ่ง subnet เป็น class ไว้ ซึ่งแบ่งเป็น bit สำหรับ network prefix และ bit สำหรับ host ใน network สำหรับ IPv6 แล้วเราใช้ 128 bit ในการบอกถึง address

ipv6-subnetting

จากตัวอย่างเราใช้ 16 bit สำหรับ subnet ซึ่งมีค่าเท่ากับ class B ใน IPv4 การใช้ subnet bit นี้ทำให้เราสามารถมี subnet ได้ถึง 65,536 subnet หรือ /64 และเรายังสามารถมี host ได้อีกถึง 64 bit นอกจากนี้ตัว subnet 16 bit ยังสามารถยืม bit จาก host มาใช้เพิ่มได้ แต่แนะนำว่า 64 bit ที่เหลือนั้นควรเก็บไปสำหรับ host address เพราะการทำ auto-configuration จำเป็นต้องใช้ 64 bit ด้วย concept ที่เล่ามา IPv6 สามารถทำงานได้ด้วยหลักการเดียวกับ Subnet Mask ใน IPv4

ข้อมูลอ้างอิง

Author: Suphakit Annoppornchai

Credit: https://saixiii.com, https://www.tutorialspoint.com

IPv6 คืออะไร
Scroll to top