วันพุธที่ 10 กันยายน พ.ศ. 2557

โพรโตคอล ARP (Address Resolution Protocol)

          ARP (Address Resolution Protocol) เป็นโพรโตคอลเป็นโพรโตคอลชนิดหนึ่งที่เป็นตัวกลางในการสื่อสารที่ทำหน้าที่หาแอดเดรสและจับคู่ระหว่างไอพีแอดเดรส ที่เชื่อมโยงเครือข่ายของระบบการขอหมายเลขไอพีแอดเดรสมาใช้บริการเพื่อให้สามารถสื่อสารกันระหว่างระบบเครือข่ายต่างๆได้ สามรถส่งข้อมูลระหว่างคอมพิวเตอร์ที่ติดต่อกัน โดยมีฮาร์ดแวร์สร้างเฟรมข้อมูลแล้วโพรโตคอล ARP จะนำข้อมุลเหล่านั้นเข้าที่เครื่อง host ในระบบเครือข่ายต่อไป
      ในการสื่อสารใดๆ ก็ตาม จำเป็นต้องมีการสื่อสารผ่านตัวกลางในระดับ Physical เสมอ ซึ่่่่งเป็นระดับล่างสุดในการสื่อสาร สำหรับในโปรโตคอล TCP/IP ถือว่าเป็นชั้น Link Layer นั่นเอง การสื่อสารในระดับนี้เป็นการสื่อสารระหว่าง Hardware Interface ในเน็ตเวิร์คเดียวกัน ซึ่งมองข้อมูลเป็น Ethernet Frame เท่านั้น จะไม่สนใจว่าข้อมูลภายในเป็นอย่างไร มีต้นทางอยู่ที่ไหนหรือปลายทางไปหาใคร แต่สิ่งที่โปรโตคอลในชั้นนี้สนใจก็คือ ข้อมูลที่ Network Layer ส่งมาให้นั้น จะต้องส่งไปยัง Hardware Interface ไหน ซึ่งการระบุ Hardware Interface จะใช้เป็น MAC Address มีลักษณะเป็นเลขฐาน 16 ยาว 6 ไบต์ เช่น 23:43:AA:5B:32:2C ซึ่งจะไม่มีอุปกรณ์ที่มีหมายเลขนี้ซ้ำกันเด็ดขาด
         ในกรณีที่มีการส่งข้อมูลจาก interface หนึ่ง ทุกๆ interface ที่อยู่ในเน็ตเวิร์คเดียวกันจะได้รับข้อมูล แต่มีเพียงอินเทอร์เฟสที่มี MAC Address ตรงกับ MAC Address ของผู้รับที่ระบุในเฟรมข้อมูลเท่านั้น ที่จะนำข้อมูลนั้นไปประมวลผล ดังนั้นในการส่งข้อมูลจากเครื่องหนึ่งไปยังอีกเครื่องหนึ่ง ฝั่งผู้ส่งจะต้องระบุ MAC Address ของผู้รับให้ถูกต้อง จึงจะสามารถส่งข้อมูลไปได้ สมมติว่า เครื่องคอมพิวเตอร์ ip 172.17.3.12 ต้องการติดต่อกับ 161.246.10.21 การทำงานในระดับ IP จะสั่งให้ ส่งข้อมูลไปยัง 172.17.3.1 ซึ่งเป็น default Router แต่ 172.17.2.12 จะรู้ได้อย่างไรว่า 172.17.2.12 มี MAC Address คืออะไร ?
จุดนี้เองที่จะต้องมีการใช้ ARP ในการสอบถาม MAC Address จากเครื่องที่เราต้องการส่งข้อมูล เมื่อได้รับ MAC Address ของผู้รับมาแล้วจึงสามารถเชื่อมต่อกับ เครื่องอีกฝั่ง เพื่อการสื่อสารในระดับสูงขึ้นไปได้
 บทบาทของโพรโตคอล ARP
         โพรโตคอล ARP (Address Resolution Protocol) ทำหน้าที่ในการหาแอดเดรส โดยบทบาทของโพรโตคอล ARP มีความสำคัญมาก เพราะโพรโตคอล ARP ทำหน้าที่ในการจับคู่ระหว่างไอพีแอดเดรส ซึ่งเป็นแอดเดรสทางลอจิคัลกับฮาร์ดแวร์แอดเดรสซึ่งเป็นแอดเดรสทางฟิสิคัล ทั้งนี้เนื่องจากระบบของการส่งข้อมูลในระบบไอพีนั้นเป็นระบบที่ไม่ขึ้นกับฮาร์ดแวร์ใด ๆ ซึ่งหมายความว่าระบบไอพีไม่มีความสามารถในการเรียกใช้ฮาร์ดแวร์ในการส่งข้อมูลด้วยตัวเอง ทำให้เมื่อระบบไอพีต้องการส่งข้อมูล จะต้องร้องขอบริการจากระดับชั้นดาต้าลิงค์ แต่เนื่องจากระดับชั้นดาต้าลิงค์ไม่รู้จักแอดเดรสในระบบไอพี  ดังนั้นระบบไอพีจึงต้องทำการหาแอดเดรสที่ระดับชั้นดาต้าลิงค์รู้จัก ซึ่งก็คือฮาร์ดแวร์แอดเดรส เพื่อที่จะสร้างเฟรมข้อมูลในชั้นดาต้าลิงค์ได้ โดยโพรโตคอล ARP จะทำหน้าที่นี้การทำงานของ ARP เมื่อแพ็คเกตนำเข้าที่ระบุเครื่อง host ในระบบเครือข่ายมาถึง Gateway เครื่องที่ Gateway จะเรียกโปรแกรม ARP ให้หาเครื่อง host หรือ MAC address ที่ตรงกับ IP address โปรแกรม ARP จะหาใน ARP cache เมื่อพบแล้วจะแปลงแพ็คเกต เป็นแพ็คเกตที่มีความ ยาวและรูปแบบที่ถูกต้อง เพื่อส่งไปยังเครื่องที่ระบุไว้ แต่ถ้าไม่พบ ARP จะกระจาย แพ็คเกตในรูปแบบพิเศษ ไปยังเครื่องทุกเครื่องในระบบ และถ้าเครื่องใดเครื่องหนึ่งทราบว่ามี  IP address ตรงกันก็จะตอบกลับมาที่ ARP โปรแกรม ARP จะปรับปรุง ARP cache และส่งแพ็คเกตไปยัง MAC address หรือเครื่องที่ตอบมาโพรโตคอล  ARP ได้กำหนดไว้เป็นมาตรฐานภายใต้ RFC 826 โดยการทำงานของ ARP จะมีรูปแบบการทำงานในแบบ บรอดคาสต์  ดังนั้นเครือข่ายที่ใช้งานกับโพรโตคอล  ARP ได้จึงต้องเป็นเครือข่ายที่มีการทำงานในแบบบรอดคาสต์ ซึ่งระบบแลนส่วนใหญ่จะมีการทำงานเป็นแบบบรอดคาสต์อยู่แล้ว จึงสามารถทำงานร่วมกับโพรโตคอล ARPได้เป็นอย่างดี และนอกเหนือจากโพรโตคอล  ARP แล้วยังมีอีกโพรโตคอลหนึ่งที่ถือว่าเป็นโพรโตคอลคู่แฝดของ ARP โดยจะมีการทำงานที่ย้อนกลับกันกับโพรโตคอล ARP ดังนั้นจึงมีชื่อว่า RARP (Reverse ARP) โดยกำหนดไว้ภายใต้  RFC 903 โดยรูปแบบเฟรมของ  ARP และ RARP จะมีลักษณะเหมือนกัน ดังรูปที่ 1

รูปที่ 1 แสดงรูปแบบเฟรมของ ARP เมื่อใช้กับโพรโตคอล IP

สำหรับรายละเอียดของแต่ละฟิลด์ภายในเฟรม ARP นั้น มีดังต่อไปนี้
- Hardware มีขนาด 16 บิต บอกถึงชนิดของฮาร์ดแวร์ที่เออาร์พีทำงานอยู่ เช่น 1 หมายถึงเครือข่ายอีเทอร์เน็ต 4 หมายถึง เครือข่ายโทเคนริง เป็นต้น
- Protocol มีขนาด 16 บิต ทำหน้าที่บอกว่าเฟรม ARP นี้ถูกเรียกใช้จากโพรโตคอลใด
- HLEN มีขนาด 8 บิต ทำหน้าที่ระบุความยาวของฮาร์ดแวร์แอดเดรส ในกรณีของอีเทอร์เน็ตก็จะมีค่าเป็น 6                        
 - PLEN มีขนาด 8 บิต ทำหน้าที่ระบุความยาวของแอด3604.เดรสของโพรโตคอลที่เรียกใช้ ซึ่งในกรณีนี้ที่เรียกจากระบบไอพี ก็จะมีค่าเป็น 4
- Operation มีขนาด 16 บิตทำหน้าที่ระบุการทำงานของ ARP โดยจะมี 4 ค่า คือ
o 1 หมายถึง  ARP  Request ใช้ในการค้นหาหมายเลขฮาร์ดแวร์แอดเดรส
o 2 หมายถึง  ARP Replay ใช้ในการตอบกลับเพื่อบอกหมายเลขฮาร์ดแวร์แอดเดรส
         o 3 หมายถึง  RARP Request ใช้ในการค้นหาหมายเลขของโพรโตคอล
         o 4 หมายถึง RARP Replay ใช้ในการตอบกลับเพื่อบอกหมายเลขของโพรโตคอล
- Source Hardware Address ใช้ในการเก็บค่าฮาร์ดแวร์แอดเดรสของผู้ส่ง ไม่จำกัดความยาว
- Destination Hardware Address ใช้ในการเก็บค่าฮาร์ดแวร์แอดเดรสของผู้รับ ไม่จำกัดความยาว
- Source Protocol Address ใช้ในการเก็บค่าแอดเดรสของโพรโตคอลที่เรียกใช้ในฝั่งผู้ส่ง ไม่จำกัดความยาว
- Destination Protocol Address ใช้ในการเก็บค่าแอดเดรสของโพรโตคอลที่เรียกใช้ในฝั่งผู้รับ ไม่จำกัดความยาว

 การทำงานของโพรโตคอล  ARP  
       การทำงานของโพรโตคอล  ARP จะเริ่มขึ้นเมื่อระบบไอพีต้องการจะส่งแพ็กเกจออกไปยังเป้าหมาย สมมติว่าทำงานกับเครือข่ายอีเทอร์เน็ต ระบบไอพีจะต้องอาศัยเฟรมของอีเทอร์เน็ตในการส่ง แต่เนื่องจากกระบวนการในการส่งเฟรมอีเทอร์เน็ตจากต้นทางไปยังปลายทางนั้น จำเป็นต้องทราบฮาร์ดแวร์แอดเดรสของอุปกรณ์ต้นทาง และอุปกรณ์ปลายทาง
     สำหรับหมายเลขฮาร์ดแวร์แอดเดรสของอุปกรณ์ต้นทางนั้น ปกรณ์ที่จะส่งยอมทราบอยู่แล้ว สิ่งที่ยังขาดก็คือ หมายเลขฮาร์ดแวร์แอดเดรสของอุปกรณ์ปลายทาง ซึ่งระบบไอพีก็จะใช้บริการของโพรโตคอล  ARP ในการหาหมายเลขฮาร์ดแวร์แอดเดรสของอุปกรณ์ปลายทางโดยการบรอดคาสต์ไปในระบบดังตัวอย่างในรูปที 2


รูปที่ 2 แสดงการส่งแพ็กเกจ ARP

จากรูปที่ 2 สมมติว่าคอมพิวเตอร์ A ต้องการติดต่อกับคอมพิวเตอร์ B จึงส่งแพ็กเกจ ARP เข้าไปในเครือข่ายแบบบรอดคาสต์ ซึ่งทุกเครื่องที่อยู่ในเครือข่ายก็จะได้รับแพ็กเกจนี้ทั้งหมดโดยฟิลด์ต่าง ในแพ็กเกจจะมีค่าตามรูปที่ 5 โดยฟิล์ด Hardware มีค่าเท่ากับ 1 หมายความว่าเป็นเครือข่ายอีเทอร์เน็ต ฟิลด์โพรโตคอลมีค่าเท่ากับ 0800h หมายถึงถูกเรียกจากโพรโตคอลไอพี ฟิลด์ HLEN
มีค่าเท่ากับ 6 หมายถึงฮาร์ดแวร์แอดเดรสของเครือข่ายอีเทอร์เน็ตยาว 6 ไบต์ ฟิลด์ PLEN เท่ากับ 4 หมายถึงความยาวของแอดเดรสของโพรโตคอลที่เรียกใช้ ซึ่งก็คือไอพีแอดเดรสมีความยาว 4  ไบต์ ฟิลด์ Operation เป็น 1 หมายถึงเป็นการส่งแบบ ARP Request  จากนั้นจะเป็นฮาร์ดแวร์  3619 แอดเดรสของผู้ส่งหมายเลขไอพีของผู้ส่ง สำหรับฟิลด์ฮาร์ดแวร์แอดเดรสของผู้รับนั้น จะมีค่าเป็น 00:00:00:00:00:00 เนื่องจากยังไม่ทราบว่าผู้รับมีฮาร์ดแวร์แอดเดรสเป็นเท่าไร และสุดท้ายคือ หมายเลขไอพีแอดเดรสของผู้รับ ซึ่งฟิลด์นี้จะเสมือนกับเป็นคำถามว่าเครื่องที่มีไอพีแอดเดรสนี้   มีฮาร์ดแวร์แอดเดรสเป็นเท่าใดคอมพิวเตอร์ทุกเครื่องในเครือข่ายล้วนได้รับแพ็กเกจนี้  เพราะเป็นการส่งแบบบรอดคาสต์ แต่จะมีเพียงเครื่องที่มีหมายเลขไอพีแอดเดรสตรงกับที่ระบุไว้ในฟิลด์หมายเลขไอพีของผู้รับเท่านั้น ที่จะรับเอาแพ็กเกจนี้ไปประมวลผลแล้วตอบกลับ  ดังนั้นเมื่อเครื่องคอม
พิวเตอร์ได้รับแพ็กเกจดังกล่าวแล้ว  จะต้องเปรียบเทียบกับหมายเลขไอพีแอดเดรสของตนเองว่าตรงหรือไม่ หากไม่ตรงก็จะทิ้งแพ็กเกจนั้นไป  หากตรงก็จะรับเข้ามาแล้วตอบกลับในแบบยูนิคาสต์ดังตัวอย่างในรูปที่ 3


           
 รูปที่ 3 แสดงการตอบกลับของโพรโตคอล ARP

จากรูปที่ 3 จะเห็นได้ว่าคอมพิวเตอร์ B จะส่งแพ็กเกจ ARP กลับมายังคอมพิวเตอร์ A ในแบบยูนิคาสต์ ทั้งนี้เนื่องจากคอมพิวเตอร์ B ทราบอยู่แล้วว่าคอมพิวเตอร์ A มีหมายเลขฮาร์ดแวร์แอดเดรส
เป็นอะไร จากแพ็กเกจ ARP ที่ส่งมาก่อนหน้านี้ โดยมีรายละเอียดของฟิลด์ คือ ฟิล์ด Hardware มีค่าเท่ากับ 1 หมายความว่าเป็นเครือข่ายอีเทอร์เน็ต ฟิลด์โพรโตคอลมีค่าเท่ากับ 0800h หมายถึง
ถูกเรียกจากโพรโตคอลไอพี ฟิลด์ HLEN มีค่าเท่ากับ 6 หมายถึงฮาร์ดแวร์แอดเดรสยาว 6 ไบต์ ฟิลด์ PLEN เท่ากับ 4 หมายถึงความยาวของไอพีแอดเดรส  4 ไบต์ ฟิลด์ Operation เป็น 2 หมายถึงเป็น ARP Reply จากนั้นจะเป็นฮาร์ดแวร์แอดเดรสของผู้ส่งหมายเลขไอพีของผู้ส่ง ฮาร์ดแวร์แอดเดรสของผู้รับ และหมายเลขไอพีแอดเดรสของผู้รับจากรูปที่ 2 และ 5 นั้นเป็นตัวอย่างของการติดต่อภายในเครือข่ายเดียวกัน (Local Network) แต่หากเป็นการติดต่อกันข้ามเครือข่าย (Remote Network) แล้ว การทำงานจะต่างออกไปจากในรูปเล็กน้อย แต่การทำงานที่ต่างออกไปนั้น มิใช่ต่างออกไปเพราะโพรโตคอล  ARP เอง แต่ต่างออกไปเพราะเมื่อระบบไอพีทราบว่าคอมพิวเตอร์ที่ติดต่อด้วย เป็นแอดเดรสที่เป็นเครือข่ายอื่น มันจะทำการติดต่อไปยังอุปกรณ์เลือกเส้นทาง แทนที่จะส่งไปยังเครื่องนั้นโดยตรง  จากการทำงานของโพรโตคอล ARP ที่ผ่านมานั้น จะเห็นถึงประโยชน์ของโพรโตคอลนี้แล้ว  แต่ในสภาพการใช้งานจริงนั้น  จะต่างจากนี้เล็กน้อย กล่าวคือ  ในการค้นหาฮาร์ดแวร์แอดเดรสนั้น จะไม่ค้นหาในทุก ๆ ครั้งของการส่งข้อมูลในระบบไอพี ทั้งนี้เนื่องจากในการส่งข้อมูลแต่ละครั้ง เช่น การส่งไฟล์ 1 ไฟล์นั้น โดยส่วนใหญ่จะไม่สามารถส่งให้เสร็จสิ้นในแพ็กเกจเดียวได้ ดังนั้นหากต้องการส่งข้อมูล 1 แพ็กเกจ จะต้องไปหาฮาร์ดแวร์แอดเดรส 1 ครั้งแล้ว ก็หมายความว่าหากต้องการส่ง 10 แพ็กเกจ ก็จะต้องไปหาฮาร์ดแวร์แอดเดรส 10 ครั้งด้วย ซึ่งนั่นหมายความว่าระบบไม่มีประสิทธิภาพแล้ว ดังนั้นเพื่อป้องกันปัญหานี้ ระบบปฏิบัติการที่ใช้ไอพี จึงสร้างแคช ARP (ARP Cache) เอาไว้ เพื่อทำหน้าที่เก็บค่าของฮาร์ดแวร์แอดเดรสที่ได้ค้นหาก่อนหน้านี้เอาไว้ เพื่อที่เมื่อจะส่งข้อมูลในครั้งต่อไป ไปยังคอมพิวเตอร์เครื่องเดิม จะได้ไม่ต้องส่งแพ็กเกจ ARP ไปถามอีก สามารถใช้จากแคช ARP ได้เลย สำหรับการเรียกดูข้อมูลจาก แคช ARP นั้น สามารถใช้คำสั่ง arp –a หรือ arp –g เรียกดูได้ อย่างไรก็ตามข้อมูลในแคชนั้นจะไม่เก็บอย่างถาวร โดยจะมีค่า Time Out ที่ขึ้นอยู่กับระบบ
ปฏิบัติการ Network Security, สำหรับโพรโตคอล RARP นั้น มีหน้าที่ตรงข้ามกับ ARP คือ ทำหน้าที่ค้นหาไอพีแอดเดรส จากค่าฮาร์ดแวร์แอดเดรส โดยส่วนใหญ่โพรโตคอล  RARP จะใช้กรณีที่มีการขอหมายเลขไอพีแอดเดรส เช่น ในเครื่องประเภทที่เป็นแบบ Diskless ซึ่งไม่มีการกำหนดไอพีแอดเดรสเอาไว้เครื่องประเภทนี้ เมื่อบูตแล้วก็จะใช้โพรโตคอล  RARP  เพื่อขอหมายเลขไอพีแอดเดรสมาใช้งาน
กลไกการทำงานของ ARP
การทำงานของ ARP เป็นเรื่องไม่ซับซ้อน มีเพียง 2 ขั้นตอนเท่านั้นคือ
1.      เครื่องที่ต้องการสอบถาม MAC Address ส่ง ARP packet เรียกว่า ARP Request ซึ่งบรรจุ IP , MAC Address ของตนเอง และ IP Address ของเครื่องที่ต้องการทราบ MAC Address ส่วน MAC Address ปลายทางนั้น จะถูกกำหนดเป็น FF:FF:FF:FF:FF:FF ซึ่งเป็น Broardcast Address เพื่อให้ ARP packet ถูกส่งไปยังเครื่องทุกเครื่องที่อยู่ในเน็ตเวิร์คเดียวกัน



รูปที่ 3.1 ARP Request จะถูกส่งไปยังเครื่องทุกเครื่องในเน็ตเวิร์ค

2. เฉพาะเครื่องที่มี IP Address ตรงกับที่ระบุใน ARP Packet จะตอบกลับมาด้วย ARP Packet เช่นกัน โดยใส่ MAC Address และ IP Address ของตนเองเป็นผู้ส่ง และใส่ MAC Address และ IP Address ของเครื่องที่ส่งมาเป็นผู้รับ packet ที่ตอบกลับนี้เรียกว่า ARP Reply

รูปที่ 3.2 ARP Reply จะถูกตอบกลับมาจากเครื่องที่มี IP Address เพื่อบอก MAC Address ของตนเอง

              กระบวนการ ARP จะเกิดขึ้นทุกครั้งที่มีการส่ง IP datagram และกระบวนการ ARP ก็กินเวลารับส่งข้อมูลและทรัพยากรในเน็ตเวิร์คพอสมควร โดยเฉพาะในจุดที่ต้องมีการ Broadcast ARP Request ซึ่งหากเป็นเช่นนั้น แบนวิธ์อันมีค่าของเน็ตเวิร์คคงหมดไปกับ ARP Packet ที่วิ่งพล่านในสายเคเบิ้ลแน่ๆ จึงมีการออกแบบบัฟเฟอร์เป็นตารางจับคู่ ระหว่าง ARP กับ IP Address เพื่อไม่ต้องส่ง ARP Request / Reply ทุกครั้งที่จะทำการส่ง IP datagram แต่ IP Address นั้นเป็นสิ่งที่ผู้ใช้กำหนดขึ้น เป็น Logical ซึ่งสามารถเปลี่ยนแปลงได้ ดังนั้น ข้อมูลในตารางนี้จึงต้องมีอายุการใช้งาน โดยทั่วไป กำหนดให้เป็นเวลา 20 นาที เมื่อหมดเวลาแล้ว หากจะส่ง IP Datagram ครั้งต่อไป จะต้องทำการส่ง ARP Request ใหม่ ท่านสามารถเรียกดู ARP cache ในระบบปฏิบัติการ Linux ได้ด้วยคำสั่ง

ข้อดีของโพรโตคอล ARP
   1. การส่งข้อมูลจากเครื่องหนึ่งไปยังอีกเครื่องหนึ่ง จึงจะต้องระบุ MAC Address ของผู้รับให้จะ
       สามารถส่งข้อมูลไป
   2. การใช้ ARP ในการสอบถาม MAC Address จากเครื่องที่เราต้องการส่งข้อมูล เมื่อได้รับ MAC
     Address ของผู้รับมาแล้วจึงสามารถเชื่อมต่อกับเครื่องอีกฝั่งเพื่อการสื่อสารในระดับสูงขึ้นไปได้
   3. เนื่องจากระบบไอพีแอดเดรสไม่มีความสามารถในการเรียกใช้ฮาร์ดแวร์ในการส่งข้อมูลด้วย
       ตนเองจึงมีโพรโตคอล ARP เป็นตัวกลางเพื่อร้องขอบริการระดับชั้นดาต้าลิงค์
   4. สามารถใช้โพรโตคอล ARP เชื่อมต่อระบบเครือข่ายในการส่งเฟรมข้อมูลได้
   5. เป็นแอดเดรสที่ทำการติดต่อไปยังอุปกรณ์เลือกเส้นทางแทนที่จะส่งไปยังเครื่องนั้นโดยตรง

ข้อเสียของโพรโตคอล ARP
   1. เป็นโพรโตคอลที่ต้องใช้ในการจดจำหมายเลขเพื่อส่งข้อมูลติดต่อกันฮาร์ดแวร์แอดเดรสของ   
       อุปกรณ์ปลายทางระหว่างเครือขาย
   2. ในการค้นหาฮาร์ดแวร์แอดเดรสนั้น จะไม่ค้นหาในทุก ๆ ครั้งของการส่งข้อมูลในระบบไอพี  
       ทั้งนี้เนื่องจากในการส่งข้อมูลแต่ละครั้ง
   3. กระบวนการ ARP จะเกิดขึ้นทุกครั้งที่มีการส่ง IP datagram และกระบวนการ ARP ก็กินเวลา  
      รับส่งข้อมูลและทรัพยากรในเน็ตเวิร์คพอสมควร โดยเฉพาะในจุดที่ต้องมีการ Broadcast ARP     
      Request ซึ่งหากเป็นเช่นนั้น แบนวิธ์อันมีค่าของเน็ตเวิร์คคงหมดไปกับ ARP Packet ที่วิ่ง
      พล่านในสายเคเบิ้ล
   4. มีอุปกรณ์หลายอย่างที่เกี่ยวข้องในเชื่อมระบบเครือข่าย
   5.  ARP Cache ไม่สามารถเก็บข้อมูลแคช ARP ได้อย่างถาวร

 ประโยชน์และการนำไปประยุกต์ใช้ในทางสร้างสรรค์
        การนำอุปกรณ์ที่เกี่ยวข้องในการเชื่อมต่อระหว่างเครือข่ายที่ติต่อสื่อสารกันในโพรโตคอล ARP เพื่อนำไปติดตั้งในการควบคุมการทำงานต่างๆเช่น การควบคุมสัญญาณไฟจราจร การติดตั้งควบคุมอัตราเร็วของรถที่วิ่งบนท้องถนน เพื่อลดอุบัติเหตุบนท้องถนนได้   การส่งสัญญาณควบคุมความเร็วรถในแต่ละคันโดยมีการจำกัดความเร็วของรถด้วยติดตั้งระบบเชื่อมต่อ เช่นการติดตั้งฮาร์ดแวร์ในรถแต่ละคันที่สามารถส่งเฟรมข้อมูลเชื่อมต่อเครือข่ายของการทำงานของโพรโตคอล ARP โดยรถแต่ละคันจะมีหมายเลขโพรโตคอลประจำรถเพื่อที่สามารถติดต่อสัญญาณของรถที่ทำผิดกฎหมาย หรือทำความผิดอย่างใดอย่างหนึ่ง เพื่อง่ายต่อการติดตามควบคุมรถคันนั้นได้ บางทีอาจนำอุปกรณ์เชื่อมต่อเครือข่ายเหล่านี้มาช่วยในเรื่องการก่อเหตุอาชญากรรม เพื่อช่วยไม่ให้เกิดอาชญากรรมขึ้น 
       การใช้อุปกรณ์เกี่ยวกับโพรโตคอล ARP มาใช้กับอุปกรณ์ไฟฟ้าภายในบ้าน ที่ใช้โพรโตคอล ARP ในการค้นหาหมายเลขของอุปกรณ์เครื่องใช้ไฟฟ้าที่ทำรหัสติดตั้งไว้แล้วส่งสัญญาณการควบคุมเครื่องใช้ไฟฟ้าต่างๆ   เช่น การใช้คอมพิวเตอร์เครื่องหนึ่งสั่งให้โทรทัศน์ทำงาน เปิด เปลี่ยนสัญญาณ สั่งให้เครื่องซักผ้าทำงานเองโดยติดตั้งฮาร์ดแวร์เพื่อควบคุมเครื่องซักผ้าให้ทำงานตามคำสั่ง ที่ได้ติดตั้งข้อมูลไว้ เตาไมโครเวฟ  เครื่องทำนํ้า้อุ่น และอุปกรณ์อื่นๆอีกมากมาย ให้ทำงานตามคำสั่งได้  ด้านการพัฒนาเทคโนโลยีให้เจริญก้าวหน้าขึ้นไปเรื่อยๆและทางการแพทย์สามารถใช้เชื่อมเครือข่ายในตัวอุปกรณ์ที่ติดตั้งเพื่อรักษาหรือบำบัดผุ้ป่วย หรือใช้เพื่อการวิจัยโรคที่เกิดขึ้นให้มีความสะดวกรวดเร็วและมีประสิทธิภาพยิ่งๆขึ้นไป

        จะเห็นได้ว่าโพรโตคอล ARP สามารถเป็นตัวกลางในการเชื่อมต่ออุปกรณ์อื่นๆให้ทำงานร่วมกันได้สามารถติดต่อสื่อสารระหว่างระบบเครือข่ายได้โดยอาศัยตัวกลางคือโพรโตคอล ARP ที่ทำหน้าที่ค้นหาหมายเลขจากฮาร์ดแวร์ โดยส่งข้อมูลเป็นแพกเก็จไปยังไอพีแอดเดรส และทำการเชื่อมโยงเครือข่ายส่งข้อมูลสื่อสารกันได้

วันเสาร์ที่ 6 กันยายน พ.ศ. 2557

Internet Protocol Version 6 (IPv6)

Internet Protocol Version 6 (IPv6)
          การขยายตัวอย่างรวดเร็วของอินเตอร์เน็ตอย่างที่ไม่เคยมีมาก่อน และไม่เคยคาดคิด ได้ทำให้เกิดปัญหาของ IPv4 มีจำนวนไม่เพียงพอต่อการใช้งาน ซึ่งเป็นปัญหาใหญ่ที่มีใน IPv4 โดย IPv6 สามารถแก้ไขปัญหาการขาดแคลนของจำนวนที่อยู่ IPv4 โดยทำการพัฒนาและเพิ่มคุณสมบัติเพื่อให้รองรับความต้องการที่เพิ่มขึ้น โดยพื้นฐานของตัว IPv6 เอง ได้แสดงให้เห็นการพัฒนาการออกแบบให้รองรับหมายเลขที่อยู่ได้สูงถึง 3.4 x 1038 เพื่อแก้ปัญหาการคลาดแคลนหมายเลขที่อยู่ IPv4 และคุณสมบัติหนึ่งที่น่าสนใจของ IPv6 คือเฮดเดอร์ที่มีจำนวนฟิลด์เพียงครึ่งเดียวของ IPv4 ทำให้มีความเร็วในการประมวลผลเพิ่มขึ้นและฟิลด์ในรุ่นเดิมยังสามารถนำมาใช้ได้ โดยการนำมาใส่ลงไปในส่วนขยายของเฮดเดอร์ (Extension Header) ซึ่งอยู่ถัดจากเฮดเดอร์ปกติ ดังรูปที่ 1

รูปที่ เฮดเดอร์ IPv4 และ IPv6
         โดย IPv6 ได้มีการปรับปรุงหลัก  ในเรื่องของหมายเลขที่อยู่ให้รองรับได้มากขึ้น และมีการจัดเรียงลำดับและมีความกระชับมากขึ้น ทำให้การกำหนดเส้นทางมีประสิทธิภาพมากขึ้น และมีความน่าเชื่อถือมากขึ้น ซึ่งมีวิธีการแก้ปัญหาหลัก ๆ ของ IPv4 ดังต่อไปนี้
          1 เพิ่มพื้นที่การใช้งานให้ใหญ่ขึ้นโดยที่ IPv6 ได้ออกแบบให้รองรับหมายเลขไอพีแอดเดรสได้สูงถึง 3.4 x 1038 ซึ่งทำให้มีจำนวนที่อยู่เพียงพอสำหรับอนาคตและยังช่วยให้อุปกรณ์ทั้งหมดที่เชื่อมต่อบนอินเตอร์เน็ตที่ใช้ NAT บนพื้นที่ของที่อยู่ที่ยังมีการจัดสรรให้เสมอภาคมากขึ้น
          2 โครงสร้างพื้นฐานลำดับชั้นของเร้าติง ซึ่งหมายเลขที่อยู่ที่เข้าถึงได้บน IPv6 ในส่วนของอินเตอร์เน็ตที่เรียกว่าลำดับชั้นของผู้ให้บริการอินเตอร์เน็ต (ISPs) ซึ่งปกติจะอยู่ระหว่างองค์กร บ้าน หรือ เส้นทางหลักของอินเตอร์เน็ตประเภทของที่อยู่แบบ Global Address ได้ถูกออกแบบให้เป็นแบบสรุปรวม (summarizable) และลำดับชั้นทำให้เส้นทางในตารางเส้นทางของเร้าเตอร์สั้นลง
          3 การตั้งค่าที่อยู่โดยอัตโนมัติ โฮสต์ที่ใช้หมายเลขไอพีแอดเดรส IPv6 สามารถกำหนดค่าที่อยู่ได้โดยอัตโนมัติ และกำหนดค่าพารามิเตอร์อื่นๆ ถึงแม้ว่าในโครงข่ายนั้นๆ จะไม่มีเครื่องแม่ข่าย DHCP
          การสนับสนุนการลำดับจัดส่งที่ดี มีการจัดลำดับการส่งเปรียบเสมือนฟิลด์ Type-of-Service (ToS) ของ IPv4 สำหรับการส่งที่ไม่เป็นมาตรฐาน นอกจากนี้ฟิลด์ Flow Label ใน IPv6 เฮดเดอร์เป็นการส่งเพ็กเก็ตที่ทำให้เร้าเตอร์มีการส่งที่มีประสิทธิภาพมากขึ้น

ตำแหน่งเฮดเดอร์ของหมายเลขที่อยู่ IPv6 ที่ตัดออกดังต่อไปนี้
          1 ความยาวของเฮดเดอร์ ถูกตัดออกไปเนื่องจากเฮดเดอร์ของ IPv6 มีขนาดคงที่ 40 ไบต์ ทำให้มีประสิทธิภาพโดยรวมของการประมวลผลเพ็กเก็ตดีขึ้น และไม่เสียเวลาในการคำนวณขนาดของเฮดเดอร์
          2 Identification Flag และ Flag Offset Protocol Options รวมทั้ง Padding ถูกย้ายไปอยู่ในส่วนขยายของเฮดเดอร์ (Extended Header) เนื่องจากเป็นส่วนที่ไม่จำเป็นต้องประมวลผลในทุก ๆ เร้าเตอร์
          3 การตรวจสอบส่วนเฮดเดอร์ถูกตัดออกเนื่องจากซ้ำซ้อนกับฟังก์ชันของโพรโทคอลในชั้นที่อยู่สูงกว่า อีกทั้งเป็นการเพิ่มประสิทธิภาพของการประมวลผลด้วย เนื่องจาก การตรวจสอบความถูกต้องของข้อมูล (Checksum) จะต้องมีการคำนวณใหม่ที่เร้าเตอร์เสมอ หากตัดออกจะลดภาระที่เร้าเตอร์ไปได้

ตำแหน่งเฮดเดอร์ของหมายเลขที่อยู่ IPv6 ปรับเปลี่ยนดังต่อไปนี้
          1 Total Length ในเฮดเดอร์ IPv4 เปลี่ยนมาเป็น Payload ในเฮดเดอร์ IPv6 เพื่อระบุขนาดของ Payload ในหน่วยไบต์ ดังนั้นขนาดของ Payload สูงสุดจะเป็น 65,536 ไบต์
          2 Time-To-Live (TTL) ของเฮดเดอร์ IPv4 เปลี่ยนมาเป็น Hop Limit เนื่องจาก TTL ระบุเวลาในชุดข้อมูลอยู่ในอินเทอร์เน็ตมีหน่วยเป็นวินาที แต่เร้าเตอร์ไม่สามารถวัดเวลาของเพ็กเก็ตในหน่วยวินาที ทำได้เพียงวัดจำนวน HOP ที่เพ็กเก็ตนั้นผ่านในเครือข่ายจะสามารถผ่านได้ไม่เกินกี่ HOP ในการเดินผ่านเครือข่ายโดยการลด TTL ครั้งละหนึ่งหน่วยทุกครั้งที่เพ็กเก็ตเดินทางผ่านเร้าเตอร์ แม้จะใช้เวลาประมวลผลเพ็กเก็ตน้อยกว่าหรือมากกว่า 1 วินาที ทำให้ไม่ตรงกับความหมายของ TTL ดังนั้นจึงถูกเปลี่ยนเป็น Hop Limit เพื่อให้ตรงกับความหมายจริง ซึ่งเหมาะสมและง่ายสำหรับการประมวลผล
          3 Protocol ของเฮดเดอร์ IPv4 เปลี่ยนมาเป็น Next Header ซึ่งจะใช้ระบุส่วนขยายเฮดเดอร์ว่าเป็นเฮดเดอร์ประเภทใด เช่น ส่วนขยายเฮดเดอร์ชนิดไอพีเซค (IPsec)  จะมีค่า Next Header เท่ากับ 51 
          4 ประเภทของบริการ (Type-of-Service: ToS) ของเฮดเดอร์ IPv4 เปลี่ยนมาเป็น Traffic Class ซึ่งมีจำนวนบิตมากกว่า สามารถแบ่งกลุ่มและระดับความสำคัญของแต่ละเพ็กเก็ตละเอียดมากขึ้น ทำให้เร้าเตอร์สามารถจัดลำดับการส่งเพ็กเก็ตให้เหมาะสม

ตำแหน่งเฮดเดอร์ของหมายเลขที่อยู่ IPv6 ที่เพิ่มขึ้นดังต่อไปนี้
          Flow Label ใช้ระบุลักษณะการไหลเวียนของ การจราจรของข้อมูลระหว่างต้นทางกับปลายทาง เนื่องจากในแอปพลิเคชั่นหนึ่งมีการจราจรของข้อมูลหลายประเภท เช่น ภาพ, เสียง หรือ ตัวอักษร เป็นต้น และการจราจรของข้อมูลแต่ละประเภทมีความต้องการที่แตกต่างกัน Flow Label จึงมีไว้เพื่อแยกประเภทของการจราจรของข้อมูลและเพื่อให้เร้าเตอร์ทราบว่าควรปฏิบัติต่อการจราจรของข้อมูลแต่ละประเภทแตกต่างกัน

ประสิทธิภาพด้านต่าง ๆ ของหมายเลขที่อยู่  IPv6
          นอกจากจำนวนของหมายเลขที่อยู่ IPv6 จะเพิ่มมากขึ้น แต่ IPv6 ยังปรับปรุงประสิทธิภาพต่าง ๆ ดังต่อไปนี้
          การจัดการ (Management) เนื่องจากการตั้งค่าและปรับแต่งระบบเครือข่ายมีความซับซ้อนมากขึ้น ดังนั้น ไอพีรุ่นที่ 6 จึงสนับสนุนการติดตั้งและปรับแต่งระบบแบบอัตโนมัติ เพื่ออำนวยความสะดวกสำหรับการปรับเปลี่ยนหมายเลขที่อยู่การเชื่อมต่อกับผู้ให้บริการหลายราย และการจัดการเครือข่ายแบบปลั๊กแอนด์เพลย์ (Plug-and-Play)
          2 ที่อยู่แบบ Broadcast, Multicast และ Anycast ซึ่งที่อยู่ IPv4 มีการจัดสรรหมายเลขที่อยู่ส่วนหนึ่งเพื่อเป็นที่อยู่ Broadcast แต่การสื่อสาร Broadcast จะสิ้นเปลืองแบนด์วิด แต่ที่อยู่แบบ Multicast เป็นการสื่อสารที่มีประสิทธิภาพมากกว่าและเริ่มเป็นที่นิยม ที่อยู่ IPv6 จึงถูกออกแบบให้รองรับกลุ่ม Multicast และตัดที่อยู่ Broadcast ออก นอกจากนี้ยังเพิ่มที่อยู่แบบ Anycast ที่อนุญาตให้อุปกรณ์มากกว่าหนึ่งจัดสรรหมายเลขที่อยู่เดียวกันได้
          ระบบความปลอดภัย (Security) เร้าเตอร์และอุปกรณ์ภายในเครือข่าย IPv6 สามารถรองรับการใช้งาน IPSec และยังมีการกำหนดความปลอดภัยของ Payload สองประเภทคือ 
             3.1 Authentication Payload 
             3.2 Encrypted Security Payload 
          เพื่อสนับสนุนการรับส่งข้อมูลที่มั่นคงปลอดภัยภายใต้ระดับชั้นเครือข่าย (Network Layer) แทนการใช้ชั้นโปรแกรมประยุกต์ (Application Layer) เหมือนในเครือข่าย IPv4
          4 Mobile IP โดย IPv6 สนับสนุนการใช้งานเครือข่ายแบบเคลื่อนที่เช่นเดียวกับ IPv4 แต่มีประสิทธิภาพมากกว่า เนื่องจากส่งข้อมูลผ่านเส้นทางที่สั้นที่สุดโดยไม่ต้องอาศัยตัวกลางในการส่งต่อข้อมูล และสามารถใช้ IPSec ในการป้องกันเพ็กเก็ตในการรับและส่งข้อมูล
          5 Virtual Private Network (VPN) การให้บริการ VPN ของเครือข่าย IPv4 จะใช้ IPSec ในการเข้ารหัสในชั้นเครือข่าย ซึ่งจะเกิดปัญหาหากเครือข่ายต้นทางหรือปลายทางทำการแปลงหมายเลขที่อยู่หรือ NAT เนื่องจากการเข้ารหัสต้องสิ้นสุดก่อนถึงจุดหมายปลายทาง แต่สำหรับเครือข่าย IPv6 ไม่มีการแปลงหมายเลขที่อยู่ดังนั้นจึงไม่เกิดปัญหาดังกล่าว นอกจากนี้ยังมีส่วนขยายของเฮดเดอร์ หรือเฮดเดอร์การพิสูจน์ (Authentication Header) และ Payload การเข้ารหัสความปลอดภัย เพื่อรองรับการใช้งาน VPN แบบปลอดภัย
          คุณภาพของการบริการ (Quality-of-Service) โดยที่อยู่ IPv6 ออกแบบมาให้สนับสนุนการรับประกันคุณภาพของบริการตั้งแต่เริ่ม โดยจะเห็นได้จากตำแหน่ง Flow Label และ Traffic Class ในเฮดเดอร์ แม้ว่าในเฮดเดอร์ของ IPv4 จะมีตำแหน่ง Type-of-Service (ToS) แต่ไม่มีการใช้อย่างแพร่หลาย เนื่องจากไม่มีมาตรฐานในการกำหนดค่าและมีเร้าเตอร์บางตัวเท่านั้นที่สามารถประมวลผลเฮดเดอร์ในตำแหน่ง ToS ได้ โดยที่ผ่านมาเครือข่าย IPv4 จะปล่อยให้ชั้นข้างล่างจัดการเรื่อง QoS แทน เช่น ผ่านเทคโนโลยี Multiprotocol Label Switching (MPLS) เป็นต้น

รูปแบบของหมายเลขที่อยู่ IPv6
          ในรูปแบบของหมายเลขที่อยู่ IPv6 จะมีขนาด 128 บิต โดยใช้เลขฐาน 16 ทำการแบ่งหมายเลขออกเป็น 8 กลุ่ม กลุ่มละ 4 ตัว คั่นกลางด้วยเครื่องหมาย :” ดังตัวอย่างต่อไปนี้
hhhh:hhhh:hhhh:hhhh:hhhh:hhhh:hhhh:hhhh
h = เลขฐานสิบหก ( F)
2001:0db8:3c4d:0012:0000:0000:1234:56ab

การย่อที่อยู่ใน IPv6
          หมายเลขไอพีแอดเดรสของ IPv6 ค่อนข้างยาวและค่อนข้างยากในการจ แต่ก็ได้มีเทคนิคในการย่อหมายเลขที่อยู่ของ IPv6 ให้สั้นลง ซึ่งไม่มีคุณสมบัตินี้ใน IPv4 โดยการตัดบางส่วนของที่อยู่ออก โดยมีเงื่อนไข ดังนี้
          หากมีเลขศูนย์ด้านหน้าของกลุ่มใดสามารถละไว้ได้
2001:0db8:3c4d:0012:0012:0012:1234:56ab
เขียนย่อได้เป็น
2001:db8:3c4d:12:12:12:1234:56ab
          หากมีกลุ่มใดมีเลขศูนย์ทั้ง 4 ตัว สามารถเขียนแทนได้ด้วย “0
2001:0db8:3c4d:0012:0000:0000:1234:56ab 
เขียนย่อได้เป็น
2001:db8:3c4d:12:0:0:1234:56ab
          3 หากกลุ่มใดกลุ่มหนึ่ง หรือหลายกลุ่มที่มีตำแหน่งติดกัน เป็นเลขศูนย์ทั้งหมด สามารถละไว้ได้โดยใช้เครื่องหมาย “::” แต่จะสามารถทำในลักษณะนี้ได้ในตำแหน่งเดียวเท่านั้น ถ้ากลุ่มที่มีเลขศูนย์ 2 กลุ่มติดกัน แต่มีกลุ่มที่มีตัวเลขคั่นอยู่ ต้องแทนที่ได้เพียงแค่คู่เดียว
2001:0db8:3c4d:0012:0000:0000:1234:56ab 
เขียนย่อได้เป็น
2001:db8:3c4d:12::1234:56ab
หรือ
2001:0000:0000:0012:0000:0000:1234:56ab
เขียนย่อได้เป็น
2001::12:0:0:1234:56ab

หมายเลขที่อยู่แบบพิเศษ
          1  0:0:0:0:0:0:0:0 เท่ากับ :: โดยมีความหมายเดียวกับ 0.0.0.0 ในที่อยู่ IPv4
          2  0:0:0:0:0:0:0:1 เท่ากับ ::1 มีความเดียวกับ 127.0.0.1 ในที่อยู่ IPv4
          3  0:0:0:0:0:0:192.168.100.1 เป็นการกำหนดหมายเลขที่อยู่ IPv6 เพื่อให้เข้ากันได้กับที่อยู่ IPv4
          4  2000::/3 เป็นช่วงที่อยู่ของ Global Unicast
          5  FC00::/7 เป็นช่วงที่อยู่ของ Unique Local Unicast
          6  FE80::/10 เป็นช่วงที่อยู่ของ Link-Local Unicast
          7  FF00::/8  เป็นช่วงที่อยู่ของ Multicast
          8  3FFF:FFFF::/32 และ 2001:0DB8::/32 เป็นช่วงที่อยู่ที่สงวนไว้สำหรับการทดลอง
          9  2002::/16 เป็นช่วงที่อยู่สำหรับการส่งเพ็กเก็ต IPv6 ไปบนเครือข่ายที่ใช้หมายเลขที่อยู่ IPv6

การใช้งานหมายเลขที่อยู่ ไอพีรุ่นที่ 6
          ที่อยู่ IPv6 ใช้ “ / ” เพื่อแสดงว่ามีจำนวนกี่บิตภายในที่อยู่บน IPv4 ที่ Subnet มีรูปแบบดังนี้
          หมายเลขที่อยู่ IPv6/ความยาวของ Prefix
          1 หมายเลขที่อยู่ IPv6 เป็นที่อยู่ขนาด 128 บิต
          2 ความยาว Prefix เป็นเลขใช้แสดงจำนวนบิตของเครือข่าย ดังตัวอย่าง
2001:C:7:ABCD::1/64 ที่อยู่นี้สามารถถูกเขียนเป็น
2001:000C:0007:ABCD:0000:0000:0000:0001/64
64 บิตแรก ได้แก่ 2001:000C:0007:ABCD เป็นที่อยู่แบบ Prefix และ 64 บิตสุดท้าย ได้แก่ 0000:0000:0000:0001 เป็นหมายเลขอินเตอร์เฟส หน่วยงานที่รับผิดชอบในการกำหนดหมายเลขที่อยู่สำหรับ IPv6 ได้แก่ Internet Corporation for Assigned Named and Number (ICANN) โดย ICANN จะเป็นผู้กำหนดหมายเลขที่อยู่ให้กับองค์กรที่ชื่อว่า Regional Internet Registry (RIR) ขนาดของหมายเลขที่ให้กับ RIR อาจเปลี่ยนแปลงได้ แต่อย่างน้อยมีขนาด /12 มีหมายเลขที่อยู่ตั้งแต่ 2000::/12 ไปจนถึง 200F:FFFF:FFFF:FFFF::/64 ดังรูปที่ 2

รูปที่ แสดงพิกัดของหมายเลขที่อยู่ขนาดต่าง 

          ISP (Internet Service Provider) แต่ละแห่งจะได้รับขนาดของที่อยู่ /32 และ /48 สำหรับไซด์แต่ละแห่ง หรือ ISP แต่ละแห่งสามารถกำหนดให้มี 2(48-32) = 65,536 ไซต์ โดย 1 ไซต์เท่ากับหนึ่งเครือข่าย ในแต่ละไซต์สามารถกำหนดให้มีหมายเลขที่อยู่เท่ากับ 2(64-48) = 65,536 ที่อยู่สำหรับเครือข่ายท้องถิ่น ดังนั้นภายในวงเครือข่ายท้องถิ่นแต่ละวงสามารถมีที่อยู่ขนาด 264 สำหรับคอมพิวเตอร์ภายใน ดังรูปที่ 3
รูปที่ การจัดแบ่งหมายเลขที่อยู่ให้กับเครือข่ายลักษณะต่าง 

          รูปที่ แสดงถึงตัวอย่างของหมายเลขที่อยู่ IPv6 ที่มีค่า Prefix ขนาด 64 บิต เช่น 
2001:0A3C:5437:ABCD::/64 โดย RIR กำหนดให้มีหมายเลขที่อยู่ที่มีค่า Prefix ขนาด 12 บิต และ ISP ถูกกำหนดให้มีหมายเลขที่อยู่ขนาด 32 บิต รวมทั้งไซต์มีขนาด 48 บิต ส่วนอีก 16 บิต เป็นช่องฟิลด์สำหรับซับเน็ตที่ยอมให้มีซับเน็ตได้ถึง 65,536 ซับเน็ต ส่วน 64 บิตสุดท้ายในช่องขวามือสุดเป็นหมายเลขอินเตอร์เฟส หรือส่วนที่เป็นหมายเลขที่อยู่ของเครื่องคอมพิวเตอร์ มีขนาด 64 บิต หรือ 264 ต่อหนึ่งซับเน็ต เช่น 
2001:0A3C:5437:ABCD::/64 ผู้ดูแลระบบเครือข่ายสามารถกำหนดหมายเลขที่อยู่ IPv6 ให้กับเครื่องคอมพิวเตอร์เป็นหมายเลข 2001:0A3C:5437:ABCD:218:34EF:AD34:98D
รูปที่ โครงสร้างของหมายเลขที่อยู่ IPv6

คุณสมบัติตั้งค่าหมายเลขที่อยู่อัตโนมัติ (Automatic Configuration)
          คุณสมบัติตั้งค่าหมายเลขที่อยู่อัตโนมัติเป็นระบบการจัดการที่มีประสิทธิภาพ เนื่องจากกลไกการจัดการที่เรียบง่ายหรือที่เรียกกันว่า Plug-and-Play โดยให้อุปกรณ์ในเครือข่ายสามารถกำหนดหมายเลขที่อยู่ IPv6 ได้ด้วยตัวเอง โดยที่ไม่ต้องการความช่วยเหลือจากเครื่องแม่ข่ายที่ให้บริการ DHCPv6 โดยที่คุณสมบัตินี้เกิดจากการเรียนรู้ข้อมูล Prefix จากเร้าเตอร์ แล้วผนวกเข้ากับที่อยู่ Physical Address ของตัวอุปกรณ์เอง โดยที่อยู่ของตัวอุปกรณ์คือค่า MAC Address แต่ค่า MAC Address มีความยาวแค่ 48 บิต ซึ่งที่อยู่ส่วน Prefix ต้องการความยาวที่ 64 บิต ทำให้ต้องการความยาวเพิ่มอีก 16 บิต ซึ่งความยาวที่เพิ่มอีก 16 บิต จะได้จากการเพิ่ม FFFE เข้าไประหว่างกึ่งกลางของ MAC Address ดังต่อไปนี้
MAC = 000C.290C.47D5 ตั้งค่าเป็น 020C:29FF:FE0C:47D5
          หมายเลขที่อยู่ที่ได้จากการตั้งค่าอัตโนมัติ ได้จากการแปลงค่าตามมาตรฐาน EUI-64 โดยทำการเปลี่ยนค่าบิตที่ 2 ใน 8 บิตแรก โดยเปลี่ยนจากค่า 0 เป็น 1 ซึ่งบิตที่มีค่าเป็น 1 หมายถึง Global Unicast และค่าเป็น 0 หมายถึง Local Unicast
รูปที่ 5 การแปลง MAC Address ตามมาตรฐาน EUI-64
          การทำงานของคุณสมบัติการตั้งค่าหมายเลขที่อยู่อัตโนมัติ แบ่งออกเป็น 2 ขั้นตอน ดังนี้
          1. Host ร้องขอข้อมูล Prefix เพื่อตั้งค่าอินเตอร์เฟสจากเร้าเตอร์ โดยส่งคำขอ router solicitation (RS) โดยจะส่งแบบ Multicast ไปยังทุก ๆ ที่อยู่ Multicast ของเร้าเตอร์ โดยจะส่งเป็น ICMP message Type 133
          2. เร้าเตอร์จะตอบกลับค่า Prefix ที่ต้องการ โดยส่ง router advertisement (RA) ซึ่ง RA จะส่งไปแบบ Multicast ไปยังที่อยู่ Multicast ของโฮสต์บนเครือข่าย โดยจะส่งเป็น ICMP message Type 134 ข้อความ RA 
จะส่งแบบกำหนดช่วงเวลา แต่ Host จะส่งข้อความ RS แบบต่อเนื่อง ดังนั้นไม่จำเป็นต้องรอตารางเวลาของ RA โฮสต์ทำการส่ง RS เพื่อตอบสนองทันที ดังรูปที่ 6
รูปที่ 6 การทำงานของคุณสมบัติการตั้งค่าหมายเลขที่อยู่อัตโนมัติ
          วิธีการตั้งค่าหมายเลขที่อยู่อัตโนมัติ จะใช้การทำงานแบบ Stateless เนื่องจากไม่จำเป็นติดต่อ หรือเชื่อมต่อ และไม่ต้องรับข้อมูลเสริมจากอุปกรณ์อื่น

ประเภทของหมายเลขที่อยู่ไอพีรุ่นที่ 6
          หมายเลขที่อยู่ IPv6 สามารถแบ่งรูปแบบหมายเลขที่อยู่ IPv6 ออกเป็น ประเภท คือ UnicastMulticast และ Anycast ซึ่งในที่อยู่แบบ Unicast และ Multicast ยังคงการทำงานเหมือนใน IPv4 ทุกประการ
          1. หมายเลขที่อยู่แบบ Unicast เป็นการเชื่อมต่อระหว่างจุดไม่ว่าจะเป็นที่อยู่ Global Unicast หรือแบบ Link Local รวมทั้งแบบ Unique Local รวมทั้งที่อยู่ที่มีจุดหมายปลายทางไปที่อินเตอร์เฟซเฉพาะ และมีการทำงานเช่นเดียวกับ IPv4 ซึ่งประเภทของหมายเลขที่อยู่แบบ Unicast มีดังต่อไปนี้
              1.1 ที่อยู่ Global Unicast เปรียบได้กับที่อยู่สาธารณะของ IPv4 ซึ่งสามารถเข้าถึงได้ทั่วโลกบนอินเตอร์เน็ต แต่จะต่างกันตรงที่ IPv4 ใช้พื้นที่เรียบและสรุปรวมของที่อยู่รวมกัน แต่ในส่วน Global Unicast ของ IPv6 จะง่ายต่อการรวมและสรุปต่อที่อยู่ทำให้ผลของการหาเส้นทางน้อยลงภายในขอบเขตของเส้นทางบนอินเตอร์เน็ต
               1.2 ที่อยู่ Link Local มีการใช้งานบนเครือข่ายภายในเดียวกัน จะเทียบได้กับ Automatic Private IP Addressing (APIPA) ใน IPv4 ในปัจจุบันมีใช้อยู่บนเดสก์ทอป Microsoft และระบบปฏิบัติการเซิร์ฟเวอร์ โดยที่อยู่ Link Local มีการกำหนดค่าโดยอัตโนมัติ และสามารถใช้งานได้อัตโนมัติ สำหรับ Host ที่ต่ออยู่ในเครือข่ายภายในเดียวกัน แต่ถ้าเครือข่ายภายในไม่มีเร้าเตอร์ ที่อยู่ Link Local จะเริ่มต้นด้วย “FE80” เสมอ
               1.3 ที่อยู่ Uni Local จะมีลักษณะคล้ายคลึงกับ Private IP Address ของ IPv4 โดยที่เร้าเตอร์จะไม่ทำการส่งต่อหมายเลขที่อยู่ประเภทนี้ จะมีค่าเริ่มต้นด้วย “FD” หรือ “FC”
          2. Multicast เป็นการสื่อสารระหว่างหนึ่งจุดต่อหลาย ๆ จุด หรือหนึ่งหมายเลขที่อยู่ต่อหลาย ๆ หมายเลขที่อยู่ หรือหลาย ๆ อินเตอร์เฟซ โดยที่อยู่แบบนี้ถูกใช้แทนที่อยู่ IPvแบบ Broadcast และมีคุณสมบัติเหมือนกับ Multicast ของ IPv4 ทุกประการ โดยที่อยู่แบบ Multicast มีคุณสมบัติดังต่อไปนี้
                2.1 ใช้ Prefix ขนาด 8 บิต คือ FF00::/8
                2.2 สามารถมีขอบเขตในการทำ Multicast ได้หลายรูปแบบ โดยดูจากส่วนของบิตในกลุ่ม Multicast เช่น Link Local, Site, Global Scope ดังที่แสดงในรูปที่ 7
รูปที่ 7 โครงสร้างที่อยู่แบบ Multicast
                 2.3 ใช้ Multicast Listener Discovery (MLD) ที่เทียบเท่ากับ Internet Group Management Protocol (IGMP) ใน IPv4
          ตารางแสดงถึงหมายเลขที่อยู่ IPv6 แบบ Multicast ที่สงวนไว้ใช้ในการติดต่อสื่อสาร
ที่อยู่แบบ Multicast
รายละเอียด
FF02::1
สำหรับทุก ๆ โหนด บนการเชื่อมต่อ
FF02::2
สำหรับทุกเร้าเตอร์บนเส้นทางเชื่อมต่อ
FF02::5
SPF สำหรับเร้าเตอร์ที่ใช้เร้าติง OSPFv3
FF02::6
DR สำหรับเร้าเตอร์ที่ใช้เร้าติง OSPFv3
FF02::9
สำหรับเร้าเตอร์ทุกที่ใช้เร้าติง RIP บนเส้นทางเชื่อมต่อ
FF02::A
สำหรับเร้าเตอร์ที่ใช้เร้าติง EIGRP
FF05::1:FFxx:xxxx
สำหรับทุกโหนดที่ใช้ที่อยู่มัลติแค้สต์ที่โหนดใช้การตั้งค่าหมายเลขที่อยู่อัตโนมัติ และการค้นพบอุปกรณ์เครือข่ายเพื่อนบ้าน
FF05::101
สำหรับเซิร์ฟเวอร์ที่ให้บริการ Network Time Protocol (NTP) ทั้งหมด

          3 Anycast จะมีลักษณะคล้าย ๆ กับที่อยู่แบบ Multicast แต่ที่อยู่แบบ Anycast จะเป็นการส่งข้อมูลไปยังหนึ่งผู้รับปลายทางที่ใกล้ที่สุดซึ่งกำหนดขึ้นโดยเร้าติง ซึ่งจะเป็นการส่งแบบ one-to-one-of-many เมื่ออินเตอร์เฟสที่รู้จักเป็นกลุ่มสมาชิก Anycast เมื่อโฮสต์ต้นทางส่งแพ็กเก็ตไปยังโฮสต์ปลายทางที่ใช้ที่อยู่ Anycast เพ็กเก็ตจะถูกส่งไปยังสมาชิกในกลุ่ม Anycast ที่อยู่ใกล้กับโฮสต์ต้นทางมากที่สุด โดยโฮสต์จะใช้โครงสร้างพื้นฐานของเร้าติงที่มีการวัดเส้นทางกลุ่มสมาชิกที่ใกล้ที่สุด ที่อยู่แบบนี้ช่วยให้ทรัพยากรในเครือข่ายกระจายอยู่ทั่วเครือข่ายในการเชื่อมต่อ เช่น เมื่อโฮสต์ต้องการส่งข้อมูลไปยังเครื่องแม่ข่ายที่ใช้ที่อยู่ IPv6 แบบ Anycast การส่งจะอาศัยค่าต้นทุนของเส้นทางในเร้าติงไปยังเครื่องแม่ข่ายที่ใกล้กับโฮสต์มากที่สุด
          การส่งข้อมูลของที่อยู่แบบเอนีแค้สต์ เป็นการส่งข้อมูลแบบ stateless ทำให้ Anycast เหมาะกับโปรแกรมที่ใช้โปรโตคอลแบบ User Datagram Protocol (UDP) โดยธรรมชาติ ซึ่งรูปแบบการส่งข้อมูลของที่อยู่แบบ Anycast จะมีลักษณะเหมือนกับ Unicast และหมายเลขที่อยู่ของ Anycast มีลักษณะเหมือนหมายเลขที่อยู่แบบ Unicast จากการที่ IPv6 ได้กำหนดรูปแบบของ Anycast แบบนี้ ทำให้โฮสต์ที่จะส่งข้อมูลไปยังปลายทางที่ใช้ที่อยู่แบบ Anycast โฮสต์จะไม่สามารถแยกความแตกต่างระหว่างที่อยู่ Anycast และที่อยู่ Unicast เพียงแต่จะทราบว่าจะส่งไปที่ปลายทางใดเท่านั้น โดยอาศัยค่า Cost ในเร้าติงในการส่งข้อมูล ซึ่งการประกาศใช้ที่อยู่แบบ Anycast เป็นการเผยแพร่ผ่านเร้าติงโปรโตคอล ดังนั้นการประกาศใช้ที่อยู่แบบ Anycast ต้องประกาศจากเร้าเตอร์ไปยังเร้าเตอร์เพื่อนบ้าน แม้ว่าที่อยู่แบบ Anycast มีความได้เปรียบในการสนับสนุนความต่อเนื่องในการทำงานและป้องกันความเสียหายจากความไม่แน่นอนเช่นการโจมตีด้วย Denial of service (DoS) และที่อยู่แบบ Anycast เป็นบริการแบบ stateless ดังนั้นจะใช้วิธีการสื่อสารแบบ connectionless เช่น UDP แต่วิธีการส่งข้อมูลแบบ Transmission Control Protocol (TCP) ยังเป็นเรื่องยากที่จะคงรักษาสถานะการสื่อสารใน TCP  เนื่องจาก TCP เป็นวิธีการเชื่อมต่อการสื่อสารแบบ oriented ดังนั้นที่อยู่แบบ Anycast เป็นการทำงานแบบ stateless โดยไม่การตรวจสอบว่าข้อมูลที่ส่งไปจะถึงผู้รับหรือไม่ และการส่งไปยังบางเครื่องแม่ข่ายยังมีการเสียเปรียบในการใช้ Fragment, encryption และ authentication เนื่องจากของคุณสมบัติที่การสื่อสารของที่อยู่แบบ Anycast ไปยังเซิร์ฟเวอร์ไม่คงที่เสมอ มันค่อนข้างที่จะเหมาะสมสำหรับบริการเพ็กเก็ตที่เดินทางรอบเดียว เช่น บริการ DNS ที่ใช้การสื่อสารแบบ UDP
          สามารถสรุปได้สั้น ๆ คือ การประกาศหมายเลขที่อยู่หนึ่งหมายเลข ที่อนุญาตให้อุปกรณ์สามารถใช้หมายเลขที่อยู่นั้นซ้ำกันได้ และเป็นการที่ผู้ส่งข้อมูลจะส่งข้อมูลถึงปลายทางที่เป็นที่อยู่แบบเอนีแค้สต์ ที่อยู่ใกล้กลับผู้ส่งมากที่สุดเพียงหนึ่งเดียว

โปรโตคอลหลักที่ใช้ใน IPv6
          เฮดเดอร์ของ IPv6 มีการออกแบบโดยการเอาฟิลด์ที่ไม่ต้องการออก และย้ายฟิลด์ที่ไม่ได้ใช่ซึ่งมีที่อยู่ขนาดใหญ่กว่า IPv4 เฉพาะขนาดของเฮดเดอร์ที่ใหญ่เป็นสองเท่าของเฮดเดอร์ IPv4 ซึ่งมีขนาดถึง 40 ไบต์ ถึงแม้จะมีขนาดใหญ่ที่ประกอบด้วยฟิลด์เฮดเดอร์น้อยลง และมีการประมวลผลที่มีประสิทธิภาพด้วยเร้าเตอร์ ถ้าเฮดเดอร์ของ IPvไม่สอดคล้องกับเฮดเดอร์ของ IPv4 จะทิ้งแพ็กเก็ตของ IPv6 และเช่นเดียวกับ IPv6 ก็จะทิ้งแพ็กเก็ตของ IPv4 โปรโตคอลหลักของ IPvประกอบดังต่อไปนี้
          1. Internet Control Message Protocol for IPv6 (ICMPv6) ทำหน้าที่รายงานข้อผิดพลาดและมีหน้าที่วิเคราะห์ นอกจากนี้ ICMPv6 ยังมีโครงสร้างแพ็กเก็ตทั่วไปสำหรับข้อความของ Neighbor Discovery (ND) และ Multicast Listener Discovery (MLD) คล้ายกับ ICMP ของ IPv4 ประเภทข้อความของ ICMPv6 มีดังต่อไปนี้
              1.1 Echo Request (การร้องขอ)
              1.2 Echo Reply (การตอบกลับ)
              1.3 Destination Unreachable (ไม่สามารถระบุปลายทางได้)
              1.4 Time Exceeded (เวลาเกิน)
              1.5 Parameter Problem (ปัญหาของพารามิเตอร์)
         ถ้าแพ็กเก็ตมีขนาดใหญ่เกินไป ICMPv6 จะมีข้อความที่กำหนดส่วนที่จำเป็นปลายทางที่ไม่สามารถระบุได้และชุดข้อความ Don’t Fragment (DF) ของ ICMP ข้อความแพ็กเก็ตที่มีขนาดใหญ่เกินไปสำหรับ path maximum transmission unit (PMTU)
          2. Neighbor Discovery (ND) ประกอบด้วยชุดของข้อความ ICMPv6 และกำหนดกระบวนการที่ทำให้โหนดใกล้เคียงค้นพบโหนดอื่น ๆ การค้นพบเร้าเตอร์บนลิ้งค์ และการรองรับโฮสต์ที่เปลี่ยนเส้นทาง ND จะเป็นสิ่งอำนวยความสะดวกที่เข้ามาแทนข้อความของ IPv4 คือ Address Resolution Protocol (ARP), ICMP Router Discovery และ ICMP Redirect ซึ่ง ND มี 5 ข้อความคือ Neighbor Solicitation (ชักชวนเพื่อนบ้าน), Neighbor Advertisement (โฆษณาเพื่อนบ้าน), Router Solicitation (ชักชวนเร้าเตอร์), Router Advertisement (โฆษณาเร้าเตอร์) และ Redirect (การเปลี่ยนเส้นทาง) ซึ่ง ND ได้กำหนดกระบวนการไว้ดังต่อไปนี้
              2.1 Address resolution เป็นการส่งข้อความร้องขอ ARP แบบ Broadcast และรับการตอบรับ ARP แบบ Unicast ซึ่งโหนดใน IPv6 จะชักชวนเพื่อนบ้านโดยการส่งแบบ Multicast และจะรับการโฆษณาจากเพื่อนบ้านแบบ Unicast
              2.2 Duplicate address detection เป็นการส่งเฟรมเปล่าเช่นเดียวกับ ARP ของ IPv4 ซึ่งโฮสต์ใน IPv6 จะมีประสิทธิภาพความละเอียดของที่อยู่ที่พยายามใช้ก่อนที่จะเริ่มการทำงานบนอินเตอร์เฟส
              2.3 Router discovery เมื่อโหนดเริ่มต้นทำงานบนลิ้งค์ จะส่งข้อความร้องขอเร้าเตอร์ เร้าเตอร์บนลิ้งค์จะส่งข้อความโฆษณาแบบ Unicast หรือ Multicast ซึ่งประกอบด้วยส่วนของที่อยู่และการกำหนดค่าตัวเลือกอื่น ๆ เพื่อให้โฮสต์สามารถกำหนดค่าอัตโนมัติและไม่ซ้ำกับตำแหน่งที่อยู่อื่น
              2.4 Neighbor unreachability detection จะติดตามโหนดเพื่อนบ้านใดบ้างที่เข้าถึงได้ ถ้าโหนดเพื่อนบ้านไม่สามารถเข้าถึงได้ จะตรวจสอบปัญหาและทำการปรับเปลี่ยนอัตโนมัติ เช่น เลือกค่าเริ่มต้นของเร้าเตอร์ใหม่ หรือระบุข้อผิดพลาดให้กับโปรโตคอลที่อยู่ในชั้นบน
              2.5 Multicast Listener Discovery (MLD) เปรียบเสมือน Internet Group Management Protocol version 2 (IGMPv2) ของ IPv4 ซึ่งข้อความ ICMPv6 ที่ใช้โดยโฮสต์ที่ลงทะเบียนเป็นสมาชิกในกลุ่ม, โฮสต์ที่ย้ายออกจากลุ่ม และเร้าเตอร์ที่ค้นหาซับเน็ต (subnet) จากสมาชิกในกลุ่ม ซึ่ง MLD version 2 (MLDv2) จะเปรียบเสมือน IGMP version 3 (IGMPv3) ของ IPv4 แต่ MLDv2 มีประสิทธิภาพการทำงานเหมือน MLD แต่จะช่วยให้โฮสต์ที่สนใจจะลงทะเบียนในการเข้าถึงแบบ Multicast กับพื้นที่ของเร้าเตอร์ใน MLDv2 ซึ่งโฮสต์สามารถเข้ามาลงทะเบียนได้ในการสื่อสารแบบ Multicast จากที่อยู่ในรายการหรือจากทุกที่อยู่ที่ยกเว้นที่ไม่ได้อยู่ในรายการ