Thứ Sáu, 26 tháng 7, 2013

Tìm hiểu về DHCP và BOOTP

Trong mạng máy tính, giao thức Bootstrap, hay BOOTP, là một giao thức mạng mà máy client sử dụng để lấy địa chỉ IP từ một máy server. Giao thức BOOTP được chỉ định trong RFC 951.
BOOTP thường được sử dụng trong tiến trình “bootstrap” khi máy tính đang khởi động. Server cấu hình BOOTP gán địa chỉ IP cho từng máy client từ một dãy địa chỉ . BOOTP sử dụng giao thức UDP (User Datagram Protocol) làm giao thức vận chuyển .
Về phương diện lịch sử, BOOTP được sử dụng cho các máy trạm không đĩa cứng với hệ điều hành UNIX ( hoặc tương tự) tìm thấy được vị trí của file boot máy ngoài việc nhận được địa chỉ IP, và cũng bởi giao thức này mà các cơ quan xí nghiệp dùng để trỉển khai việc cài đặt mới hệ điều hành (ví dụ :hệ điều hành Windows) cho các máy tính cá nhân (PC) chưa có hệ điều hành.

Lúc ban đầu người ta phải để chương trình của giao thức này trong đĩa mềm gọi là đĩa mềm boot. Đĩa mềm này khởi động để thiết lập các kết nối mạng sơ khởi. Sau này việc sản xuất ra các cạc mạng tích hợp giao thức này trong BIOS cũng như là tích hợp trong bo mạch chủ với những cạc mạng on-board, như thế cho phép máy boot trực tiếp qua cạc mạng.
DHCP (Dynamic Host Configuration Protocol) là một giao thức cao cấp hơn cho cùng mục đích và thay thế cho BOOTP. Phần lớn các DHCP servers hổ trợ thêm BOOTP.

 

Tổng quan, lịch sử và chuẩn về BOOTP

Bộ giao thức TCP/IP đã có mặt gần 3 thập kỷ, và vấn đề làm thế nào tự động hóa việc cấu hình các thông số cho các máy sử dụng địa chỉ IP đã có từ lâu. Vào đầu thập niên 1980, các mạng điện toán còn nhỏ và tương đối đơn giản. Việc cấu hình tự động TCP/IP không được coi là quan trọng lắm mặc dầu có sự khó khăn trong cấu hình các thông số bằng tay. Nó quan trọng ở chỗ không có cách nào khác để cấu hình các máy trạm không có ổ đĩa cứng.
Như chúng ta đã biết, nếu không có một dạng nào đó cất giữ dữ liệu bên trong máy, một thiết bị phải cậy vào một người nào đó hay một cái gì đó bên ngoài để nói cho nó biết nó “là ai”(địa chỉ của nó) và phải vận hành như thế nào mỗi lần mở máy. Khi một thiết bị như thế được bật lên , nó phải ở một tình thế khó khăn: nó cần phải sử dụng IP để liên lạc với một thiết bị khác để nhờ thiết bị này cung cấp thông tin cho nó biết làm sao liên lạc với nhau bằng cách sử dụng IP! Tiến trình này được gọi là “bootstrapping” hay nói cho gọn “booting”, từ bootstrap nghĩa đen là dây gắn vào phía trên gót giày , ẩn dụ một người dùng một vật nhỏ để kéo một vật lớn hơn là chiếc giày vào chân. Cũng như vậy, một chương trình nhỏ dùng để kéo một chương trình lớn hơn là hệ điều hành vào bộ nhớ.
BOOTP: sửa sai các yếu kém của RARP

Giao thức RARP (Reverse Address Resolution Protocol) là giao thức đầu tiên được tạo ra để giải quyết “vấn đề bootstrap”. RARP ra đời năm 1984, là một sự biến thể trực tiếp từ giao thức cấp thấp ARP (Address Resolution Protocol), một giao thức kết buộc địa chỉ IP với địa chỉ tầng data-link. RARP có khả năng cấp địa chỉ IP cho thiết bị không có ổ đĩa cứng, bằng cách dùng sự trao đổi đơn giản bằng một truy vấn và một trả lời trong mối quan hệ client/server .
Quá nhiều hạn chế của RARP trở thành một khó khăn cho mạng:
1. Nó hoạt động bằng broadcasts ở tầng data-link, vì vậy nó đòi hỏi phải có sự điều chỉnh cho phù hợp với từng phần cứng của nhà sản xuất khác nhau.
2.Một server RARP đòi hỏi phải nằm trên mỗi mạng vật lý để đáp ứng cho các broadcast ở tầng 2.
3.Mỗi server RARP phải có một người Admin cấp địa chỉ IP bằng tay trên server.
4.Và điều kém cõi nhất là RARP chỉ cấp địa chỉ IP và không cho thêm một thông tin nào khác mà máy client rất cần.
RARP rõ ràng là không đủ sức cung cấp thông tin cấu hình TCP/IP cho các máy tính. Để hổ trợ vừa cho các máy tính không có đĩa cứng vừa cho việc cấu hình TCP/IP tự động, vì thế mà BOOTP (Bootstrap) được tạo ra. BOOTP được chuẩn hóa trong RFC 951, xuất bản tháng 9 năm 1985. Giao thức này được phát triển để giải quyết các hạn chế của RARP:
1.Nó vẫn còn dựa vào quan hệ client/server, nhưng nó được triển khai ở tầng cao hơn, dùng UDP cho việc vận chuyển. Nó không còn phụ thuộc vào phần cứng đặc biệt nào của nhà sản xuất như là RARP.
2. Hổ trợ gởi thêm thông tin tới máy client ngoài địa chỉ IP.Thông tin thêm này thường được gởi trong một thông điệp duy nhất.
3.Nó có thể sử dụng trong môi trường client và server ở trong những hệ thống mạng gồm nhiều NetID khác nhau. Điều này cho phép quản lý địa chỉ IP tập trung ở một server. 

 
BOOTP chỉ giải quyết giai đoạn đầu của Bootstrapping

Chúng ta cũng cần phải lưu ý rằng mặc dù có tên là BOOTP, ám chỉ rằng nó có đủ mọi thứ cần thiết để máy tính không có đĩa cứng có thể “boot” được, nhưng điều này thực sự không đúng. Vì chính BOOTP đã tự mô tả, “bootstrapping” đòi hỏi hai giai đoạn:
1.Giai đoạn đầu tiên, máy client được cung cấp địa chỉ IP và các thông số khác.
2.Giai đoạn hai, máy client download phần mềm, như là hệ điều hành và các drivers, để nó có thể hoạt động trên mạng và thực hiện các công tác mà nó được giao.
BOOTP thực sự chỉ giải quyết được giai đoạn đầu tiên: giải quyết việc cấp địa chỉ và thông số cấu hình. Giai đoạn hai mặc định xảy ra bằng cách sử dụng một giao thức khác dùng để vận chuyển file như là TFTP(Trivial File Transfer Protocol)
Các thông số đặc trưng cho nhà sản xuất

Người ta đã có một quyết định sáng suốt khi phát trỉển BOOTP là việc thêm vào trong giao thức phần đặc trưng của nhà sản xuất phần cứng. Điều này nhằm để có một chỗ cho những nhà sản xuất có thể chỉ định các thông số liên quan tới sản phẩm phần cứng của riêng họ. Khi độ phức tạp của bộ giao thức TCP/IP tăng lên, người ta nhận ra rằng ô này quá lợi ích vì có thể được dùng để chỉ định thêm phương pháp truyền đạt các thông số đến các máy TCP/IP , và thực tế là nó đã trở nên độc lập với nhà sản xuất. Điều này được đề nghị lần đầu tiên trong RFC 1048
Sự kiện mà BOOTP có thể được dùng để cung cấp nhiều thông tin cho máy client ngoài địa chỉ IP làm cho nó thật ích lợi ngay cả trong những trường hợp mà máy client đã có địa chỉ IP rồi. BOOTP có thể được dùng để gởi các thông tin mà người quản lý muốn mọi máy đều có, để đảm bảo chúng sử dụng mạng một cách thống nhất. Ngoài ra , trong trường hợp các thiết bị đã có ổ đĩa cứng bên trong (và vì vậy không cần BOOTP lấy địa chỉ IP), BOOTP vẫn có thể được dùng để cho những thiết bị này lấy được tên của file boot cho “giai đoạn hai” của tiến trình boot máy.
Những sự thay đổi đối với BOOTP và sự phát triển của DHCP

BOOTP là giao thức cấu hình TCP/IP được lựa chọn hàng đầu từ giữa thập niên 1980 cho đến cuối thập niên 1990. Phần mở rộng cho nhà sản xuất được đưa vào trong RFC 1048 đã là một sự phổ biến, sau khi trãi qua nhiều năm có thêm nhiều phần mở rộng cho nhà sản xuất được chỉ định; RFC 1048 được thay thế bằng RFC 1084, 1395 và 1497 kế tiếp nhau. Thế là sự lẫn lộn cũng phát sinh khi trãi qua năm tháng trong việc giải thích một vài phần trong RFC 951 (RFC 951 khởi tạo ra giao thức BOOTP) và làm sao một vài tính năng của BOOTP có thể thực hiện được.
Trong hoàn cảnh như vậy, RFC 1542 (Làm sáng tỏ và các phần mở rộng cho giao thức Bootstrap) ra đời vào tháng 10 năm 1993 để giải quyết những vấn đề mơ hồ , lẫn lộn của các RFC có trước và cũng đưa thêm vào một vài thay đổi nhỏ cho hoạt động của giao thức BOOTP (RFC 1542 thực chất là sự chỉnh sửa một RFC tương tự trước đó là RFC 1532, nhưng vì chuẩn này có một vài lỗi nhỏ trong đó nên không tiếp tục được.)
Trong lúc BOOTP rất thành công một cách hiển nhiên nhưng nó cũng có một vài nhược đỉểm của riêng nó. Một trong những thiếu sót quan trọng là không cấp được địa chỉ IP cập nhật động. Nhu cầu cấp địa chỉ động trở thành rõ rệt hơn bao giờ hết khi Internet thực sự khởi đầu cất cánh vào cuối thập niên 1990. Chính điều này đã trực tiếp dẫn tới sự phát triển giao thức DHCP (Dynamic Host Configuration Protocol)
DHCP thay thế BOOTP làm giao thức cấu hình TCP/IP , thật là sai lầm khi cho rằng BOOTP hoàn toàn “ra đi”. Ngày nay nó vẫn còn được sử dụng trong nhiều mạng khác nhau. Hơn nữa, DHCP lấy BOOTP làm nền tảng và chúng có nhiều thuộc tính chung, kể cả định dạng các thông điệp cũng giống nhau. Những phần mở rộng cho nhà sản xuất phần cứng trong BOOTP trở thành phần Options của DHCP, chúng hoạt động cùng một cách nhưng DHCP có nhiều khả năng hơn. Trên thực tế, RFC 1497(RFC về phần mở rộng của BOOTP) đã kế thừa RFC 1533 (RFC về các Options của DHCP và phần mở rộng của BOOTP) chính thức kết hợp phần mở rộng của BOOTP và phần Options của DHCP thành một chuẩn chung.

 
Giao thức DHCP (TCP/IP Dynamic Host Configuration Protocol )

Về một phương diện nào đó chúng ta có thể nói tiến bộ của côngnghệ là một hành trình chứ không thể nào là một đích đến. Khi một công nghệ cụ thể nào đó được tinh chỉnh hay thay thế bằng một cái khác siêu hạng hơn thì chỉ là vấn đề thời gian, nó cũng lại bị một cái khác tốt hơn thay thế nó.
Và điều này rất đúng cho BOOTP. Trong lúc BOOTP có nhiều khả năng vượt trội hơn giao thức mà nó đã thay thế là RARP, thì đến lượt nó, sau một vài năm, chính nó lại bị giao thức DHCP thay thế.
Người ta coi BOOTP là một cuộc cách mạng, một sự thay đổi lớn từ RARP, thì DHCP là một sự tiến hóa vượt bậc của BOOTP. DHCP lấy BOOTP làm nền tảng, có cùng định dạng của các thông điệp. Cái thêm vào có ý nghĩa nhất trong DHCP là khả năng cấp địa chỉ IP động cho các máy clients và quản lý tập trung chúng. Chính tính năng này mà vừa cho nó cái tên (Dynamic) vừa làm cho nó thêm quyền lực. Ngày nay DHCP là giao thức chuẩn để cấp cấu hình TCP/IP cho các máy và được sử dụng bao sân hết từ mạng chỉ có một máy client ở gia đình cho đến những liên mạng to lớn của các cơ quan xí nghiệp.
Trong phần sau chúng ta tìm hiểu các khái niệm DHCP và cách hoạt động của nó.
Tổng quan, động lực, lịch sử và chuẩn của DHCP

BOOTP biểu thị một sự tiến bộ đầy ý nghĩa so với RARP vì nó đã giải quyết được thật nhỉều hạn chế của RARP. BOOTP là một giao thức nằm ở tầng cao hơn, độc lập với phần cứng không như là RARP. Nó có khả năng hổ trợ gởi thêm thông tin ngoài địa chỉ IP cho máy client. Ngoài ra, thông qua việc sử dụng BOOTP relay agents, nó làm cho một mạng lớn chỉ sử dụng một hay hai BOOTP servers phục vụ cho các máy clients nằm rãi trên nhiều mạng vật lý khác NetID.

 
Nhu cầu của việc gán địa chỉ IP động

BOOTP thông thường sử dụng một phương pháp tĩnh để xác định địa chỉ IP nào gán cho thiết bị. Khi máy client gởi thông điệp yêu cầu thì thông điệp đó bao gồm cả địa chỉ vật lý, rồi server tra địa chỉ đó trong bảng địa chỉ để xác định địa chỉ IP nào cho máy client.(BOOTP còn có thể sử dụng những phương pháp khác để xác lập mối quan hệ giữa địa chỉ IP và địa chỉ vật lý, nhưng cho tương ứng tĩnh là phương pháp thường sử dụng). Điều này có nghĩa là BOOTP làm việc tương đối tốt trong môi trường tĩnh, nơi mà những sự thay đổi về địa chỉ IP của các thiết bị không thường xảy ra. Những mạng như thế là thông thường trong thập niên 1980 và đầu thập niên 1990.
Trãi qua năm tháng, nhiều mạng máy tính rời xa khỏi mô hình này vì một số lý do:
1.Khi các máy tính ngày càng nhỏ và nhẹ hơn thì thật dễ cho chúng được di chuyển từ mạng này đến mạng khác. Ở mạng khác chúng lại cần một địa chỉ khác với Network ID của mạng mới.
2.Các máy tính xách tay như là Laptop hay palmtop có thể di chuyển từ mạng này đến mạng khác nhiều lần trong ngày.
3.Một vấn đề lớn khác là sự cạn kiệt không gian địa chỉ IP. Trong nhiều cơ quan , việc gán địa chỉ IP tĩnh và dùng mãi cho mỗi máy để chúng kết nối vào mạng là một phí phạm.
4.Trong nhiều cơ quan, việc theo dõi những sự thay đổi địa chỉ cố định trở nên một công việc nản lòng. BOOTP, với bảng ánh xạ địa chỉ tĩnh giữa địa chỉ vật lý và địa chỉ IP không thích hợp cho công việc này. Nó cũng không có cách nào sử dụng lại các địa chỉ; mỗi lần mà một địa chỉ đã cấp, máy tính sẽ giữ mãi địa chỉ đó, ngay cả khi nó không còn cần dùng đến nữa.

 
DHCP:Một giao thức xây dựng trên sức mạnh của BOOTP

Người ta cần một giao thức cấu hình TCP/IP mới để phục vụ cho những mạng điện toán hiện đại hơn. Tổ chức IETF đáp ứng điều này bằng giao thức DHCP (Dynamic Host Configuration Protocol), lần đầu tiên được xuất bản trong RFC 1541, tháng 10 năm 1993. (Thực ra, chuẩn trong giao thức đó đã được nói đến trong RFC 1531 xuất bản trong cùng tháng nhưng vì có một vài lỗi nhỏ trong chuẩn này nên người ta hiệu chỉnh và xuất bản RFC 1541)
Dĩ nhiên, khác với BOOTP là một protocol còn kém cõi. DHCP đã hoạt động rất tốt và cũng đã được sử dụng rộng rãi nhiều nơi khác nhau. Các yếu tố này cho thấy giao thức này đã tiếp nối BOOTP và được bổ sung thêm nhiều theo năm tháng .
DHCP gồm hai thành phần chính:
1.Cơ chế cấp địa chỉ IP.
2.Cơ chế cho phép máy client yêu cầu và server cung cấp thông tin cấu hình.
DHCP thực hiện cả hai chức năng này cùng một cách như BOOTP nhưng có nhiều cải tiến hơn.

 
Tổng quan các tính năng của DHCP

Sự thay đổi có ý nghĩa nhất trong lãnh vực cấp địa chỉ IP, chính là tính năng cấp địa chỉ IP động (đối lập với việc người admin phải tạo bảng ánh xạ giữa địa chỉ vật lý và địa chỉ IP trên BOOTP server).
1.DHCP sử dụng một dãy địa chỉ IP mà người admin đã cấu hình và tự cấp cho máy client không cấn phải ghép sẵn trước.
2.Đồng thời DHCP hỗ trợ cho việc ánh xạ địa chỉ IP với địa chỉ vật lý khi nào thấy cần (ta gọi tính năng này là Reservation)

Còn về việc thông tin liên lạc giữa máy client và server,tổng thể mà nói, nó lại tương tự với BOOTP nhưng vẫn có sự thay đổi. Cũng cùng giao thức hỏi/đáp bằng cách sử dụng UDP để liên lạc thông tin cấu hình, nhưng lại có thêm các gói thông điệp được tạo ra để hổ trợ những tính năng được tăng cường của DHCP. DHCP có thể dùng BOOTP relay agents cùng một cách tương tự mà máy client và server BOOTP sử dụng. Phần mở rộng thông tin cho nhà sản xuất phần cứng cũng được giữ lại, nhưng được hình thức hoá và đặt tên lại là DHCP Options, và được mở rộng thêm để truyền được nhiều thông tin hơn.
Kết quả của mọi nổ lực này là một giao thức cấu hình TCP/IP được sự chấp nhận rộng rãi, phổ biến nhưng vẫn giữ lại tính tương thích với BOOTP trong khi đó lại mở rộng thêm những tính năng đầy ý nghĩa. DHCP được sử dụng cho mọi thứ từ việc cấp địa chỉ IP cho những mạng hàng ngàn máy tính đến việc cho phép thiết bị định tuyến (router) truy cập Internet tự động cung cấp thông tin cấu hình Internet cho chỉ một máy tính duy nhất có một người dùng.
Thông số kỹ thuật của DHCP nguyên thủy được hiệu chỉnh vào tháng 3 năm 1997 trong RFC 2131, vẫn giữ lại tên Dynamic Host Configuration Protocol.
Trong chuẩn này định nghĩa thêm một loại thông điệp DHCP mới cho phép các máy đang có địa chỉ IP có thể gởi yêu cầu cấp thêm thông tin cấu hình. Đồng thời nó cũng tạo ra một vài thay đổi nhỏ cho giao thức này. Từ lúc đó tới nay, có nhiều RFC khác liên quan tới DHCP được xuất bản, phần lớn chúng hoặc là chỉ định những loại DHCP Option mới (một loại thông tin khác mà DHCP servers có thể gởi cho DHCP client) hoặc là chỉnh lại cách mà DHCP được sử dụng trong các ứng dụng.

0 nhận xét:

Đăng nhận xét