Powered by Blogger.

IP SERVICES - BÀI SỐ 12: 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 và 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 và 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 và 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:

o Với gói ARP Request: Sender MAC và 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.

o Với gói ARP Reply: Sender MAC và Sender IP chính là MAC và IP của máy đã gửi đi gói ARP Reply;Target MAC và 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!


Nguồn : NTPS
    Blogger Comment
    Facebook Comment