Giao thức Bootstrap

Giao thức Bootstrap hay giao thức BOOTP là một giao thức Internet protocol được sử dụng để gán một địa chỉ IP và một loạt các tham số bổ sung cho một máy tính trong mạng TCP/IP.
Ví dụ, BOOTP được sử dụng để thiết lập địa chỉ mạng của thiết bị đầu cuối và các máy trạm không đĩa cứng, mà hệ điều hành của chúng lấy từ một máy chủ khởi động (boot server thí dụ như DHCP server). Việc truyền tải chương trình hoạt động sau đó thường được thực hiện thông qua TFTP. Ngoài ra, một số thiết bị ngoại vi, chẳng hạn như máy in mạng, có thể sử dụng BOOTP để xác định địa chỉ IP và cấu hình mạng (subnet/gateway).
Trước đây, RARP được sử dụng để xác định địa chỉ IP cho các thiết bị không đĩa cứng. Trái ngược với RARP, chỉ chuyên cung cấp địa chỉ IP, BOOTP có nhiều tham số bổ sung, đặc biệt là mặt nạ mạng con, Gateway và máy chủ khởi động. Tuy nhiên, để cấu hình các máy trạm và máy tính cá nhân, nó vẫn chưa đủ, bởi vì các thiết đặt bổ sung như máy in, máy chủ thời gian và những thứ khác là cần thiết. Giao thức cấu hình động máy chủ (DHCP) là một mở rộng của BOOTP. DHCP cung cấp chức năng cơ bản của BOOTP, nó còn, ví dụ, cho phép giới hạn thời gian của việc gán địa chỉ IP ("lease"). Giao thức BOOTP được định nghĩa trong RFC 951.

Hoạt động một máy trạm không có đĩa cứng

BOOTP cho phép một máy trạm không có đĩa cứng thi hành các công việc sau:
1 - tìm kiếm địa chỉ IP cho chính nó
2 - tìm IP của BOOTP server
3 - nạp một file khởi động từ server vào bộ nhớ
4 - và khởi động
Theo cách này, BOOTP cho phép một workstation khởi động mà không cần đĩa cứng hay đĩa mềm.

Quá trình hỏi đáp BOOTP

Yêu cầu BOOTP (request) bao gồm yêu cầu của thiết bị và phản hồi của máy chủ.

Yêu cầu BOOTP

Khi thiết bị được cho chạy, nó không biết địa chỉ IP của nó hoặc máy chủ BOOTP. Yêu cầu khởi động (boot request) được gửi. Đây là một gói UDP bình thường. Địa chỉ 0.0.0.0 được sử dụng làm người gửi vì không có gì khác được biết. Địa chỉ của người nhận là 255.255.255.255, được hiểu là phát sóng (Broadcast) trong mạng riêng của nó, vì client BOOTP không biết địa chỉ cục bộ của chuỗi mạng.
Yêu cầu khởi động từ máy khách (client) luôn được gửi tới cổng đích 67 (máy chủ BOOTP). Sau đó, máy khách lắng nghe trên cổng 68 (BOOTP client), mà một đáp ứng (boot reply) được gửi đi.
Không phải mỗi kết nối IP đều có hai cổng dành riêng được sử dụng như trong trường hợp này. Hầu hết các giao thức sử dụng một số cổng ngẫu nhiên như là cổng ra (cổng của máy khách). Các phản ứng của máy chủ cũng dự kiến ​​xảy ra trên cổng này. Đối với BOOTP, điều này có thể sẽ không thực hiện được vì phản hồi của máy chủ BOOTP (Bootreply) không nhất thiết phải được gửi đến một địa chỉ đích cụ thể, mà được phát sóng tới tất cả các trạm trong mạng con riêng của nó. Nếu không có số cổng cố định được sử dụng, có thể máy khách khác đang lắng nghe trên cùng một cổng nhưng mong đợi điều gì đó khác.
Với yêu cầu khởi động (boot request), máy khách sẽ gửi một số thông tin về chính nó: Quan trọng nhất là địa chỉ phần cứng của card mạng (địa chỉ MAC). Đây là tính năng nhận dạng duy nhất của trạm. Máy khách cũng tạo ra một con số ngẫu nhiên 4 byte, mà phải xuất hiện lại trong phản hồi khởi động. Hơn nữa, một bộ đếm thời gian được cung cấp, trong đó được tính, máy khách đã chờ đợi bao lâu phản hồi khởi động của nó.