Address Resolution Protocol

**Giao thức phân giải địa chỉ** (*Address Resolution Protocol* hay *ARP*) là một giao thức truyền thông được sử dụng để chuyển địa chỉ từ tầng mạng (Internet layer) sang tầng liên kết dữ liệu theo mô hình OSI. Đây là một chức năng quan trọng trong giao thức IP của mạng máy tính. ARP được định nghĩa trong RFC 826 vào năm 1982, là một tiêu chuẩn Internet STD 37.

ARP được sử dụng để từ một địa chỉ mạng (ví dụ một địa chỉ IPv4) tìm ra địa chỉ vật lý như một địa chỉ Ethernet (địa chỉ MAC), hay còn có thể nói là phân giải địa chỉ IP sang địa chỉ máy. ARP đã được thực hiện với nhiều kết hợp của công nghệ mạng và tầng liên kết dữ liệu, như IPv4, Chaosnet,..

Trong mạng máy tính của phiên bản IPv6, chức năng của ARP được cung cấp bởi Neighbor Discovery Protocol (NDP).

## Phương pháp hoạt động
### Nguyên tắc
Trong mạng Ethernet và WLAN các gói IP không được gửi trực tiếp. Một gói IP được bỏ vào một khung Ethernet, rồi mới được gửi đi. Khung này có một địa chỉ gửi và địa chỉ đích. Các địa chỉ này là địa chỉ MAC của một card mạng. Một card mạng sẽ nhận các khung ethernet mà có địa chỉ đích là địa chỉ MAC của mình. Card này sẽ không lưu ý tới các khung khác. Giao thức ARP được dùng để kết nối giữa địa chỉ MAC và địa chỉ IP. Để làm việc hiệu quả nó có giữ một bảng ARP lưu trữ.

## Thí dụ
;Host to host
Hai máy tính trong một văn phòng (máy tính 1 và máy tính 2) được kết nối với nhau trong một mạng cục bộ (LAN) bằng cáp Ethernet và thiết bị chuyển mạch mạng, không có Gateway hoặc bộ định tuyến đứng giữa. Máy tính 1 có một gói tin để gửi tới Máy tính 2. Thông qua DNS, nó xác định rằng máy tính 2 có địa chỉ IP 192.168.0.55. Để gửi tin nhắn, nó cũng cần địa chỉ MAC của máy tính 2. Đầu tiên, Máy tính 1 sử dụng một bảng ARP lưu trữ để tìm kiếm địa chỉ 192.168.0.55 cho bất kỳ ghi nhận nào hiện có của địa chỉ MAC của Máy tính 2 (00: eb: 24: b2: 05: ac). Nếu địa chỉ MAC được tìm thấy, nó sẽ gửi một khung Ethernet (Frame Ethernet) với địa chỉ đích 00: eb: 24: b2: 05: ac, chứa gói tin IP. Nếu bảng ARP không có kết quả cho 192.168.0.55, Máy tính 1 phải gửi một ARP broadcast (đích FF: FF: FF: FF: FF: FF MAC address), được chấp nhận bởi tất cả các máy tính, yêu cầu địa chỉ 192.168.0.55 trả lời. Máy tính 2 trả lời với địa chỉ MAC và địa chỉ IP của nó. Máy tính 2 có thể ghi một mục vào bảng ARP của nó cho Máy tính 1 để sử dụng trong tương lai. Máy tính 1 lưu trữ các thông tin phản hồi trong bảng ARP của nó và bây giờ có thể gửi gói tin.

### Các trường hợp khác
;Host to router
Nếu máy tính 1 và máy tính 2 thuộc 2 mạng cục bộ khác nhau. Máy tính 1 sẽ dùng bảng routing để tìm ra địa chỉ IP của router, rồi từ đó tìm ra địa chỉ MAC.
;Router to router
Router dùng bảng router để tìm ra địa chỉ IP của router trên cùng LAN, rồi từ đó tìm ra địa chỉ MAC.
;Router to host
Trong trường hợp này địa chỉ IP biết được qua địa chỉ IP của điểm đến trên gói gởi, router chỉ cần tìm địa chỉ MAC là được.

## ARP spoofing

Bởi vì ARP không cung cấp các phương pháp để xác thực các trả lời ARP trên mạng, các hồi đáp ARP có thể đến từ các hệ thống khác hơn cái mà có địa chỉ tầng 2 yêu cầu. Ngoài ra, một host có thể chấp nhận gói ARP Reply mà trước đó không cần phải gửi gói tin ARP Request. Lợi dụng điều này, hacker có thể triển khai các phương thức tấn công như: Man In The Middle, Denial of Service, MAC Flooding. Hiện có nhiều phần mềm để phát hiện và thực hiện các cuộc tấn công giả mạo ARP, mặc dù ARP chính nó không cung cấp bất kỳ phương pháp bảo vệ chống lại các cuộc tấn công như vậy.

## Tham khảo