วันอังคารที่ 11 เมษายน พ.ศ. 2560

ARP คืออะไร ? มาทำความรู้จักและเข้าใจการทำงานของ ARP (Address Resolution Protocol) กันดีกว่า

ARP คืออะไร ? มาทำความรู้จักและเข้าใจการทำงานของ ARP (Address Resolution Protocol) กันดีกว่า

สวัสดีครับ ใบบทความนี้เราจะมาเรียนรู้เรื่อง Address Resolution Protocol หรือเราเรียกย่อๆว่า ARP นั่นเองครับ
ARP จะทำงานเมื่อมีการติดต่อสื่อสารบน LAN (Ethernet) ระหว่างเครื่องต้นทาง และ เครื่องปลายทาง ใช้ ค้นหาและจับคู่ระหว่าง MAC Address กับ IP Address เพื่อให้ส่งถึงปลายทางในระดับ L2 ตาม OSI Model ได้ ลองมาดูเพื่อทำความเข้าใจกันต่อนะครับ
image-1
เมื่อเครื่อง NB1 ต้องการส่งข้อมูลหาเครื่อง NB2 จะเกิดการทำงานตาม OSI Model ดังนี้
(สมมุติว่าผมทำการ 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
cats
จากรูป เป็น Ethernet Frame ของเครื่อง NB1 จะเห็นว่า เครื่อง NB1 จะไม่มีข้อมูล Destination MAC address ของเครื่อง NB2 ทำให้ยังไม่สามารถส่งข้อมูลได้
NB1 จึงจะต้องทำการถามหา MAC address ของ NB2 เพื่อให้การ Encapsulation บน Ethernet Frame ของ NB1 นั้นสมบูรณ์ และ สามารถส่งข้อมูลไปหา NB2 ได้
image-3_
NB1 จึงเรียกใช้งาน ARP โดยส่ง ARP Request ออกไป ซึ่งใน Field ของ ARP จะมีดังนี้
  • 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 นะครับ

image-4_
เมื่อเครื่อง NB2 ได้รับ ARP Request เข้ามา ก็จะพิจารณาว่า มันคือเครื่องเป้าหมายที่ NB1 ต้องการถาม MAC address หรือเปล่า โดยพิจารณาจาก Destination IP address ที่ NB1 ส่งมา

image-5
ถ้าใช่ มันก็จะใส่ข้อมูลของตัวเองลงไป และ ตอบกลับไปหาคนที่ส่งมา นั่นคือ NB1 โดยใช้ ARP Reply

image-6
เมื่อ NB1 ได้รับ ARP Reply กลับมา ก็จะทำการเก็บข้อมูล ARP เอาไว้เป็น Cache หรือ ARP Cache เพื่อใช้ในการส่งข้อมูลในครั้งถัดไป โดยที่ไม่ต้องมาทำการส่ง ARP Request ใหม่ทุกครั้งเมื่อมีการส่งข้อมูล

image-7
ในการส่งข้อมูลต่างๆ ในครั้งถัดไป ก็จะสามารถส่งข้อมูลได้เลย เพราะที่ NB1 มี ARP Cache เก็บไว้ ซึ่งจับคู่ Destination IP address กับ Destination MAC address เอาไว้อยู่ จึงสามารถ Encapsulation บน Ethernet Frame ได้เลย โดยไม่ต้อง ARP Request ใหม่ทุกครั้งที่ส่งข้อมูล จนกว่า ARP Cache จะหายไป (ARP Timeout)

ถัดมาผมจะพามาดูหน้าตาจริงๆ และการทำงาน ของ ARP ผ่าน โปรแกรม Wireshark กันครับ
ผมทำการ show arp cache บนเครื่องผม โดยใช้คำสั่ง “arp -a”
image-8
รูปด้านบน อันนี้คือข้อมูล ARP บนเครื่องผมทีมีอยู่ เดี๋ยวผมจะลอง Ping ไปที่ 192.168.1.52 ซึ่งเครื่องผมยังไม่มีข้อมูล Destination MAC address ของเครื่อง 192.168.1.52 ดังนั้น เครื่องผมจะต้องทำการส่ง ARP Request ออกไป มาลองดูกันครับ

image-9
รูปด้านบน สังเกตว่าจะขึ้น Request timed out มา 1 packet ใช่ไหมครับ นั่นคือการที่เครื่องผมทำการ ARP อยู่ เมื่อได้ข้อมูลจากการ ARP แล้ว เครื่องผมก็สามารถติดต่อสื่อสารกับเครื่อง 192.168.1.52 ได้ เดี๋ยวผมจะลองดู ARP Cache ที่เครื่องผมอีกครั้ง โดยใช้คำสั่ง “arp -a”

image-10_
รูปด้านบน สังเกตไหมครับ เครื่องผมมีข้อมูล ARP ของเครื่อง 192.168.1.52 แล้ว เดี๋ยวลองมาดูฝั่ง Wireshark กันบ้าง

ARP Request Packet
image-12

ARP Reply Packet
image-13

รูปด้านล่าง หลังจากที่เครื่องผมได้รับข้อมูล ARP เก็บไว้ที่ ARP Cache แล้ว ก็สามารถส่งข้อมูลต่างๆ ได้ตามปกติ ซึ่งในตัวอย่างข้อมูลของผมคือ Ping (ICMP)
image-10_
image-14
จบแล้วครับสำหรับเรื่อง ARP ก็หวังว่าน่าจะพอเป็นประโยชน์ให้กับผู้ที่สนใจบ้างนะครับ แล้วพบกันใหม่ในบทความถัดไปครับ ^_^

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

แสดงความคิดเห็น

Set MongoDB in the windows path environment

  Let’s set MongoDB in the windows environment in just a few steps. Step 1: First download a suitable MongoDB version according to your mach...