วันอาทิตย์ที่ 1 พฤศจิกายน พ.ศ. 2552

เครือข่ายคอมพิวเตอร์และการกระจาย

IPv4 addresses
IPv4 ที่เราใช้กันอยู่ในปัจจุบัน เช่น 192.168.1.1 หรือ 203.97.45.200 มาจากเลขฐานสอง(มีเลข 1 กับเลข 0 เท่านั้น) จำนวน 32 บิท ตัวอย่าง

110000001010100000000001000000001

ถ้าเป็น IP แบบนี้ IP เดียว คงจะพอจำได้ แต่เวลาอ้างถึง IP คงจะบอกกัน หนึ่ง หนึ่ง ศูนย์ ศูนย์.......... เป็นที่ลำบาก ทั้งคนบอกและคนฟัง เพื่อให้สื่อถึงกันได้ง่ายขึ้น จึงใช้วิธีเปลี่ยนเป็นเลขฐานสิบ ที่เราคุ้นเคย แต่ถ้าเปลี่ยนทีเดียวทั้ง 32 บิท เป็นเลขฐานสิบแล้ว ก็ยังเป็นจำนวนสูงมาก ยากที่จะจดจำเช่นกัน จึงใช้แบ่งเลขฐานสอง 32 บิทที่ว่าเป็นช่วง ๆ ช่วงละ 8 บิท 4 ช่วง จากนั้นก็แปลงเลขฐานสอง 8 บิทเป็นเลขฐานสิบแต่ละช่วงคั่นด้วย "." อธิบายมากไป อาจจะงงเปล่า ๆ ดูตัวอย่างดีกว่า

11000000 10101000 00000001 000000001 = 192.168.1.1

สำหรับท่านที่ไม่เคยเรียนวิธีการแปลงฐานเลข อาจจะงง ได้เลข 192.168.1.1 มาอย่างไร มาดูวิธีการแปลงฐานเลข กันสักหน่อยดีไหม สูตรการแปลงฐานเลข (จำไม่ได้เหมือนกัน นึก ๆ เอา ถ้าผิดขออภัย)

N*B(x-1)
เมื่อ

N คือจำนวนเลขที่เราเห็น 0 หรือ 1 สำหรับเลขฐานสอง ถ้าเป็นฐานอื่น ก็จะมีเลชมากกว่านี้ เช่น ฐานแปด ก็จะมีเลข 0 - 7

B คือฐานเลข ในที่นี้ เท่ากับ 2 เพราะเป็นฐานสอง ถ้าฐานแปด B ก็จะเท่ากับแปด

X เป็นหลักที่เลข N อยู่
ว่าไปแล้วผมก็ชักมึน ๆ ไม่รู้ว่าสูตรจริง ๆ เป็นแบบนี้เปล่า มาดูตัวอย่างกันเลยดีกว่า

11000000 = 1*27 + 1*26 + 0*25+ 0*24 + 0*23 + 0*22 + 0*21 + 0*20

________= 128 + 64 + 0 + 0 + 0 + 0 + 0 + 0
________= 192
10101000 = 1*27 + 0*26 + 1*25+ 0*24 + 1*23 + 0*22 + 0*21 + 0*20
________= 128 + 0 + 32 + 0 + 8 + 0 + 0 + 0
________= 168
00000001 = 0*27 + 0*26 + 0*25+ 0*24 + 0*23 + 0*22 + 0*21 + 1*20
________= 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1
________= 1

พอว่าเรื่องการแปลงฐานเลข ทำให้นึกได้ เมื่อก่อนนี้ ไม่เข้าใจเลย เช่น เวลา Network admin ให้มาว่า เน็ตเวอร์กคุณคือ 203.46.246.64/28 นะ เราก็พอรู้ว่า /28 น่ะคือ netmask แล้วมันคือ netmask เท่าไร หาได้อย่างไร ตอนหลังจึงทราบว่า 28 มาจาก mask ตัวเลข 1 ไป 28 บิท(ของ 32 บิท) ที่เหลือเป็น 0 หมด เขียนเป็นเลขฐานสอง 8 บิท 4 ชุดได้ว่า

11111111 11111111 11111111 11110000 พอรู็ว่าเป็นแบบนี้ ก็แปลงเป็นฐานสิบจากวิธีการข้างบนได้ว่า 255.255.255.240 จึงหายสงสัยไปได้

IPv6 addresses หน้าตาเป็นอย่างไร ?
IPv4 คือเลขฐานสอง จำนวน 32 บิท ซึ่งก็ยากแก่การจำแล้ว มาดู IPv6 กันบ้าง ประกอบด้วยเลขฐานสอง จำนวน 128 บิท ครับท่าน ถ้าจะคิดว่า จะเป็น IPs ต่าง ๆ กันได้กี่ IPs ก็หาได้จาก

2^128-1: 340282366920938463463374607431768211455
คงเป็นไปไม่ได้ ที่ใครจะจำ 128 บิท IPs ได้ ถึงแม้จะแปลงเป็นเลขฐานสิบแล้วก็ตาม เพราะเป็นเลขถึง 39 หลัก ดังนั้นผู้ค้นคิด จึงตัดสินใจใช้เลขฐาน 16 แทน เพราะ 4 บิทของเลขฐานสอง แปลงเป็นเลขฐาน 16 ได้ 1 หลักพอดี คือ 0-9 จากนั้นก็ใช้ a-f แทน 10-15 (ถ้าใครไม่รู้จักเลขฐาน 16 ก็คือหนึ่งหลักมีเลขเริ่มต้นจาก 0 1 2 3 4 5 6 7 8 9 a b c d e f) ดังนั้นเลข ip ก็จะเป็นเลขฐาน 16 จำนวน 32 หลัก (128/4)

ffffffffffffffffffffffffffffffff
ซึ่งก็ยังจำและเขียนยากอยู่ดี หรือว่าเขียน ตกไปหนึ่งตัว ก็จะทำให้ผิดความจริงไปได้ เพื่อให้สังเกตุเห็นได้ง่าย ผู้ค้นคิดจึงกำหนดให้ใช้ ":" ขั้น แต่ละ 16 บิท(ฐานสอง) หรือ 4 หลักของเลขฐาน 16 ได้ผลเป็น

ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
ตัวอย่าง IPv6 address
3ffe:ffff:0100:f101:0210:a4ff:fee3:9566
เลข 0 ที่นำหน้า ของแต่ละ 16 บิท สามารถละไว้(ไม่ต้องเขียน)ได้

3ffe:ffff:0100:f101:0210:a4ff:fee3:9566 -> 3ffe:ffff:100:f101:210:a4ff:fee3:9566
ในแต่ละ 16 บิทบล็อค ถ้ามีแต่เลข 0 สามารถแทนด้วย "::" แต่ห้ามเขียนแบบนี้ ":::"

3ffe:ffff:100:f101:0:0:0:1 -> 3ffe:ffff:100:f101::1
การลดรูปมากที่สุด ก็คือ localhost address

0000:0000:0000:0000:0000:0000:0000:0001 -> ::1
IPv4 แล้วทำไมถึงเป็น IPv6 ทำไมไม่เป็น IPv5
4 บิทแรกของ IP header จะถูกกันไว้เป็นตัวบอกเวอร์ชั่นของ IP ดังนั้นเวอร์ชั่นของ IP ที่จะเป็นได้คือ 0 - 15

4 ถูกนำมาใช้แล้ว สำหรับ IPv4 ในปัจจุบัน
5 สำรองไว้ใช้สำหรับ Stream Protocol (STP, RFC 1819 / Internet Stream Protocol Version 2) ซึ่งจริง ๆ แล้วก็ยังไม่ได้นำมาใช้งาน
ดังนั้นเลขที่เหลือตัวต่อไปก็คือ 6 ด้วยเหตุนี้ จึงเป็น IPv6

URL
Http://Limux.sra.cattelecom.com/new/Ipv6.HTML

ไม่มีความคิดเห็น: