Supakorn Visutthicho
ARP คืออะไร ? มาทำความรู้จักและเข้าใจการทำงานของ ARP (Address Resolution Protocol) กันดีกว่า
สวัสดีครับ ใบบทความนี้เราจะมาเรียนรู้เรื่อง Address Resolution Protocol หรือเราเรียกย่อๆว่า ARP นั่นเองครับ
ARP จะทำงานเมื่อมีการติดต่อสื่อสารบน LAN (Ethernet) ระหว่างเครื่องต้นทาง และ เครื่องปลายทาง ใช้ค้นหาและจับคู่ระหว่าง MAC Address กับ IP Address เพื่อให้ส่งถึงปลายทางในระดับ L2 ตาม OSI Model ได้ ลองมาดูเพื่อทำความเข้าใจกันต่อนะครับ
Empty space, drag to resize
เมื่อเครื่อง NB1 ต้องการส่งข้อมูลหาเครื่อง NB2 จะเกิดการทำงานตาม OSI Model ดังนี้
จากรูป เป็น Ethernet Frame ของเครื่อง NB1 จะเห็นว่า เครื่อง NB1 จะไม่มีข้อมูล Destination MAC address ของเครื่อง NB2 ทำให้ยังไม่สามารถส่งข้อมูลได้
(สมมุติว่าผมทำการ Ping จาก NB1 ไป NB2)
- ที่ Layer 3 เครื่อง NB1 จะสร้าง IP Packet ขึ้นมา โดยใน IP Packet จะระบุ Source IP address และ Destination IP address เพื่อใช้ในการส่งข้อมูล (Data)
- IP Packet ของ NB1 จะถูก Encapsulation ลงมาที่ Layer 2 คือ Ethernet Frame โดยใน Ethernet Frame จะระบุ Source MAC address และ Destination MAC address
จากรูป เป็น Ethernet Frame ของเครื่อง NB1 จะเห็นว่า เครื่อง NB1 จะไม่มีข้อมูล Destination MAC address ของเครื่อง NB2 ทำให้ยังไม่สามารถส่งข้อมูลได้
NB1 จึงจะต้องทำการถามหา MAC address ของ NB2 เพื่อให้การ Encapsulation บน Ethernet Frame ของ NB1 นั้นสมบูรณ์ และ สามารถส่งข้อมูลไปหา NB2 ได้
NB1 จึงเรียกใช้งาน ARP โดยส่ง ARP Request ออกไป ซึ่งใน Field ของ ARP จะมีดังนี้
จากนั้นทำการ Encapsulation บน Ethernet Frame เนื่องจากยังไม่ทราบ Dest. MAC address จึงระบุเป็น FFFF.FFFF.FFFF แล้วส่งออกไป
Note : สังเกตดีๆและอย่าสับสนระหว่าง Dest. MAC address ใน ARP Request กับ Ethernet Frame นะครับ
- Source MAC address (Sender) : อันนี้ทราบอยู่แล้วเพราะเป็น MAC Address ของเครื่องผู้ส่งเอง
- Source IP address (Sender) : อันนี้ทราบอยู่แล้วเพราะเป็น IP ของเครื่องผู้ส่งเอง
- Destination MAC address (Target) : อันนี้ยังไม่ทราบ จึงต้องส่ง ARP Request ไปถาม ระบุเป็น 0000.0000.0000
- Destination IP address (Target) : อันนี้ทราบอยู่แล้วว่าต้องการจะส่งไป IP ไหน
จากนั้นทำการ Encapsulation บน Ethernet Frame เนื่องจากยังไม่ทราบ Dest. MAC address จึงระบุเป็น FFFF.FFFF.FFFF แล้วส่งออกไป
Note : สังเกตดีๆและอย่าสับสนระหว่าง Dest. MAC address ใน ARP Request กับ Ethernet Frame นะครับ
เมื่อเครื่อง NB2 ได้รับ ARP Request เข้ามา ก็จะพิจารณาว่า มันคือเครื่องเป้าหมายที่ NB1 ต้องการถาม MAC address หรือเปล่า โดยพิจารณาจาก Destination IP address ที่ NB1 ส่งมา
ถ้าใช่ มันก็จะใส่ข้อมูลของตัวเองลงไป และ ตอบกลับไปหาคนที่ส่งมา นั่นคือ NB1 โดยใช้ ARP Reply
เมื่อ NB1 ได้รับ ARP Reply กลับมา ก็จะทำการเก็บข้อมูล ARP เอาไว้เป็น Cache หรือ ARP Cache เพื่อใช้ในการส่งข้อมูลในครั้งถัดไป โดยที่ไม่ต้องมาทำการส่ง ARP Request ใหม่ทุกครั้งเมื่อมีการส่งข้อมูล
ในการส่งข้อมูลต่างๆ ในครั้งถัดไป ก็จะสามารถส่งข้อมูลได้เลย เพราะที่ NB1 มี ARP Cache เก็บไว้ ซึ่งจับคู่ Destination IP address กับ Destination MAC address เอาไว้อยู่ จึงสามารถ Encapsulation บน Ethernet Frame ได้เลย โดยไม่ต้อง ARP Request ใหม่ทุกครั้งที่ส่งข้อมูล จนกว่า ARP Cache จะหายไป (ARP Timeout)
Empty space, drag to resize
ถัดมาผมจะพามาดูหน้าตาจริงๆ และการทำงาน ของ ARP ผ่าน โปรแกรม Wireshark กันครับ
ผมทำการ show arp cache บนเครื่องผม โดยใช้คำสั่ง "arp -a"
รูปด้านบน อันนี้คือข้อมูล ARP บนเครื่องผมทีมีอยู่ เดี๋ยวผมจะลอง Ping ไปที่ 192.168.1.52 ซึ่งเครื่องผมยังไม่มีข้อมูล Destination MAC address ของเครื่อง 192.168.1.52 ดังนั้น เครื่องผมจะต้องทำการส่ง ARP Request ออกไป มาลองดูกันครับ
รูปด้านบน สังเกตว่าจะขึ้น Request timed out มา 1 packet ใช่ไหมครับ นั่นคือการที่เครื่องผมทำการ ARP อยู่ เมื่อได้ข้อมูลจากการ ARP แล้ว เครื่องผมก็สามารถติดต่อสื่อสารกับเครื่อง 192.168.1.52 ได้ เดี๋ยวผมจะลองดู ARP Cache ที่เครื่องผมอีกครั้ง โดยใช้คำสั่ง "arp -a"
รูปด้านบน สังเกตไหมครับ เครื่องผมมีข้อมูล ARP ของเครื่อง 192.168.1.52 แล้ว เดี๋ยวลองมาดูฝั่ง Wireshark กันบ้าง
ARP Request Packet
ARP Request Packet
ARP Request Reply
รูปด้านล่าง หลังจากที่เครื่องผมได้รับข้อมูล ARP เก็บไว้ที่ ARP Cache แล้ว ก็สามารถส่งข้อมูลต่างๆ ได้ตามปกติ ซึ่งในตัวอย่างข้อมูลของผมคือ Ping (ICMP)
จบแล้วครับสำหรับเรื่อง ARP ก็หวังว่าน่าจะพอเป็นประโยชน์ให้กับผู้ที่สนใจบ้างนะครับ แล้วพบกันใหม่ในบทความถัดไปครับ ^_^
Empty space, drag to resize
Plantecplus Co.,Ltd (NetPrime Training)
118/28 ถนน พระรามที่ 6 แขวงพญาไท เขตพญาไท กรุงเทพมหานคร 10400
โทร. 086-785-3213
อีเมล : netprime@plantecplus.com
118/28 ถนน พระรามที่ 6 แขวงพญาไท เขตพญาไท กรุงเทพมหานคร 10400
โทร. 086-785-3213
อีเมล : netprime@plantecplus.com
Blog
Terms
Cookies
Privacy
Copyright © 2022
เว็บไซต์เพิ่งย้ายระบบและทำการปรับปรุง
คอร์สที่เป็น Virtual Classroom และ Classroom ที่มีเอกสารอบรม ยังไม่เรียบร้อยดี กำลังอัพเดทค่ะ