DHCP - Dynamic Host Configuration Protocol

     Ngày xửa ngày xưa, khi số lượng máy tính còn rất ít - Mạng máy tính mới ra đời. Người quản trị mạng phải làm một việc để các máy tính có thể trao đổi dữ liệu với nhau đó là cấu hình IP. Và thế là ....... ngày nay!! Số lượng máy tính tham gia vào mạng ngày càng lớn, chủng loại ngày càng nhiều thì việc cấu hình IP cho máy tính không còn dễ dàng như trước nữa! Người quản trị phải đổ sức ra, cố ghi nhớ lại dãy IP mà mình được cung cấp. Những IP nào được cấp rồi và những IP nào chưa được cấp. Đến lúc có nhu cầu tham gia vào mạng. Người dùng sẽ tìm đến Admin và xin 1 địa chỉ cho mình và nhờ anh ấy cấu hình giúp!!!. Người thì dùng Windows, người thì dùng Linux, người dùng MAC, ..... Người xài Laptop, người xài Desktop, người xài Ipad, người SmartPhone,....... @.@ Quả thật là một cơn ác mộng cho những ai làm công việc này!
     Và để tránh phải đổ sức lực ra làm công việc này, để tự động hóa việc cấp IP. Người ta đã nghĩ ra một giao thức, đó chính là DHCP viết tắt của từ Dynamic Host Configuration Protocol. Công việc sẽ dễ dàng hơn rất nhiều lần khi có một server được cấu hình DHCP Service. Người quản trị chỉ cần cho biết dãy IP được phép dùng là bao nhiêu, dãy con nào được phép sử dụng, thời gian sử dụng cho mỗi địa chỉ là bao nhiêu,... Không những thế, nó còn cung cấp thêm các thông số khác như default getway, dns server, nis server, wins server, .........  và lúc này Admin có thể rãnh rỗi để làm những việc "khác" ;;).
    Tiền thân của DHCP là giao thức BOOTP,  DHCP hoạt động trên tần Applications trong một hình TCP, được chạy theo mô hình Server-Client. Chạy trên Server ở port 67 và trên Client ở port 68. Khi cần xin địa chỉ IP thì Client sẽ chủ động tìm server. Các bản RFC của DHCP là 1533, 1534, 1541, 1542, 2131.

    Vì đây là một giao thức nên nó được quy định rất rõ ràng trình tự xin và cấp phát 1 địa chỉ IP. Quá trình cấp phát đơn giản chỉ gồm 4 bước sau:

  1. DHCP Client broadcasts a DHCPDISCOVER packet
  2. Khi cần xin 1 IP để tham gia vào mạng. Client sẽ gào lên (gửi tin broadcasts) cho tất cả các host trên mạng biết rằng nó đang cần 1 địa chỉ IP. Để đâu đó trên mạng có DHCP Server nào đó nghe được. Nếu không có Server nào trả lời thì nó tiếp tục gào lên thêm 3 lần nữa (gửi 4 gói tin Broadcasts). Nếu vẫn chưa nhận được câu trả lời tự Client sẽ phát sinh cho mình một địa chỉ IP tạm thời từ 169.254.0.1 đến 169.254.255.254 netmask là 255.255.255.0. Và cứ sau mỗi 5 phút, nó lại tiếp tục gào lên :D. thảm nhỉ!.. và nếu như có một DHCP Server nào đó nghe được tiếng gào này (nhận được gói tin) của Client thì nó sẽ gửi 1 gói tin về có Client. Qua bước 2.
  3. DHCP Servers broadcast a DHCPOFFER packet
  4. Để đáp lại lời gào thét van xin của Client :D. DHCP Server cũng sẽ phản ứng lại cũng bằng cách la lớn lên cho mọi người cùng nghe thấy (gửi một gói tin DHCP Offer Broadcasts) rằng nó chính là DHCP server. Và nói rằng nó có thể cấp cho Client đáng thương đó một địa chỉ như thế đó! Vì DHCP server cũng đang la toán lên(gửi broadcast), nên tất cả các hosts khác cũng nghe được.
  5. DHCP Client broadcasts a DHCPREQUEST packet
  6. Client  đã nhận được gói tin DHCP Offer của Server. Nếu có nhiều DHCP server nó sẽ chọn lựa ra 1 DHCP server cho mình, và lại la làng lên cho tất cả các server trong mạng biết rằng: "Tôi đã chọn, và chấp nhận các thông số từ anh DHCP X rồi nhá!", Và tiếp tục DHCP được chọn sẽ tiếp tục gửi gói tin thứ tư về cho Client, còn các DHCP server khác cũng biết thế để rút lui kịp thời  ;).
  7. DHCP Server1 broadcasts a DHCPACK packet
  8. Đây là bước mà DHCP server được chọn sẽ thực hiện. Nếu kiểm tra lại không có gì sơ soát, thì DHCP server sẽ gửi về cho Client gói tin DHCP ACK để chấp nhận cho Client sử dụng địa chỉ này và kết thúc quá trình cấp IP. Còn nếu như phát xin vấn đề (IP này đã phát cho người khác, hoặc lời đề nghị lúc đầu là không chính xác,...) thì DHCP server sẽ gửi về cho Client gói tin DHCPNAK. Và đương nhiên là quá trình xin và cấp IP không thành công. Client lại phải tiếp tục gống cổ lên la làng lại từ bước 1.
      Thế là quá trình Cấp IP đã kết thúc. Lưu ý trong quá trình cấp các gói tin được gửi theo dạng Broadcast vì đích đến không chỉ cho 1 host nhận được mà mục đích còn gửi cho nhiều host khác nữa. Và vì đây là các gói tin broadcast nên nó sẽ bị Drop khi đi qua router (tức là đi qua đường mạng khác). Và đây cũng chính là nguyên nhận là cho DHCP Relay Agent ra đời.
       Vậy DHCP Relay Agent là gì?
       Như nói ở trên nó được dùng như một DHCP trung gian. DHCP Relay Agent hoạt động cũng theo 4 bước như trên. Nhưng không trực tiếp quản lý các thông số cài đặt. Mà đơn giản là nó chỉ lắng nghe các yêu cầu xin IP từ Client nhận và chuyển gói tin đó đến cho DHCP Server thật sự (nơi quản lí các thông số cấu hình). Và khi server gửi trả yêu cầu thì nó lại nhận và gửi trả về lại cho Client.
Và đó là những gì mà cơ bản nhất về DHCP mà chúng ta cần nắm được! Ai làm đồ án thì cố tìm hiểu thêm nhá !

Bài đăng phổ biến từ blog này

Đệ quy trong MIPS