ในขณะที่ 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 ที่ยกมาแต่ละตัวตอนนี้มีสถานะต่างๆ กัน ไม่มีตัวไหนเป็น "มาตรฐาน" นะครับ ยังเปลี่ยนไปเปลี่ยนมาตลอด มองว่าเป็นคำแนะนำสำหรับเวลานี้ก็แล้วกัน)
- ตัดเลข 0 ที่นำหน้าเลขฐาน 16 แต่ละชุดทิ้งทั้งหมด เช่น เราจะไม่เขียน "0db8" แต่จะต้องเขียน "db8" และเราจะไม่เขียน "0000" แต่จะต้องเขียน "0"
- การใช้ "::"
- ใช้ "::" ได้เพียงตำแหน่งเดียวเท่านั้น
- ต้องเลือกตำแหน่งที่ทำให้ย่อได้มากที่สุด (นั่นหมายถึงเลือกตำแหน่งที่เลขฐาน 16 แต่ละชุดเป็น 0 ติดกันมากที่สุดเท่าที่จะทำได้) ถ้ามีหลายตำแหน่งที่สามารถย่อได้ยาวเท่ากัน ให้เลือกตำแหน่งทางซ้ายเสมอ เช่น 2001:db8:0:0:1:0:0:1 จะต้องย่อเป็น 2001:db8::1:0:0:1 เท่านั้น
- ห้ามใช้ "::" เพื่อย่อเลข 0 เพียงตัวเดียว เช่นห้ามเขียน 2001:db8::1:1:1:1:1 เพราะ :: นั้นแทน :0: ซึ่งเป็น 0 เพียงตัวเดียว
- ในส่วนเลขฐาน 16 ตัวอักษร 'a' 'b' 'c' 'd' 'e' 'f' ต้องใช้ตัวเล็ก (lowercase) เท่านั้น
ที่ผ่านมานั้นเป็นการเขียนแอดเดรส IPv6 ธรรมดา ในกรณีของแอดเดรส IPv6 พิเศษเช่น
- IPv4-Mapped IPv6 address เลข IPv4 ที่เขียนในรูป IPv6 ซึ่งหลายคนคงเคยเห็นกันแล้วเวลาสั่ง netstat -n -a ในเครื่อง Linux ที่เปิด IPv6 ไว้แล้ว
- ISATAP การทำท่อระหว่างเครื่องที่เป็น dual-stack ด้วยกันวิ่งผ่านบนเครือข่าย IPv4 แบบอัตโนมัติ
- IPv4-translatable address ใช้ในการแปลง IPv6/IPv4 เพื่อทำท่อเชื่อม
ไอพีเหล่านี้มีความพิเศษตรงที่ได้ฝังเอาหมายเลข IPv4 เอาไว้ในส่วนนัยสำคัญต่ำ (ขวามือสุด) ของ IPv6 ซึ่งสามารถที่จะเขียนในรูปแบบพิเศษที่ผสมกันระหว่างเลขฐาน 16 ที่คั่นด้วยโคลอนกับเลขฐานสิบที่คั่นด้วยจุด โดยมีข้อกำหนดว่าแนะนำให้เขียนในรูปแบบพิเศษนี้เมื่อสามารถแบ่งแยกชี้ชัดได้ว่าไอพีนี้มี IPv4 แอดเดรสฝังอยู่โดยดูจาก "พรีฟิก (prefix: ส่วนต้นทางซ้ายมือของแอดเดรส)" ที่รู้กันดีเท่านั้น เช่นพรีฟิกที่กำหนดใน RFC4291 และ RFC2765 แต่ถ้ามีวิธีการอื่นที่ทำให้รู้ได้ว่าพรีฟิกนั้นมี IPv4 ฝังอยู่ก็อาจจะเขียนแบบผสมด้วยก็ได้
ตัวอย่าง IPv6 ที่เขียนในรูปแบบนี้เช่น ::ffff:10.0.0.1 (เป็น IPv4-Mapped IPv6 address)
ส่วนในการเขียน IPv6 ร่วมกับหมายเลขพอร์ทนั้นสามารถทำได้หลายวิธีเช่นเดียวกับ IPv4 เช่น
- [2001:db8::1]:80 ควรใช้ อย่างที่เขียนใน RFC3986
- 2001:db8::1:80 _ไม่แนะนำ_เพราะมีความกำกวม
- 2001:db8::1.80
- 2001:db8::1 port 80
- 2001:db8::1p80
- 2001:db8::1#80
ตอนนี้เราพอจะรู้แล้วว่ารูปแบบการเขียน IPv6 นั้นเป็นอย่างไร แล้วมี "แอดเดรส/พรีฟิก" อะไรที่เราควรรู้ไว้บ้าง?
- 2000::/3 Global Unicast ก็คือ IPv6 ที่มองเห็นทั้งโลก
- 3ffe:831f::/32 อุโมงแบบ Teredo เก่าเช่นที่ Windows เคยใช้ (ยังมีหลงเหลือให้เห็นอยู่)
- fe80::/10 Link Local Unicast ไว้สำหรับติดต่อกันภายใน link เดียวกัน (เทียบแล้วจะใกล้เคียงกับภายใน subnet เดียวกัน)
- ff00::/8 Multicast ส่งไปที่ผู้รับหลายๆ เครื่อง
- ff02::1 All Node Address ทุกเครื่องใน subnet
- ff02::2 All Routers Address ทุก router ใน subnet
- ::/128 (ศูนย์หมด) Unspecified แทนไอพีที่ยังไม่ระบุ ตัวอย่างคือถ้าสั่ง netstat -a ดูพอร์ทที่เปิดรับ IPv6 จากเครื่องไหนก็ได้เอาไว้จะเจอไอพีนี้
และอันสุดท้าย
- ::1/128 Loopback
รู้แบบนี้แล้วก็อย่าไปบอกใครเขาล่ะว่าได้ "hacked ::1" มา
ที่มา
on
อารมณ์เดียวกับเรื่องเล่าบน
Perl Tue, 08/02/2011 - 23:44
อารมณ์เดียวกับเรื่องเล่าบน e-mail ที่เขาท้าให้แฮกแล้วบอก ip ให้เขาเป็น 127.0.0.1 สินะ..
ปล.จนถึงทุกวันนี้ก็ยังจำหมายเลขหน้าของ Unicast,Multicast,Anycast อะไรยังไม่ได้
จำได้แต่ ::1 เนี่ยหล่ะ.. = ="
(ไม่ได้ใช้งานมันก็ไม่จำซักที..)
ภาคต่อจาก 127.0.0.1
chantra1919 Tue, 08/02/2011 - 23:56
In reply to อารมณ์เดียวกับเรื่องเล่าบน by Perl
ภาคต่อจาก 127.0.0.1 รึเปล่าครับ ฮ่าๆๆ
เป็นภาคต่อของ ipv4 เป็น ipv6
supree Wed, 09/02/2011 - 09:50
In reply to ภาคต่อจาก 127.0.0.1 by chantra1919
เป็นภาคต่อของ ipv4 เป็น ipv6 555
บทความดีมากครับ
thedesp Wed, 09/02/2011 - 00:22
บทความดีมากครับ น่าจะตอบคำถามในใจตอนนี้ของคนอ่านได้เยอะทีเดียว
สาธุ...ขอให้ RFC5952 มันผ่าน ได้เป็นมาตรฐานทีเถอะ
เพราะปวดกบาลกับไอ 0 หลายๆชุดติดกันเหลือเกิน
ขอถามหน่อยครับ /8 /16 /32 ...
kittipat Wed, 09/02/2011 - 00:48
ขอถามหน่อยครับ /8 /16 /32 ... นี่มันแปลว่าอะไรครับ
จำนวน bit ของ Subnet Mask
Perl Wed, 09/02/2011 - 01:12
In reply to ขอถามหน่อยครับ /8 /16 /32 ... by kittipat
จำนวน bit ของ Subnet Mask ครับ
ยกตัวอย่าง ipv4
x.x.x.x = 32 bit
(ช่องละ 8 bit = 256 host)
ดังนั้น /8 จะเท่ากับ subnet mask = 255.0.0.0
(0 กับ 256 จะไม่นับเพราะเป็น zubnet zero)
/16 = 255.255.0.0
และ /32 = 255.255.255.255 นั่นเอง
ปล.ส่วน ipv6 มี 128 bit ครับผม
ขอโทษนะครับ แต่ 256
dmitry Wed, 09/02/2011 - 08:07
In reply to จำนวน bit ของ Subnet Mask by Perl
ขอโทษนะครับ แต่ 256 มันไม่น่าจะได้อยู่แล้วนิครับ
8 bit : 2^8 = 256 ซึ่งเป็น 0 ถึง 255
256เกินไม่ใช่หรอครับ หรือผมเข้าใจอะไรผิด
0-255 มี 256 ตัวครับ
icez Wed, 09/02/2011 - 08:25
In reply to ขอโทษนะครับ แต่ 256 by dmitry
0-255 มี 256 ตัวครับ
นั่นคือ ไม่มีการใช้ .256
Aphorist Wed, 09/02/2011 - 10:01
In reply to 0-255 มี 256 ตัวครับ by icez
นั่นคือ ไม่มีการใช้ .256 นะแหล่ะ
อ่อ
Perl Wed, 09/02/2011 - 14:34
In reply to ขอโทษนะครับ แต่ 256 by dmitry
อ่อ ขออภัยครับพอดีเขียนผิด
subnet zero เป็น 0-255 ซึ่งเราไม่ได้ใช่ครับผม
แต่จำนวน host รวมทั้งหมด ยังคงเป็น 256 ครับ รวม 0 ด้วย ^^
เลข CIDR ครับ อ่านเองได้ที่
kswisit Wed, 09/02/2011 - 08:04
In reply to ขอถามหน่อยครับ /8 /16 /32 ... by kittipat
เลข CIDR ครับ อ่านเองได้ที่ https://secure.wikimedia.org/wikipedia/en/wiki/Classless_Inter-Domain_Routing
ขอบคุณทุกคำตอบครับ
kittipat Wed, 09/02/2011 - 15:23
In reply to ขอถามหน่อยครับ /8 /16 /32 ... by kittipat
ขอบคุณทุกคำตอบครับ ไม่เคยเห็นการเขียนแบบนี้ สรุปว่าเป็นจำนวน bit ของ subnet mask นี่เอง
network ไม่มีสอนเหรอครับ
wiennat Wed, 09/02/2011 - 21:25
In reply to ขอบคุณทุกคำตอบครับ by kittipat
network ไม่มีสอนเหรอครับ
เรื่อง subnet mask น่ะจำได้
kittipat Fri, 11/02/2011 - 15:40
In reply to network ไม่มีสอนเหรอครับ by wiennat
เรื่อง subnet mask น่ะจำได้ แต่จำไม่ได้ว่ามีวิธีบอกแบบนี้ด้วย
netstat -an ใน win7
eol Wed, 09/02/2011 - 01:56
netstat -an ใน win7 มันขึ้นแบบนี้
UDP [fe80::595e:10f3:5614:3299%12]:1900 ดอกจัน:ดอกจัน
UDP [fe80::595e:10f3:5614:3299%12]:59583 ดอกจัน:ดอกจัน
%12 นี่คืออะไรอะครับ ?
interface index
e.p. Wed, 09/02/2011 - 07:40
In reply to netstat -an ใน win7 by eol
interface index ครับ
(link-local address ต้องระบุว่าใช้ interface ไหน)
ไม่ได้เรียนและทำงานด้านนี้โดย
platalay Wed, 09/02/2011 - 02:56
ไม่ได้เรียนและทำงานด้านนี้โดยตรง อ่านแล้วมึน เหอๆๆ
ยังไงๆก็คงต้องเรียนรู้เบื้องต้นไว้มั่ง
คิดถึงตอนเวลา config ip ใส่
KillerNay Wed, 09/02/2011 - 04:53
คิดถึงตอนเวลา config ip ใส่ server ทีละ 200 ip ปวดตับน่าดู
ขอบคุณสำหรับบทความครับ
FieryTemper Wed, 09/02/2011 - 06:24
ขอบคุณสำหรับบทความครับ มีประโยชน์มากๆ
ไม่เข้าใจที่ว่า รู้แบบนี้แล้ว
superballsj2 Wed, 09/02/2011 - 08:32
ไม่เข้าใจที่ว่า
รู้แบบนี้แล้วก็อย่าไปบอกใครเขาล่ะว่าได้ "hacked ::1" มา
หมายความว่ายังไงหรอครับ งง -*-
"I Hack 127.0.0.1" ลองหาใน
noppakun_dkb Wed, 09/02/2011 - 09:00
In reply to ไม่เข้าใจที่ว่า รู้แบบนี้แล้ว by superballsj2
"I Hack 127.0.0.1" ลองหาใน google ดูครับ ::1 ใน IPv6 เหมื่อนกับ 127.0.0.1 ใน IPv4 ครับ คือ Loopback IP หรือ IP ของเครื่องตัวเองนั้นล่ะครับความหมายก็ลองตีความดูครับอธิบายไม่ถูกเหมือนกัน
อันนี้ฝากเจ้าของกระทู้หน่อยครับ "fe80::/10 Link Local Unicast ไว้สำหรับติดต่อกันภายใน link เดียวกัน (เทียบแล้วจะใกล้เคียงกับภายใน subnet เดียวกันใน)" คำว่า "ใน" คำสุดท้ายเกินมารึเปล่าครับ
เกินครับ ขอบคุณครับ
e.p. Wed, 09/02/2011 - 09:26
In reply to "I Hack 127.0.0.1" ลองหาใน by noppakun_dkb
เกินครับ ขอบคุณครับ
แนะนำว่าให้ไปหาอ่านนะครับ
PiKO Wed, 09/02/2011 - 17:57
In reply to "I Hack 127.0.0.1" ลองหาใน by noppakun_dkb
แนะนำว่าให้ไปหาอ่านนะครับ เพราะมัน ฮามากกกกกกก
(เคยอ่านเวอร์ชั่นภาษาไทยด้วย ลองหาดูไม่น่ายาก ^^)
ไปหาอ่านมาแล้ว ฮามาก 5555
superballsj2 Thu, 10/02/2011 - 08:40
In reply to แนะนำว่าให้ไปหาอ่านนะครับ by PiKO
ไปหาอ่านมาแล้ว ฮามาก 5555
มันคือเครื่องของคุณเองไงครับ
figgaro Wed, 09/02/2011 - 09:05
In reply to ไม่เข้าใจที่ว่า รู้แบบนี้แล้ว by superballsj2
มันคือเครื่องของคุณเองไงครับ จาไปแฮคเครื่องตัวเองทำไย ^ ^
จำข่าวไอซีทีโดนแฮคได้ไหมครับ
joomla Wed, 09/02/2011 - 11:14
In reply to มันคือเครื่องของคุณเองไงครับ by figgaro
จำข่าวไอซีทีโดนแฮคได้ไหมครับ "ICT ระบุ รู้หมายเลข IP คนแฮกเวปไซต์แล้ว ประสานงานให้ ISP นำข้อมูลผู้ใช้ IP หมายเลข 127.0.0.1 มาเพื่อเป็นข้อมูลประกาศจับต่อไป"
อันนี้เค้า(คนแถวนี้แหละ)แซวกั
icez Wed, 09/02/2011 - 12:39
In reply to จำข่าวไอซีทีโดนแฮคได้ไหมครับ by joomla
อันนี้เค้า(คนแถวนี้แหละ)แซวกันเล่นนะครับ ข่าวจริงๆ ไม่ใช่อย่างนี้
+1
lancaster Thu, 10/02/2011 - 02:00
In reply to อันนี้เค้า(คนแถวนี้แหละ)แซวกั by icez
+1
ผมก็นึกว่าจริงซะอีก
joomla Thu, 10/02/2011 - 11:53
In reply to อันนี้เค้า(คนแถวนี้แหละ)แซวกั by icez
ผมก็นึกว่าจริงซะอีก แต่ที่ผมอ่านมาไม่ใช่แถวนี้นะ รู้สึกจะพันทิพมั๊ง
IPv6
Pinery Wed, 09/02/2011 - 09:48
IPv6 แจกได้ถึง..
340,282,366,920,938,463,463,374,607,431,768,211,456 หมายเลข (หามาจาก Internet)
โอ้ววว
เอาง่ายๆว่า ในทุกๆพื้นที่ 1
thedesp Wed, 09/02/2011 - 12:59
In reply to IPv6 by Pinery
เอาง่ายๆว่า ในทุกๆพื้นที่ 1 ตารางเมตรของโลก มีอุปกรณ์ที่ต้องใช้ IP ได้ 2000 ชิ้น
Search หา Google ว่าจะอยู่บน
Pinery Wed, 09/02/2011 - 13:42
In reply to เอาง่ายๆว่า ในทุกๆพื้นที่ 1 by thedesp
Search หา Google ว่าจะอยู่บน IPv6 ได้อีกกี่ปีนี่ยังไม่เจอเลยครับ คง predict ยาก
(ส่วนตัว) คงต้องเป็นยุคที่เราครอบครองระบบสุริยะจักรวาลนี้ได้แน่ๆเลย อิอิ
โอ้ว ตำรา Network
khajochi Wed, 09/02/2011 - 10:01
โอ้ว ตำรา Network ตอนเรียนมหาลัยต้องอัพเดตใหม่หมดเลยสินี่ ยากเหมือนกันแฮะ
ขอบคุณสำหรับข่าวนี้
joomla Wed, 09/02/2011 - 11:09
ขอบคุณสำหรับข่าวนี้ แม้จะยังไม่เข้าใจลึกซึ้งแต่จะเก็บเอาไว้ศึกษาอีกทีหนึ่ง
จดๆๆ
wichate Wed, 09/02/2011 - 11:11
จดๆๆ ขอบคุณสำหรับความรู้ครับ
คนที่จบมาแล้ว สมัยตอนเรียนไม่มีอย่างนี้แน่นอน
ปล. it ต้องเรียนกันตลอดชีวิต เทคโนโลยีมันเปลี่ยนแปลงกันตลอด
แค่อ่านคร่าว ๆ
Noppon Wed, 09/02/2011 - 11:37
แค่อ่านคร่าว ๆ ก็มึนแล้วครับ
ขอผ่านไปก่อน รอไว้ได้ใช้จริงจัง ค่อยมานั่งทำความเข้าใจอีกที
อ่านไปซักพักเริ่มงงเพราะพื้นฐ
sanjarx Wed, 09/02/2011 - 12:14
อ่านไปซักพักเริ่มงงเพราะพื้นฐานไม่ค่อยแน่น จนกระทั่งบรรทัดท้ายๆถึงเข้าใจหัวข้อเรื่อง -0-
สงสัยอยู่ว่า การย่อ 0 ยาวๆ
HMage Wed, 09/02/2011 - 17:20
สงสัยอยู่ว่า การย่อ 0 ยาวๆ เป็น :: มันจะมีประโยชน์จริงรึเปล่า
ถ้าเป็น IP global มันก็ยากที่จะได้ 0 ติดกันยาวๆ
แต่นึกออกแค่กรณีเดียวคือ ตอนทำ NAT ถึงจะมี IP เป็น 0 ติดกันเยอะๆ
สงสัยมากๆ ไม่เข้าใจว่าทำไม
kowito Wed, 09/02/2011 - 20:05
สงสัยมากๆ ไม่เข้าใจว่าทำไม ipv6 ต้องเขียนเป็นเลขฐาน 16 ทำไมไม่เขียนเป็นเลขฐาน 10 เหมือน ipv4
ผมคิดว่า เพราะมันชุดละ 16 บิท
Thaina Wed, 09/02/2011 - 20:50
In reply to สงสัยมากๆ ไม่เข้าใจว่าทำไม by kowito
ผมคิดว่า
เพราะมันชุดละ 16 บิท เขียนเปน FFFF ง่ายกว่า 65535
แต่ผมสงสัยมากกว่า ว่าทำไมมันถึงใช้ : แทน .
ใช้ .. ก็ได้ถ้าต้องย่อ
แล้วมันก็ไปตีกับเลข port ที่ IPv4 ใช้ :
กลัวว่าบางครั้งย่อแล้วอาจจะเห
HMage Thu, 10/02/2011 - 01:41
In reply to ผมคิดว่า เพราะมันชุดละ 16 บิท by Thaina
กลัวว่าบางครั้งย่อแล้วอาจจะเหลือแค่เลข 0-9 4 ชุด มันจะไปคล้ายกับ IPv4 มั้งครับ
มีวิธีเขียนแบบเลขฐานสิบ
icez Thu, 10/02/2011 - 08:43
In reply to สงสัยมากๆ ไม่เข้าใจว่าทำไม by kowito
มีวิธีเขียนแบบเลขฐานสิบ คือ
1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16
ตัดทีละ 8 bit 16 ตัว ได้ 128bit เหมือนเดิมครับ แต่มัน... ยาวบัดซบ และย่อไม่ได้
น่าจะเป็น 0-15
vecente Thu, 10/02/2011 - 12:16
In reply to มีวิธีเขียนแบบเลขฐานสิบ by icez
น่าจะเป็น 0-15 รึป่าวครับ
แล้วก็ย่อตัวเลข 0 ที่ติดกันได้เหมือนกัน แต่ก็คงจะยาวกว่าใช้เลขฐาน 16 อยู่ดี
ที่ผมแทนเป็นตัวเลขเป็นเลขหลัก
icez Thu, 10/02/2011 - 13:28
In reply to น่าจะเป็น 0-15 by vecente
ที่ผมแทนเป็นตัวเลขเป็นเลขหลักครับ
จะให้เขียนแบบ
x.x.x.x.x.x.x.x.x.x.x. เกรง(ตัวเอง)จะงงว่ากดไปกี่ชุดแล้ว
ได้แต่หวังว่าคงจะไม่ต้องเกิดเ
tomyum Sat, 12/02/2011 - 00:39
ได้แต่หวังว่าคงจะไม่ต้องเกิดเหตุจำเป็นต้องมากรอก URL ด้วย IPv6 ...นรกนะก๊าบ
อ่านกี่ครั้งก็เห็นเป็น
AdmOd Sat, 12/02/2011 - 08:22
อ่านกี่ครั้งก็เห็นเป็น "ฉันเฉาะ" (-____-