yuki天马行空
驱动牛犊
驱动牛犊
  • 注册日期2010-03-08
  • 最后登录2010-05-21
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望31点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1528回复:0

PXE启动概述

楼主#
更多 发布于:2010-03-09 14:20
PXE远程启动(1)---概述
本章仅是概要介绍pxe远程启动过程.

Pxe远程启动是通过本地网卡通迅直接启动远程服务器上的镜像系统,

不依赖于本地硬盘,现阶段Pxe的主要应用有:无盘系统,网络克隆等。


要实现pxe远程启动,前提条件是:

1.    带有pxe引导的客户机。

2.    带有bootp(DHCP) 和tftp(mtftp)服务的服务器

简要流程:

当从客户机选从网卡启动,并且网卡支持pxe协议时,bios会调用Pxe boot例程,

Pxe boot执行简要流程如下:

1, 通过UDP协议发送受限广播(255.255.255.255),目标端口67, 是DHCP命令中的DHCP

discover,带PXEClient标志,并在UDP 68端口监听。

2    DHCP服务器在67端口收到请求后,通过UDP协议发送受限广播(255.255.255.255),

目标端口68,是DHCP命令中的DHCP offer,附带 客户端ip,网关,tftp服务器ip,

子网掩码,可引导的文件名等.

3   客户机在68端口收到服务器回复的信息,客户机配置自身ip,从此时起,客户机

可以使用单播通讯了。

4    客户端通过tftp协议发送获取引导文件的命令,并将获取的引导文件存放在地址

0:7c00 (第3步中获取的引导文件名).


5.跳转到0:7c00开始执行引导文件中的代码,从此时起cpu控制权己交给引导文件.
        
     BOOTP协议简要介绍:

引导协议(BOOTP)是一种基于 UDP/IP 的协议。这种协议允许正在启动的主机动态配置而无需用户监督。BOOTP 主要用于客户机从服务器获得自己的 IP 地址,服务器的 IP 地址以及启动映象文件名。其它一些配置信息,如本地子网掩码、本地时间偏移量、默认路由器地址和各种 Internet 服务器地址,都能与使用 BOOTP 协议的客户机交流。
BOOTP 使用两个不同的知名通讯端口 UDP67/68。UDP67 用于服务器,UDP68 用于 BOOTP 客户机。客户机启动时,本身还没有 IP 地址,这时 BOOTP 客户机就以广播的形式发出一个名为 BOOTREQUEST 的 IP 地址查询请求包,这个请求包中包含了客户机物理地址,还可能有一个 IP 地址,如果已有的话。客户使用地址 255.255.255.255 发送广播,这种特殊地址称为有限广播地址。然后客户机等待服务器的响应,如果在特定时间段内没有收到响应,客户机就重新发出请求。
通过引导答复(bootreply)包,服务器响应客户机请求。请求可以包含“通用”引导文件名,例如,unix 或 ethertip。但服务器发送引导应答包时,它使用对应的引导文件的确切的路径名称来取代这个字段。为了确定路径名,服务器会查询本身的的数据库。这个 数据库关联了客户机地址、请求文件名和为用户定制的特殊引导文件。如果请求(bootrequest)文件名是空,服务器就返回一个文件名字段用于表示客 户机需加载的默认文件。
在客户机 IP 地址不知道的情况下,服务器必须要有一个硬件地址和 IP 地址相对应的数据库。客户机 IP 地址也被放到“bootreply”的某一字段中。
BOOTP 和 RARP 类似,但 RARP 只运行于 LAN 网络的数据链路层;而基于 UDP/IP 的配置协议 BOOTP 则提供了更多配置方面的信息,它允许整个 IP 网络动态配置。总之,BOOTP 及其扩展成为动态主机配置协议(DHCP)的基础。
协议结构
8    16    24    32
Op    Htype    Hlen    Hops
Xid
Secs    Flags
Ciaddr
Yiaddr
Siaddr
Giaddr
Chaddr (16 bytes)
sname (64 bytes)
File (128 bytes)
Option (variable)
1.    Op – 消息操作代码,可以是引导请求( 客户机填写BOOTREQUEST )也可以是引导答复( 服务器填写BOOTREPLY )
2.    Htype – 硬件地址类型
3.    Hlen – 硬件地址长度
4.    Xid – 事务 ID.
5.    Secs – 客户机开始地址请求或续约后消耗的时间(秒数)
6.    Flags – 标记 (客户机填写)
7.    Ciaddr – 客户机 IP 地址(客户机填写)
8.    Yiaddr – “你的”(客户机) IP 地址 (服务器填写)
9.    Siaddr – 在 bootstrap 中下一台服务器可用服务器的 IP 地址     (服务器填写)
10.    Giaddr – 通过代理启动时代理的 IP 地址 (服务器填写)
11.    Chaddr – 客户机硬件地址 (客户机填写)
12.    Sname – 其他可用服务器主机名称,空终止符 (服务器填写)
13.    File – 引导文件名、空终止符; DHCPDISCOVER 包中的属名或者空值, DHCPOFFER 包中的完全合格目录路径名 (服务器填写)
14.    Options – 可选参数字段
DHCPDISCOVER  请求(OP值为1)

BOOTREQUEST 的 IP 地址查询请求包,这个请求包中包含了客户机物理地址,还可能有一个 IP 地址,如果已有的话。客户使用地址 255.255.255.255 发送广播,这种特殊地址称为有限广播地址。然后客户机等待服务器的响应,如果在特定时间段内没有收到响应,客户机就重新发出请求。

DHCPOFFER   应答 (OP值为2)
通过引导答复(bootreply)包,服务器响应客户机请求。请求可以包含“通用”引导文件名,例如,unix 或 ethertip。但服务器发送引导应答包时,它使用对应的引导文件的确切的路径名称来取代这个字段。为了确定路径名,服务器会查询本身的的数据库。这个数据库关联了客户机地址、请求文件名和为用户定制的特殊引导文件。如果请求(bootrequest)文件名是空,服务器就返回一个文件名字段用于表示客户机需加载的默认文件。在客户机 IP 地址不知道的情况下,服务器必须要有一个硬件地址和 IP 地址相对应的数据库。客户机 IP 地址也被放到“bootreply”的某一字段中.


Sname字段是一个空值终止串,由服务器填写。服务器还将在“File”填入包括用于系统
引导的文件名及其所在位置的路径全名。

Options字段用于对B O O T P进行不同的扩展。

当一个客户使用B O O T P (操作码为1)进行系统引导时,引导请求通常是采用链路
层广 播,I P首部中的目的 I P地址为2 5 5 . 2 5 5 . 2 5 5 . 2 5 5.源I P地址通常
是 0 . 0 . 0 . 0,因为此时客户还不知道它本身的I P地址。在系统进行自引导时,0 . 0 .
0 . 0 是一个有效的I P地址。

端口号
B O O T P有两个熟知端口:BOOTP  服务器为6 7,BOOTP  客户为6 8。这意味着BOOTP  客
户不会选择未用的临时端口,而只用端口 6 8。选择两个端口而不是仅选择一个端口为B O O T P 服务器用的原因是:服务器的应答可以进行广播(但通常是不用广播的)。
如果服务器的应答是通过广播传送的,同时客户又选择未用的临时端口,那么这些广播也能被其他的主机中碰巧使用相同临时端口的应用进程接收到。因此,采用随机端口(即临
时端口)对广播来说是一个不好的选择。如果客户也使用服务器的知名端口( 6 7 )作为它的端口,那么网络内的所有服务器会被 唤醒来查看每个广播应答(如果所有的服务器都被唤醒,它们将检查操作码,如果是一个应答而不是请求,就不作处理)。因此可以让所有的客户使用与服务器知名端口不同的同一知名端口。 如果多个客户同时进行系统引导,并且服务器广播所有应答,这样每个客户都会收到其他客户的应答。客户可以通过B O O T P首部中的事务标识字段来确认应答是否与请求匹配,或者可以通过检查返回的客户硬件地址加以区分。
游客

返回顶部