Tổng Quan về ARP - ARP là gì?

Tổng Quan về ARP - ARP là gì?

Mạng LAN nhỏ hoạt động dựa trên hai lớp một và hai trong mô hình OSI ( lớp physical và datalink). Nhưng các giao thức liên mạng ( internet-work ) lại dựa trên địa chỉ lớp ba (lớp network). Việc phân giải địa chỉ giữa lớp datalink và lớp network nhằm giúp cho việc truyền dữ liệu được liên tục qua mạng.
Có hai phương pháp phân giải địa chỉ là : map trực tiếpphân giải động. Việc map trực tiếp gặp nhiều khó khăn do địa chỉ MAC (lớp datalink) là địa chỉ 48 bit trong khi địa chỉ IP là 32 bit. Bên cạnh đó các nhà phát triển muốn tạo ra một cơ chế linh hoạt trong sử dụng. Chính vì vậy họ phát triển ARP ( Address Resolution Protocol ). Giao thức này được định nghĩa trong RFC 826

ARP là gì ?

- ARP là phương thức phân giải địa chỉ động giữa địa chỉ lớp network và địa chỉ lớp datalink. Quá trình thực hiện bằng cách: một thiết bị IP trong mạng gửi một gói tin broadcast đến toàn mạng yêu cầu thiết bị khác gửi trả lại địa chỉ phần cứng ( địa chỉ lớp datalink ) của mình.

- Ban đầu ARP chỉ được sử dụng trong mạng Ethernet để phân giải địa chỉ IP và địa chỉ MAC. Nhưng ngày nay ARP đã được ứng dụng rộng rãi và dùng trong các công nghệ khác dựa trên lớp hai.

2. Cơ chế hoạt động

· Quá trình thực hiện ARP được bắt đầu khi một thiết bị nguồn trong mọt mạng IP có nhu cầu gửi một gói tin IP. Trước hết thiết bị đó phải xác định xem địa chỉ IP đích của gói tin có phải nằm cùng trong mạng nội bộ của mình hay không. Nếu đúng vậy thì thiết bị sẽ gửi trực tiếp gói tin đến thiết bị đích. Nếu địa chỉ IP đích nằm trên mạng khác, thì thiết bị sẽ gửi gói tin đến một trong các router nằm cùng trên mạng nội bộ để router này làm nhiệm vụ forward gói tin. Cả hai trường hợp ta đều thấy được là thiết bị phải gói tin IP đến một thiết bị IP khác trên cùng mạng nội bộ. Ta biết rằng việc gửi gói tin trong cùng mạng thông qua Switch là dựa vào địa chỉ MAC hay địa chỉ phần cứng của thiết bị. Sau khi gói tin đựoc đóng gói thì mới bắt đầu được chuyển qua quá trình phân giải địa chỉ ARP và được chuyển đi

· ARP về cơ bản là một quá trình 2 chiều request/response giữa các thiết bị trong cùng mạng nội bộ. Thiết bị nguồn request bằng cách gửi một bản tin broadcast trên toàn mạng. Thiết bị đích response bằng một bản tin unicast đến thiết bị nguồn

Các loại bản tin ARP

Có hai dạng bản tin trong ARP : một được gửi từ nguồn đến đích, và một được gửi từ đích tới nguồn.

· Request : Khởi tạo quá trình, gói tin được gửi từ thiết bị nguồn tới thiết bị đích
· Reply : Là quá trình đáp trả gói tin ARP request, được gửi từ máy đích đến máy nguồn

Có 4 loại địa chỉ trong một bản tin ARP :

1. Sender Hardware Address : địa chỉ lớp hai của thiết bị gửi bản tin
2. Sender Protocol Address : Địa chỉ lớp ba ( hay địa chỉ logic ) của thiết bị gửi bản tin
3. Target Hardware Address : Địa chỉ lớp hai ( địa chỉ phần cứng ) của thiết bị đích của bản tin
4. Target Protocol Address : Địa chỉ lớp ba ( hay địa chỉ logic ) của thiết bị đích của bản tin

Các bước hoạt động của ARP :

1. Source Device Checks Cache : Trong bước này, thiết bị sẽ kiểm tra cache ( bộ đệm ) của mình. Nếu đã có địa chỉ IP đích tương ứng với MAC nào đó rồi thì lập tức chuyển lên bước 9
2. Source Device Generates ARP Request Message : Bắt đầu khởi tạo gói tin ARP Request với các trường địa chỉ như trên
3. Source Device Broadcasts ARP Request Message : Thiết bị nguồn quảng bá gói tin ARP Request trên toàn mạng
4. Local Devices Process ARP Request Message : Các thiết bị trong mạng đều nhận được gói tin ARP Request. Gói tin được xử lý bằng cách các thiết bị đều nhìn vào trường địa chỉ Target Protocol Address. Nếu trùng với địa chỉ của mình thì tiếp tục xử lý, nếu không thì hủy gói tin
5. Destination Device Generates ARP Reply Message : Thiết bị với IP trùng với IP trong trường Target Protocol Address sẽ bắt đầu quá trình khởi tạo gói tin ARP Reply bằng cách lấy các trường Sender Hardware Address và Sender Protocol Address trong gói tin ARP nhận được đưa vào làm Target trong gói tin gửi đi. Đồng thời thiết bị sẽ lấy địa chỉ datalink của mình để đưa vào trường Sender Hardware Address
6. Destination Device Updates ARP Cache : Thiết bị đích ( thiết bị khởi tạo gói tin ARP Reply ) đồng thời cập nhật bảng ánh xạ địa chỉ IP và MAC của thiết bị nguồn vào bảng ARP cache của mình để giảm bớt thời gian xử lý cho các lần sau
7. Destination Device Sends ARP Reply Message : Thiết bị đích bắt đầu gửi gói tin Reply đã được khởi tạo đến thiết bị nguồn. Gói tin reply là gói tin gửi unicast
8. Source Device Processes ARP Reply Message : Thiết bị nguồn nhận được gói tin reply và xử lý bằng cách lưu trường Sender Hardware Address trong gói reply như địa chỉ phần cứng của thiết bị đích
9. Source Device Updates ARP Cache : Thiết bị nguồn update vào ARP cache của mình giá trị tương ứng giữa địa chỉ network và địa chỉ datalink của thiết bị đích. Lần sau sẽ không còn cần tới request

3. ARP Caching

ARP là một giao thức phân giải địa chỉ động. Quá trình gửi gói tin Request và Reply sẽ tiêu tốn băng thông mạng. Chính vì vậy càng hạn chế tối đa việc gửi gói tin Request và Reply sẽ càng góp phần làm tăng khả năng họat động của mạng.Từ đó sinh ra nhu cầu của ARP Caching

Static and Dynamic ARP Cache Entries

ARP Cache có dạng giống như một bảng tương ứng giữa địa chỉ hardware và địa chỉ IP. Có hai cách đưa các thành phần tương ứng vào bảng ARP :
· Static ARP Cache Entries: Đây là cách mà các thành phần tương ứng trong bảng ARP được đưa vào lần lượt bởi người quản trị. Công việc được tiến hành một cách thủ công
· Dynamic ARP Cache Entries: Đây là quá trình mà các thành phần địa chỉ hardware/IP được đưa vào ARP cache một cách hoàn toàn tự động bằng phần mềm sau khi đã hoàn tất quá trình phân giải địa chỉ. Chúng được lưu trong cache trong một khoảng thời gian và sau đó sẽ được xóa đi

Dynamic Cache được sử dụng rộng rãi hơn vì tất cả các quá trình diễn ra tự động và không cần đến sự tương tác của người quản trị. Tuy nhiên static cache vẫn có phạm vi ứng dụng nhất định của nó. Đó là trường hợp mà các workstation nên có static ARP entry đến router và file server nằm trong mạng. Điều này sẽ hạn chế việc gửi các gói tin để thực hiện quá trình phân giải địa chỉ.

Tuy nhiên ngoài hạn chế của việc phải nhập bằng tay, static cache còn thêm hạn chế nữa là khi địa chỉ IP của các thiết bị trong mạng thay đổi thì sẽ dẫn đến việc phải thay đổi ARP cache

Quá trình xóa thông tin trong cache

Ta xét trường hợp bảng cache của một thiết bị A, trong đó có chứa thông tin về thiết bị B trong mạng. Nếu các thông tin trong cache được lưu mãi mãi, sẽ có một số vấn đề như sau xảy ra :
· Địa chỉ phần cứng thiết vị đựoc thay đổi : Đây là trường hợp khi thiết bị B được thay đổi card mạng hay thiết bị giao tiếp, làm thay đổi địa chỉ MAC của thiết bị. Điều này làm cho các thông tin trong cache của A không còn đúng nữa
· Địa chỉ IP của thiết bị được thay đổi : Người quản trị hay nhà cung cấp thay đổi địa chỉ IP của B, cũng làm cho thông tin trong cache của A bị sai lệch
· Thiết bị được rút ra khỏi mạng : Khi B được rút ra khỏi mạng nhưng A không được biết, và gây lãng phí về tài nguyên của A để lưu thông tin không cần thiết và tốn thời gian để tìm kiếm.

Để tránh được những vấn đề này, các thông tin trong dynamic cache sẽ được tự động xóa sau một khoảng thời gian nhất định. Quá trình này được thực hiện một cách hoàn toàn tự động khi sử dụng ARP với khoảng thời gian thường là 10 hoặc 20 phút. Sau một khoảng thời gian nhất định được lưu trong cache , thông tin sẽ được xóa đi. Lần sử dụng sau, thông tin sẽ được update trở lại

4. Proxy ARP

ARP được thiết kế cho các thiết bị nằm trong nội mạng, có tính chất local. Tuy nhiên nếu hai thiết bị A và B bị chia cắt bởi 1 router thì chúng sẽ được coi như là không local với nhau nữa. Khi A muốn gửi thông tin đến B, A sẽ không gửi trực tiếp được đến B theo địa chỉ lớp hai, mà phải gửi qua router và được coi là cách nhau 2 hop ở lớp ba.

Vì sao cần phải có Proxy ARP ?

Khác với các trường hợp thông thường, nhiều trường hợp hai thiết bị A và B nằm trên 2 segment vật lý khác nhau nhưng được kết nối qua một router và cùng nằm trong một mạng IP hay một IP subnet. Lúc này A và B sẽ coi nhau có quan hệ local.

Giả sử ta có tình huống A muốn gửi thông tin cho B. A nghĩ B trong cùng nội mạng và tìm trong bảng ARP cache. A không lưu địa chỉ MAC của B và bắt đầu tiến hành quá trình phân giải địa chỉ. A broadcast gói ARP request trong nội mạng để tìm địa chỉ MAC của B. Sẽ có vấn đề xảy ra : B không cùng nằm trong mạng và sẽ không nhận được gói tin broadcast cũng như router kết nối sẽ không forward gói broadcasr từ A qua B ( router không truyền các gói broadcast ở lớp datalink )

VÌ vậy B không bao giờ nhận được request từ A cũng như A sẽ không bao giờ có được địa chỉ MAC của B

Hoạt động của Proxy ARP

Giải pháp cho tình huống này được gọi là ARP proxying hay Proxy ARP. Trong công nghệ này, router nằm giữa 2 mạng local sẽ được cấu hình để đáp ứng các gói tin broadcast gửi từ A thay cho B. Router sẽ không gửi cho A địa chỉ MAC của B, vì dù thế nào A và B cũng nằm trên hai mạng khác nhau và không thể gửi trực tiếp đến nhau được. Thay vào đó router sẽ gửi cho A các địa chỉ MAC cảu chính router. A sau đó sẽ gửi thông các gói tin cho router, và router sẽ forward sang cho B. Quá trình cũng hoàn toàn diễn ra tương tự khi B muốn gửi thông tin cho A, hay cho bất cứ thiết bị nào mà đích đến của gói tin là một thiết bị ở một mạng khác.

Ta xem thêm minh họa trong hình phía dưới :

Trong ví dụ, một router kết nối hai mạng LAN cùng trong một mạng IP hoặc subnet với nhau. Router sẽ không truyền các gói tin ARP broadcast nhưng được cấu hình để hoạt động như một ARP proxy. Hai thiết bị A và D có nhu cầu gửi các gói tin IP cho nhau, chính vì vậy chúng broadcast các gói ARP request. Router sẽ đáp ứng lại các gói tin request từ A như thể là D ( router không truyền gói request đến D ). Tương tự, router cũng sẽ dùng địa chỉ của mình để gửi trả các gói tin từ D gửi cho A.

Ưu điểm và nhược điểm của Proxying

Ưu điểm dễ nhận thấy của Proxy ARP là các router hoạt động nhưng các thiết bị không hề cảm nhận được sự hoạt động của nó. Các hoạt động gửi nhận giữa hai thiết bị thuộc hai LAN khác nhau vẫn diễn ra bình thường

Tuy nhiên nó vẫn có những mặt trái và những điểm hạn chế của mình :

· Thứ nhất, nó làm tăng độ phức tạp của mạng
· Thứ hai, nếu nhiều hơn một router kết nối tới hai LAN cùng nằm trong một mạng IP, nhiều vấn đề có thể phát sinh
· Thứ ba, công nghệ này cũng tạo nên những mối nguy cơ tiềm ẩn về an ninh và bảo mật, khi các router được cấu hình proxy, tạo nguy cơ về giả mạo địa chỉ

Do vậy, giải pháp tốt nhất là thiết kế lại topo mạng để chỉ một router kết nối tới hai LAN nằm trong một mạng IP.
(From Internet)

Share this

Related Posts

Previous
Next Post »

2 nhận xét

nhận xét
03:12 27/12/08 delete

Cho mình lam quen nhe
Minh ham mo cau do
hieu biet cua cau that rong
cam on nhe 100 times

Reply
avatar
22:28 2/4/12 delete

có ai chỉ mình viết 1 chuơng trình server -cline minh hoạt hoạt động giao thức ARP không?
mình đang làm đồ án cái này mà bí quá nên lên đây hỏi anh em nè



giúp nình với mình sắp chết tới nơi rồi
huhuhuhu


Như sau:
ARP là gì?
Trong protocol TCP/IP có ARP protocol. ARP tự động cập nhật các MAC tương ứng với các IP và xây dựng một bảng ARP table trong máy tính trong cùng mạng subnet. Khi này , nếu A và B ở trong cùng LAN, thì khi A muốn gửi packet cho B, nó sẽ match IP của B với MAC tương ứng trong bang ARP của nó. Nếu A biết IP của B nhưng không match được MAC tương ứng trong bảng ARP của nó , thì khi này nó sẽ gứi một packet , gọi là ARP request, với địa chỉ MAC broadcast FFFFFFFFFF . Khi này tất cả máy tính trên cùng một mạng sẽ nhận được gói này và chuyển lên lớp Network; nhưng chỉ có máy có IP match với IP destination address trong ARP request mới gửi trả lại gói tin có chứa địa chỉ MAC tương ứng mà máy A muốn tìm . Gói tin này là ARP reply. Nếu Host B available trên Segment thì nó sẽ biết là gói tin này gửi cho nó nhờ vào địa chỉ IP mà Host A ghi trong gói tin ARP request và nó sẽ trả lời bằng 1 gói tin ARP reply. Gói tin ARP reply sẽ có MAC nguồn là MAC của host B, MAC đích là MAC của Host A, khi Host A nhận được gói tin này tự nhiên sẽ biết được MAC của B. Sau khi A nhận được ARP reply , nó sẽ mở gói và update bảng ARP table của nó: IP và MAC của máy B.

để mình minh họa 1 xíu cho các bạn dễ hiểu nhen


1 thiết kế 2 chương trình 1 là sever 2 la cline

sever thực hiện các thao tác sau: server sẻ gởi xuống tất cả các máy cline dưới 1 gói tin với thông điệp là "Ai có địa chỉ IP là :192.168.1.20 hãy trã lời tôi và nhớ kèm theo địa chỉ MAC nưa nhé"

cline ở dưới nhận được gói tin là tiến hành kiểm tra IP của mình có giống IP sever hỏi không. nếu giống gởi lại cho sever 1 gói tin với nội dung là " tối có địa chỉ IO 192.168.1.20 với MAC:aa-00-88-44-525-445 "
server nhận được sẻ lưu IP với MAC đó vào chane và tiến hành bắt tay giao dịch với máy cline đó chư gởi tin ..........còn các máy khác không có địa chỉ IP giống như sever yêu cần thì không liên lạc.......
. hết

Reply
avatar