Tuesday, January 21, 2025

[Cisco] Address Resolution Protocol (ARP)

-

Trong bài viết tuần này, chúng ta cùng tìm hiểu về một giao thức nền tảng rất quan trọng  của chồng giao thức TCP/IP: giao thức phân giải địa chỉ ARP – Address Resolution  Protocol. 

ARP được sử dụng trên các data link multiaccess của mạng LAN, đặc biệt là data link  Ethernet để cho phép tương quan giữa một địa chỉ lớp 3 (thông thường là địa chỉ IP) với  một địa chỉ lớp 2 (thông thường là địa chỉ MAC) nhằm phục vụ cho việc đóng một gói tin lớp 3 (packet) vào một frame lớp 2. 

Để nắm được ý tưởng hoạt động của ARP một cách rõ ràng, chúng ta cùng quan sát một  ví dụ:

Hình 1 – Sơ đồ ví dụ.

Trên sơ đồ hình 1 là một mạng Ethernet LAN đơn giản được thiết lập bằng cách đấu nối  3 PC vào một switch Ethernet. Các PC được gán các địa chỉ IP thuộc mạng  192.168.1.0/24 và card mạng của chúng có các địa chỉ MAC được chỉ ra như hình vẽ. Chúng ta cùng tìm hiểu cách thức mà các thực thể lớp 3 trở lên có thể trao đổi thông tin  với nhau thông qua data link layer 2 Ethernet đã thiết lập. Không mất tính tổng quát, ta  cùng khảo sát vấn đề này qua hoạt động ping giữa các PC. 

Ta giả sử PC1 muốn thực hiện hành động ping đến PC2, từ giao diện Command Line,  người quản trị sẽ thực hiện lệnh ping:

C:\>ping 192.168.1.2

Khi thực hiện lệnh ping này, người quản trị đã khởi tạo một gói tin ICMP Echo Request  để gửi đến địa chỉ 192.168.1.2, gói tin ICMP này sẽ được đóng gói vào gói tin IP để có  thể được vận chuyển bằng giao thức IP đến đích đến đã chỉ ra. Gói tin IP này có cặp  source – destination IP được xác định như sau:

  • Source IP: Sẽ được lấy là địa chỉ trên output interface (cổng ra) của gói tin. Vì  PC1 chỉ có một cổng mạng duy nhất nên PC1 sẽ lấy source IP chính là IP được  đặt trên card mạng của mình: 192.168.1.1. 
  • Destination IP: Chính là địa chỉ IP được khai báo trong câu lệnh ping (192.168.1.2). Hoạt động đóng gói của gói tin IP sẽ sử dụng destination IP là địa  chỉ 192.168.1.2 đã chỉ ra trước đó. 

Trong đa số các trường hợp, địa chỉ IP đích sẽ được chỉ ra từ trước, khi mà các  ứng dụng lớp trên (TFTP, FTP, HTTP,…) được kích hoạt; tiếp đó, hoạt động  đóng gói các đơn vị dữ liệu lớp trên vào gói tin IP sẽ sử dụng destination IP đã  được chỉ ra này. 

Đến lượt nó, gói tin IP vừa được xây dựng cần phải được đóng gói vào một Ethernet  frame để có thể di chuyển được trên data link Ethernet đến tay người nhận. Frame  Ethernet dùng để đóng gói gói tin IP vừa nêu sẽ có các địa chỉ MAC source và  destination được xác định như sau: 

  • Source MAC: PC1 sẽ sử dụng source MAC chính là địa chỉ MAC trên cổng mạng  của nó. 
  • Destination MAC: Là địa chỉ MAC của PC2 – đích đến của gói tin được đóng gói  vào Ethernet frame. Tuy nhiên, PC1 sẽ không thể biết được MAC của PC2 là gì,  thông tin duy nhất mà nó có chính là MAC của PC2 phải là địa chỉ MAC của thiết  bị đang được gán địa chỉ IP là 192.168.1.2. Để tìm cho ra địa chỉ MAC này nhằm  hoàn thiện tiến trình đóng gói gói tin IP vào Ethernet frame, PC1 cần phải thực  hiện thao tác phân giải địa chỉ bằng kỹ thuật ARP. 

Hoạt động ARP trên PC1 nhằm xác định địa chỉ MAC tương ứng với địa chỉ IP  192.168.1.2 được tiến hành như sau (hình 2):

Hình 2 – Phân giải địa chỉ ARP.

Các bước tiến hành: 

1. PC1 thực hiện phát đi broadcast gói tin ARP Request vào data link Ethernet. Gói  ARP Request được sử dụng nhằm mục đích truy vấn địa chỉ MAC tương ứng với  một IP đã biết nào đó. Trong trường hợp này, gói ARP request do PC1 phát ra sẽ  hỏi xem thiết bị nào trên LAN có địa chỉ MAC tương ứng với IP 192.168.1.2 thì  hãy cho nó được biết. 

2. Vì gói ARP Request được phát đi broadcast nên mọi thực thể trên mạng LAN đều  nhận được gói này, tuy nhiên chỉ thực thể nào mang địa chỉ 192.168.1.2 mới trả  lời cho gói này; trong ví dụ của chúng ta, PC2 chính là thực thể mạng sẽ trả lời  truy vấn nhận được. Để trả lời cho gói ARP Request của PC1, PC2 sử dụng gói  tin ARP Reply; gói tin ARP Reply do PC2 phát ra sẽ được gửi unicast trở lại cho  PC1. Địa chỉ MAC của PC2 (tương ứng với IP 192.168.1.2) sẽ được ghi trong gói  tin này. 

3. Khi PC1 nhận được gói tin ARP Reply từ PC2 và xác định được địa chỉ MAC cần  tìm, nó sẽ thực hiện đóng frame cho hoạt động ping giữa PC1 và PC2 với  destination MAC là MAC của PC2 đã tìm được thông qua hoạt động ARP.  Để có thể sử dụng kết quả truy vấn này cho những lần trao đổi dữ liệu tiếp theo,  PC1 thực hiện lưu kết quả phân giải ARP vào trong bảng ARP cache của nó. 

Như vậy, với các bước được tiến hành như trên, PC1 đã thực hiện thành công hoạt động  đóng gói gói tin lớp 3 vào frame lớp 2 để có thể vận chuyển dữ liệu các lớp trên đi qua  data link Ethernet này. Hoạt động này sẽ được diễn ra tương tự với các thực thể khác trên  mạng LAN, kết quả cuối cùng PC1 sẽ có được cập nhật IP – MAC cho mọi thiết bị mạng  còn lại trong bảng ARP Cache của nó (hình 3):

Hình 3 – Bảng ARP Cache của PC1.

Tiếp theo, chúng ta cùng tìm hiểu cấu trúc của một frame ARP và chức năng của từng  trường (field) trong frame này (hình 4).

Hình 4 – ARP Frame.

Một Frame Ethernet chứa gói tin ARP gồm các trường chính như sau:

  • Hai trường đầu tiên là các trường Destination MAC Source MAC của Ethernet  frame. Trường Source MAC luôn là địa chỉ MAC của thiết bị gửi đi frame  Ethernet. Trường Destination MAC sẽ là địa chỉ broadcast FFFF.FFFF.FFFF khi  frame đang bọc trong nó gói ARP Request và sẽ là địa chỉ MAC của PC đã phát  đi gói tin ARP Request trước đó khi frame đang bọc trong nó gói tin ARP Reply.  

Các trường này đều có độ dài 6 byte vì địa chỉ MAC dài 6 byte. 

  • Trường tiếp theo là Frame – type cho biết loại dữ liệu được đóng gói trong frame  Ethernet. Khi dữ liệu được đóng gói trong frame Ethernet là của giao thức ARP,  trường này nhận giá trị là 0x0806. 
  • Các trường Hard Type Prot Type mô tả loại địa chỉ vật lý nào và địa chỉ logic  nào sẽ được tương quan với nhau bởi hoạt động ARP. Trường Hard Type sẽ nhận  giá trị là 0x1 cho địa chỉ MAC của Ethernet LAN, trường Prot Type sẽ nhận giá  trị 0x0800 cho địa chỉ IP. 
  • Các trường Hard Size Prot Size cho biết kích thước tính theo byte của địa chỉ  vật lý và địa chỉ luận lý và ARP thực hiện phân giải. Với địa chỉ MAC, Hard Size  nhận giá trị là 6 và với địa chỉ IP, Prot Size nhận giá trị là 4. 
  • Trường Op cho biết gói tin ARP nào của giao thức ARP đang được sử dụng bởi hoạt động ARP và được đóng gói trong frame đang xét. Có 4 giá trị của Op cho 4  loại gói tin ARP: 1 – ARP Request, 2 – ARP Reply, 3 – RARP Request và 4 – RARP Reply
  • Các trường tiếp theo chính là các địa chỉ IP và MAC được phân giải trong hoạt  động ARP: 
    • Với gói ARP Request: Sender MAC Sender IP chính là MAC và IP của  máy gửi đi gói ARP Request; Target MAC sẽ được thiết lập là địa chỉ  0000.0000.0000 và Target IP chính là địa chỉ IP đang cần phân giải ra địa  chỉ MAC. 
    • Với gói ARP Reply: Sender MAC Sender IP chính là MAC và IP của  máy đã gửi đi gói ARP Reply; Target MAC Target IP chính là MAC và  IP của máy đã gửi đến gói ARP Request trước đó. 

Một số lệnh thao tác với ARP thường dùng: 

  • Trên PC: 
C:\> arp – a: hiển thị bảng ARP. 
C:\> arp – d: xóa bảng ARP.
  • Trên Cisco router: 
R#show arp: hiển thị bảng ARP. 
R#clear arp-cache: xóa bảng ARP.

Trên đây chúng ta đã cùng nhau tìm hiểu một vài nét tiêu biểu về một giao thức nền tảng  rất quan trọng của chồng giao thức TCP/IP. Trong bài viết tiếp theo, chúng ta sẽ cùng  trao đổi về một dạng thức khác của ARP là Proxy – ARP.  

Cảm ơn các bạn! 

Hẹn gặp lại các bạn trong các bài viết tiếp theo!

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories