1 RARP与BOOTP
无盘系统,它在不知道自身IP地址的情况下,在进行系统引导时能够通过RARP来获取它的IP地址。然而使用RARP有两个问题: (1)IP地址是返回的唯一结果;(2)既然RARP使用链路层广播,RARP请求就不会被路由器转发(迫使每个实际网络设置一个RARP服务器)。一种用于无盘系统进行系统引导的替代方法,又称为引导程序协议,或BOOTP。
2 BOOTP分组格式


①“操作码”字段为 1表示请求,为 2表示应答。硬件类型字段为 1表示10 Mb/s 的以太网,这和A R P请求或应答中同名字段表示的含义相同。类似地,对于以太网,硬件地址长度字段为6字节。
②“跳数”字段由客户设置为 0,但也能被一个代理服务器设置。
③“事务标识”字段是一个由客户设置并由服务器返回的 32 bit 整数。客户用它对请求和应答进行匹配。对每个请求,客户应该将该字段设置为一个随机数。
④客户开始进行引导时,将“秒数”字段设置为一个时间值。服务器能够看到这个时间值,备用服务器在等待时间超过这个时间值后才会响应客户的请求,这意味着主服务器没有启动。
⑤如果该客户已经知道自身的 I P 地址,它将写入“客户 I P 地址”字段。否则,它将该字段设置为 0。对于后面这种情况,服务器用该客户的 I P地址写入“你的 I P 地址”字段。“服务器I P 地址”字段则由服务器填写。如果使用了某个代理服务器,则该代理服务器就填写“网关 I P 地址”字段。
⑥客户必须设置它的“客户硬件地址”字段。尽管这个值与以太网数据帧头中的值相同,
UDP数据报中也设置这个字段,但任何接收这个数据报的用户进程能很容易地获得它
⑦“服务器主机名”字段是一个空值终止串,由服务器填写。服务器还将在“引导文件名字段”填入包括用于系统引导的文件名及其所在位置的路径全名。
⑧“特定厂商区域”字段用于对 B O O T P进行不同的扩展。
3 BOOTP服务器设计
首先,BOOTP服务器将从它的熟知端口(67)读取UDP数据报。这没有特别的地方。它不同于RARP服务器,必须读取类型字段为“RARP请求”的以太网帧。BOOTP协议通过将客户的硬件地址放入BOOTP分组中,使得服务器很容易获取客户的硬件地址。
TFTP服务器如何能将一个响应直接送回 BOOTP客户?这个响应是一个UDP数据报,而服务器知道该客户的IP地址(可能通过读取服务器上的配置文件)。但如果这个客户向那个IP地址发送一个UDP数据报(正常情况下会处理UDP的输出),BOOTP服务器的主机就可能向那个IP地址发送一个ARP请求。但这个客户不能响应这个ARP请求,因为它还不知道它自己的IP地址!
有两种解决办法:第一种,通常被 Unix服务器采用,是服务器发一个 i o c t l ( 2 )请求给内核,为该客户在 A R P高速缓存中设置一个条目(这就是命令 a r p - s所做的工作)。服务器能一直这么做直到它知道客户的硬件地址和 I P 地址。这意味着当服务器发送 U D P数据报(即BOOTP应答)时,服务器的ARP将在ARP高速缓存中找到该客户的 I P地址。另一种可选的解决办法是服务器广播这个BOOTP应答而不直接将应答发回该客户。既然通常期望网络广播越少越好,因此这种解决方案应该只在服务器无法在它的ARP高速缓存设置一个条目的情况下使用。通常只有拥有超级用户权限才能在ARP高速缓存设置一个条目,如果没有这种权限就只能广播BOOTP应答。

TCP/IP协议卷学习---基础部分(十六 BOOTP)相关推荐

  1. TCP/IP协议卷学习---基础部分(十五 TFTP)

    1 概念 TFTP ( Trivial File Transfer Protocol) 即简单文件传送协议,最初打算用于引导无盘系统 (通常是工作站或 X终端).和使用TCP的文件传送协议(TFP)不 ...

  2. 技术往事:改变世界的TCP/IP协议(珍贵多图、手机慎点)

    1.前言 作为应用层开发人员,接触最多的网络协议通常都是传输层的TCP(与之同处一层的另一个重要协议是UDP协议),但对于IP协议,对于应用程序员来说更多的印象还是IP地址这个东西,再往深一点也就很难 ...

  3. TCP/IP协议和协议分层详解

    通常使用的网络是在TCP/IP协议族的基础上运作的,而HTTP属于它内部的一个子集. TCP/IP协议族 计算机与网络设备要相互通信,双方就必须基于相同的方法.比如,如何探测到通信目标.由哪一边先发起 ...

  4. TCP/IP协议:最大报文段长度(MSS)是如何确定的(3)

    一.实际使用中的问题 用户在使用路由器访问Internet时,经常会反馈不能访问网页(或部分网页)以及使用Outlook收发邮件(这些应用是基于TCP或UDP的),但进行Ping包时没有问题,这时候检 ...

  5. 计算机网络参考模型(OSI七层与TCP/IP协议)

    目录 1 为什么要分层 1.1 层次划分的必要性 1.2 层次划分的方法 1.2 层次划分的优点 2 七层和四层的定义 2.1 七层的介绍 2.1.1 OSI七层参考模型 2.1.2 OSI七层工作原 ...

  6. Linux内核网络栈1.2.13-有关tcp/ip协议的基础入门

    参考资料 <<linux内核网络栈源代码情景分析>> Linux内核网络栈的基础内容 主要分析tcp/ip相关的基本构成,概述了socket的系统调用进入内核的一个流程,并了解 ...

  7. 【TCP/IP 协议】 TCP/IP 基础

    总结 : 通过学习 TCP/IP 基础, 并总结相关笔记 和 绘制思维导图 到博客上, 对 TCP/IP 框架有了大致了解, 之后开始详细学习数据链路层的各种细节协议, 并作出笔记; 博客地址 : h ...

  8. TCP/IP协议学习笔记

    TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中 ...

  9. 网络编程基础之C/S架构和TCP/IP协议

    一.何谓C/S架构 C指的是client(客户端软件),S指的是Server(服务端软件),既然我们的的标题是网络编程基础, 那我们就一起来学习怎样写一个C/S架构的软件,实现服务端与客户端软件基于网 ...

  10. 基础才是王道——TCP/IP详解学习笔记 这位仁兄写得太好了

    TCP/IP详解学习笔记 这位仁兄写得太好了 TCP/IP详解学习笔记   这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/204448.as ...

最新文章

  1. 快速修剪技巧_三角梅花后修剪有讲究,轻剪还是重剪?品种和养殖环境来决定...
  2. WPF 获取屏幕分辨率(获取最大宽高)等
  3. 给新手程序猿的16个必备小妙招
  4. 嵌入式软件面试(基础题)总结,不断更新
  5. Android官方开发文档Training系列课程中文版:构建第一款安卓应用之环境配置
  6. css盒子模型_说说css盒子模型
  7. 冲击中国超融合第一,浪潮的底气从何而来?
  8. Vue文件在VsCode工具中红色波浪线的问题解决方法
  9. fastclick源码简析
  10. 第4周第4课:gzip、bzip2、xz
  11. 330.按要求补齐数组
  12. PLSQL提交带有模板的报表的方法
  13. 指标公式c语言源码下载,通达信99.75%成功率指标公式 源码
  14. U盘Windows PE
  15. PMBOK项目管理九大知识领域和五大流程 --美国IT项目管理硕士笔记(二)
  16. Verilog 实现千兆网UDP协议 基于88E1111--板级验证--增加ARP
  17. 用conda建一个python2虚拟环境
  18. 【UEFI实战】Intel开源固件项目
  19. C语言编程练习 念数字
  20. 高新技术企业申请容易吗?如何提高申报通过的机率?

热门文章

  1. w10打游戏老是弹出计算机,有效解决win10玩游戏弹出输入法的问题
  2. 2022年了,Windows Vista还能用吗?
  3. 计算机网络英语app,在斑马英语app的详细软件功能介绍
  4. C++模板编程(18)---模板实例化instantiation
  5. 二维卷积与一维卷积区别
  6. 制作扫码连wifi的二维码
  7. 国产数据库-达梦数据库
  8. 使计算机拒绝远程桌面服务,拒绝通过远程桌面服务登录
  9. 《系统集成项目管理工程师》必背知识点
  10. 最小二乘法曲线拟合(代码环境:matlab)