美文网首页
TCP/IP详解 016 BOOTP:引导程序协议

TCP/IP详解 016 BOOTP:引导程序协议

作者: gg大宇 | 来源:发表于2019-02-25 22:05 被阅读11次

    之前我们如果是一个无盘系统,它在不知道自身IP地址的情况下,我们可以通过RARP来获取它的IP地址。
    使用RARP有两个问题:
    1、IP地址是返回的唯一结果
    2、既然RARP使用链路层广播,RARP请求就不会被路由器转发(迫使每个实际网络设置一个RARP服务器)

    引导程序协议(BOOTP),用于无盘系统进行系统引导的替代方法

    BOOTP使用UDP,且通常需与TFTP协同工作。

    RFC 951是BOOTP的正式规范,RFC 1542对它进行了说明。

    BOOTP的分组格式

    image.png

    BOOTP的请求和应答格式

    image.png

    操作码字段为1表示请求,2表示应答。
    硬件类型字段为1表示10Mb/s的以太网,硬件地址长度字段为6字节。
    跳数字段由客户设置为0,但也能被一个代理服务器设置
    事务标识字段是一个由客户设置并由服务器返回的32bit整数。客户用它对请求和应答进行匹配。对每个请求,客户应该将该字段设置为一个随机数。

    image.png

    客户必须设置它的“客户硬件地址”字段,尽管这个值与以太网数据帧头中的值相同,UDP数据报中也设置这个字段,但任何接收这个数据报的用户进程能很容易地获得它(例如一个BOOTP服务器),一个进程通过查看UDP数据报来确定以太网帧首部中的该字段通常是很困难的。(或者说不可能的)
    服务器主机名字段是一个空值终止串,由服务器填写。服务器还将在“引导文件名字段”填入包括用于系统引导的文件名及其所在位置的路径全名。
    特定厂商区域 字段用于对BOOTP进行不同的扩展。

    端口号
    BOOTP有两个熟知端口:BOOTP服务器为67,BOOTP客户为68.
    这意味着BOOTP客户不会选择未用的临时端口,而只用端口68
    选择两个端口而不是仅选择一个端口为BOOTP服务器用的原因是:服务器的应答可以进行广播(但通常是不用广播的)

    BOOTP客户通常固化在无盘系统只读存储器中,因此了解BOOTP服务器的实现将更有意义。
    首先,BOOTP服务器将从它的熟知端口(67)读取UDP数据报,它不同于RARP服务器,它必须读取类型字段为“RARP请求”的以太网帧,BOOTP协议通过将客户的硬件地址放入BOOTP分组中,使得服务器很容易获取客户的硬件地址

    相关文章

      网友评论

          本文标题:TCP/IP详解 016 BOOTP:引导程序协议

          本文链接:https://www.haomeiwen.com/subject/ykgwyqtx.html