1. ARP (Address Resolution Protocol) là gì ?
Trong nội dung về mô hình OSI, chúng ta đã tìm hiểu sơ qua về cách mà 2 máy tính trong cùng mạng LAN có thể giao tiếp được với nhau. Vậy cụ thể quá trình đó sẽ diễn ra như thế nào, hãy thử xem qua những vấn đề sau đây.
Một IP packet được tạo ra với địa chỉ IP nguồn và đích mang theo data từ lớp application.
IP packet này sẽ được đóng gói thành một Ethernet frame với địa chỉ MAC nguồn và MAC đích.
Máy tính thực hiện gửi tin sẽ có địa chỉ MAC nguồn, nhưng làm thế nào để nó có thể biết được địa chỉ MAC đích. Đây là nơi ARP sẽ thực hiện nhiệm vụ của nó. Giao thức ARP là một giao thức truyền thông được sử dụng để tìm địa chỉ lớp liên kết, chẳng hạn như địa chỉ MAC, được liên kết với một địa chỉ lớp internet nhất định, thường là địa chỉ IPv4.
Hãy cùng xem ví dụ sau đây.
Trong hình ảnh ở trên, chúng ta có 2 máy tính với địa chỉ IP của chúng. Hãy thực hiện thao tác ping đến địa chỉ của máy H2 từ H1.
Thao tác ping sử dụng giao thức ICMP và IP thì được dùng đến ở layer 3, là lớp network. IP packet sẽ có địa chỉ IP nguồn là 10.10.10.11, địa chỉ IP đích là 10.10.10.22. Ở layer tiếp theo, IP packet sẽ trở thành một Ethernet frame, và đó là nơi mà chúng sẽ cần đến địa chỉ MAC nguồn và đích.
Vậy làm thế nào mà máy tính H1 có thể biết được địa chỉ MAC của máy tính H2. Có một giao thức sẽ giải quyết vấn đề này, nó được gọi là ARP - Address Resolution Protocol. Hãy cùng tìm hiểu chi tiết hơn về cách mà ARP hoạt động.
2. Cơ chế hoạt động của giao thức ARP
Chúng ta có 2 máy tính cùng với địa chỉ IP và MAC của nó. Thực hiện thao tác ping từ máy tính H1 tới máy tính H2. Bảng ARP lúc này vẫn chưa có thông tin gì. Điều đầu tiên xảy ra đó là H1 sẽ gửi đi 1 ARP Request. Hiểu đơn giản thì ARP Request này sẽ hỏi xem máy nào có địa chỉ IP là 192.168.1.2, và địa chỉ MAC của nó là gì. Bởi vì chúng ta vẫn chưa biết địa chỉ MAC nên trong trường hợp này, địa chỉ MAC broadcast FF:FF:FF:FF:FF:FF sẽ được sử dụng làm đích. Bản tin này sẽ được gửi tới cho tất cả các máy tính trong mạng.
Máy tính H2 sẽ trở lời bằng 1 ARP Reply và nó bao gồm cả địa chỉ MAC. Khi đó, máy tính H1 sẽ thêm địa chỉ MAC của H2 vào trong bảng ARP và bắt đầu gửi data đến cho H2.
Nếu bạn muốn thấy rõ hơn quá trình này, bạn có thể thử nó bằng phần mềm Wireshark.
2.1. ARP Request
Cấu trúc của Ethernet header bao gồm 3 phần, đó là Source MAC, Destination MAC và Type. Phần ARP Request sẽ có nhiều thông tin cụ thể hơn.
Phần mấu chốt ở hình ảnh trên đây đó là thông tin về địa chỉ IP và địa chỉ MAC. Trong trường hợp này, địa chỉ IP của cả 2 host đều đã được xác định. Bạn có thể thấy ARP Request của H1 đang tìm kiếm địa chỉ của H2. Địa chỉ MAC nguồn là địa chỉ MAC của máy muốn gửi dữ liệu. Destination MAC trong trường hợp này chính là địa chỉ MAC, tuy nhiên ARP Request được tạo ra với mục đích phân tích địa chỉ MAC của H2, vậy nên thay vì “Destination” thì nó sẽ là “Target”.
2.2 ARP Response / ARP Reply
ARP Response, hay ARP Reply là nội dung phản hồi và nó có cấu trúc giống với ARP Request. Từ Ethernet header này, địa chỉ MAC của H2 đã được xác định, và vì nó đã có địa chỉ MAC của H1 nên ARP Response sẽ là một bản tin Unicast, và nó sẽ được phản hồi trực tiếp về cho H1.
Cũng tương tự như trên, so với ARP Request thì ARP Response chỉ khác biêt ở phần mô tả Opcode và Target MAC address.
Sau khi quá trình ARP diễn ra hoàn tất, các thông tin đều sẽ được lưu lại trong ARP Table hoặc ARP Cache của thiết bị. Tuy nhiên nó chỉ tồn tại trong 1 thời gian nhất định và sau đó sẽ bị xóa bỏ. Đối với các thiết bị khách hoặc thiết bị cuối, khoảng thời gian duy trì này rất ngắn, chỉ khoảng 60s hoặc ít hơn. Lý do là bởi số lượng thiết bị ở cấp độ này là rất nhiều, và nếu lưu lại hết trong 1 khoảng thời gian dài thì rất tốn bộ nhớ. Tuy vậy với các thiết bị như router hay firewall thì bảng ARP sẽ được lưu lại tới vài giờ vì các thiết bị ở hạ tầng sẽ hoạt động ở vị trí cố định và ít khi hay đổi. Đương nhiên là một thiết bị router sẽ không có cách nào để biết được ARP Cache đó là của một host hay của thiết bị thuộc kiến trúc hạ tầng. Thay vào đó, bộ nhớ của nó sẽ được cập nhật lại bất cứ khi nào nhận được một ARP Request.
Đó chính là những nội dung chính về giao thức ARP mà chúng ta cần được biết trong phạm vi kiến thức của CCNA. Hi vọng nó sẽ có ích cho các bạn !