Tổng quan về giao thức DHCP
- Dynamic Host Configuration Protocol (DHCP – giao thức cấp phát IP động) là một giao thức cho phép cấp phát địa chỉ IP một cách tự động cùng với các cấu hình liên quan khác như Subnet mask, Gateway, DNS Server….. Client được cấu hình nhận địa chỉ IP một cách tự động. Vì thế sẽ giảm việc can thiệp vào hệ thống mạng. Giao thức DHCP Server cung cấp một database để theo dõi tất cả các máy tính Client trong hệ thống mạng. Mục đích quan trọng nhất là tránh trường hợp hai máy tính khác nhau lại có cùng địa chỉ IP.
- Nếu không có giao thức DHCP. Các máy trạm có thể cấu hình IP thủ công (cấu hình IP tĩnh). Nhưng nếu một hệ thống lớn thì khi thay đổi ta phải tiến hành cấu hình thủ công trên từng Client sẻ rất mất thời gian và khó quản lý. Ngoài việc cung cấp địa chỉ IP. DHCP còn cung cấp các thông tin cấu hình khác. Cụ thể như DNS Server, Default Gateway, Thời gian cho thuê địa chỉ IP….. Hiện nay giao thức DHCP có 2 version cho IPv4 và IPv6.
- Sử dụng giao thức DHCP có một vài lợi ích hơn cấu hình IP tĩnh. Cấu hình của địa chỉ IP sẽ được thiết lập trên DHCP server. Cấu hình IP lúc này được control bởi nhân viên quản trị. Hạn chế đáng kể can thiệp từ người dùng. Thông thường thì DHCP sẽ cấp phát một “lease” cho client. DHCP server sẽ lấy lại địa chỉ IP này khi thiết bị rời khỏi mạng để cấp phát cho một Client khác.
DHCP Messages và Address
- Trao đổi giữa DHCP Server và Client sẽ trải qua một vài tiến trình. Đầu tiên, PC (Client) sẽ sử dụng giao thức ARP hoặc gửi gói tin Broadcast (FFFF.FFFF.FFFF) để tìm DHCP Server và yêu cầu cấp phát địa chỉ IP từ Server. Tiến trình cấp phát địa chỉ IP sẽ thông qua 4 loại gói tin được trao đổi giữa Client và Server.
Các loại gói tin trao đổi:
- Discover: được tạo ra bởi Client để tìm DHCP Server.
- Offer: được gửi bởi DHCP Server để thiết lập “lease” với Client và thông báo cho Client biết địa chỉ IP cụ thể, đồng thời xác nhận các thông số khác ngoài địa chỉ IP.
- Request: được gửi bởi Client để yêu cầu Server cấp phát địa chỉ được chỉ ra trong gói tin Offer.
- Acknowledgement: được gửi bởi DHCP Server để cấp phát địa chỉ IP và một số thông số như Subnet Mask, Default Gateway, DNS Server,…
Tuy nhiên, có một vài trường hợp Client chưa nhận được địa chỉ IP nhưng vẫn cần gửi gói tin. Lúc đó, DHCP Server sẽ sử dụng 2 loại địa chỉ đặc biệt để cho phép host chưa có địa chỉ IP vẫn có thể gửi và nhận gói tin trong một local subnet.
- 0.0.0.0: là địa chỉ dành riêng được sử dụng làm địa chỉ nguồn (source) cho host khi host chưa có địa chỉ IP.
- 255.255.255.255: là địa chỉ dành riêng dùng làm local broadcast. Client sử dụng địa chỉ này trong gói tin DHCP Discover để tìm DHCP Server. Các Router sẽ không forward các gói tin broadcast.
Các loại gói tin chính của DHCP Server:
- Gói tin Discover: Khi một DHCP Client mới tham gia vào hệ thống mạng, nó sẽ yêu cầu thông tin địa chỉ IP từ DHCP Server bằng cách gửi broadcast một gói DHCP Discover có địa chỉ nguồn là 0.0.0.0 để tìm DHCP Server, vì Client chưa có địa chỉ IP.
- Gói tin Offer: Khi DHCP Server nhận được gói DHCP Discover từ Client, nó sẽ gửi lại một gói DHCP Offer chứa các thông số như địa chỉ IP, Subnet Mask, Gateway,… cho Client. Có thể có nhiều DHCP Server cùng gửi gói DHCP Offer, nhưng Client chỉ chấp nhận gói DHCP Offer đầu tiên mà nó nhận được.
- DHCP Request Packet: Khi DHCP Client nhận được gói DHCP Offer, nó sẽ phản hồi bằng cách gửi bản tin DHCP Request để xác nhận hoặc kiểm tra lại các thông tin mà DHCP Server vừa gửi.
- DHCP Acknowledge: DHCP Server sẽ kiểm tra và xác nhận lại việc chấp nhận thuê địa chỉ IP của Client.

Các gói tin phụ của DHCP:
- Gói tin DHCP NAK: Nếu một địa chỉ IP đã hết hạn hoặc đã được cấp phát cho một Client khác, DHCP Server sẽ gửi gói DHCP NAK cho Client. Khi đó, nếu Client muốn tiếp tục sử dụng địa chỉ IP, nó phải bắt đầu lại tiến trình thuê địa chỉ IP.
- DHCP Decline Packet: Nếu DHCP Client nhận được bản tin trả về không đầy đủ thông tin hoặc địa chỉ IP đã hết hạn, nó sẽ gửi gói DHCP Decline đến Server để yêu cầu thiết lập lại tiến trình thuê địa chỉ IP.
- DHCP Release Packet: Client gửi bản tin này đến Server để ngừng thuê địa chỉ IP. Khi nhận được bản tin này, Server sẽ thu hồi lại địa chỉ IP đã cấp cho Client.
Tiến trình hoạt động của một DHCP
Hoạt động cấp phát địa chỉ IP của giao thức DHCP sẽ thông qua các bước sau:
- Bước 1: Máy trạm sẽ phát ra một bản tin broadcast để tìm DHCP Server nhằm thuê địa chỉ IP. Client sẽ gửi bản tin broadcast (có chứa địa chỉ MAC của Client) với gói tin DHCP Discover lên mạng.
- Bước 2: Nhiều DHCP Server có thể nhận được thông điệp và chuẩn bị địa chỉ IP cho máy trạm. Nếu Server có cấu hình địa chỉ IP hợp lệ cho máy trạm, Server sẽ gửi thông điệp “DHCP Offer” chứa địa chỉ MAC của Client đã gửi lên, địa chỉ IP được “Offer”, Subnet Mask, địa chỉ IP của Gateway, thời gian cho thuê địa chỉ IP (lease time), DNS Server,…
- Bước 3: Khi Client nhận được gói tin DHCP Offer và chấp nhận thuê địa chỉ IP trong gói tin Offer, Client sẽ gửi bản tin DHCP Request để yêu cầu DHCP Server cấp phát địa chỉ IP.
- Bước 4: Cuối cùng, DHCP Server sẽ xác nhận lại với Client bằng bản tin DHCP Acknowledge. Sau đó, DHCP Server tiến hành cấp phát địa chỉ IP, Subnet Mask, địa chỉ Gateway và các thông tin khác cho Client. Client có thể sử dụng địa chỉ IP trong thời hạn “lease” đã được thiết lập trên DHCP Server.
Khi hết thời hạn “hợp đồng”, để tiếp tục sử dụng địa chỉ IP, Client sẽ gửi một bản tin DHCP Request trực tiếp (unicast) đến DHCP Server mà nó đã xin địa chỉ ban đầu. Nếu DHCP Server vẫn còn hoạt động, nó sẽ phản hồi bằng một gói tin DHCP ACK để gia hạn địa chỉ IP cho DHCP Client. Gói tin này bao gồm các thông số cấu hình mới nhất được cập nhật trên DHCP Server.
Các lý do nên sử dụng DHCP Relay Agent
Nếu mỗi mạng đều triển khai một DHCP Server riêng thì sẽ rất tốn kém và không cần thiết. Đồng thời, việc bảo trì và quản lý hệ thống cũng sẽ trở nên khó khăn hơn.
Mặc dù có thể cấu hình Router cho phép các gói tin broadcast đi qua, nhưng việc này có thể gây ra nhiều vấn đề khi hệ thống mạng gặp sự cố. Ngoài ra, nếu lưu lượng các gói tin broadcast quá lớn sẽ làm tắc nghẽn hệ thống mạng.
DHCP Relay Agent

- DHCP Relay Agent là một tính năng được cấu hình trên các Router trung gian nhằm tiếp nhận các bản tin yêu cầu cấp phát địa chỉ IP từ Client và chuyển tiếp các thông tin này đến DHCP Server.
- Mặc định, các Router sẽ loại bỏ (drop) tất cả các gói tin broadcast. Trong khi đó, khi Client yêu cầu cấp phát địa chỉ IP, nó sẽ gửi một bản tin broadcast để thuê địa chỉ IP.
- Trong mô hình trên, gói tin broadcast này sẽ bị drop tại Relay Agent. Kết quả là Client sẽ không thể nhận được địa chỉ IP từ DHCP Server. Vì vậy, cần phải cấu hình DHCP Relay Agent trên Router.
- Khi đó, Router đóng vai trò là DHCP Relay Agent sẽ chuyển đổi bản tin broadcast từ Client thành bản tin unicast để gửi đến DHCP Server. DHCP Relay Agent hoạt động như một “người phiên dịch” giữa Client và DHCP Server.
Tiến trình sẽ được thực hiện thông qua các bước sau:
- Bước 8: DHCP Relay Agent sẽ broadcast gói tin DHCP ACK đến Client để Client nhận được địa chỉ IP.
- Bước 1: Client sẽ gửi bản tin broadcast chứa gói tin DHCP Discover trong nội bộ mạng.
- Bước 2: DHCP Relay Agent cùng mạng với Client sẽ nhận gói tin đó và chuyển đến DHCP Server bằng bản tin unicast.
- Bước 3: DHCP Server sử dụng bản tin unicast để gửi trả DHCP Relay Agent một gói DHCP Offer.
- Bước 4: DHCP Relay Agent sẽ broadcast gói tin DHCP Offer đó đến các Client.
- Bước 5: Sau khi nhận được gói tin DHCP Offer, Client sẽ tiếp tục gửi broadcast gói tin DHCP Request cho DHCP Relay Agent.
- Bước 6: DHCP Relay Agent nhận gói tin DHCP Request từ Client và chuyển đến DHCP Server bằng bản tin unicast.
- Bước 7: DHCP Server sử dụng tín hiệu unicast để gửi trả DHCP Relay Agent một gói tin DHCP ACK.
DHCP Server xử lý đụng độ địa chỉ
- Với Cisco IOS, DHCP Server luôn kiểm tra khả năng xảy ra xung đột địa chỉ IP nếu máy Client được cấu hình IP tĩnh và địa chỉ này nằm trong dãy cấp phát của DHCP Server.
- DHCP Server phát hiện sự trùng lặp địa chỉ bằng cách ping các địa chỉ IP trong Pool trước khi cấp phát cho Client. Trước khi gửi một địa chỉ IP cho Client, DHCP Server sẽ tiến hành “ping” địa chỉ dự định cấp phát. Nếu Server nhận được phản hồi (response) từ gói ping, điều đó có nghĩa là đã có một host khác đang sử dụng địa chỉ IP đó dưới dạng IP tĩnh. Khi đó, Server sẽ loại bỏ địa chỉ IP này ra khỏi Pool cấp phát cho đến khi người quản trị gỡ cấu hình IP tĩnh trên host đó.
- DHCP Client cũng có thể gặp tình trạng xung đột địa chỉ IP. Client sử dụng giao thức ARP để phát hiện conflict. Khi DHCP Client nhận được từ DHCP Server một gói Offer chứa một địa chỉ IP cụ thể, Client sẽ gửi một bản tin ARP để kiểm tra địa chỉ IP này. Nếu có host khác phản hồi, điều đó cho thấy địa chỉ IP đã được sử dụng và DHCP Client sẽ phát hiện xảy ra xung đột địa chỉ IP.
Nguồn: ITForVN
