第16章 BOOTP:引导程序协议

16.2 BOOTP 的分组格式

BOOTP 请求和应答均被封装在U D P数据报中,如图1 6 - 1所示。

图1 6 - 2显示了长度为3 0 0字节的B O O T P请求和应答的格式。

“操作码”字段为1表示请求,为2表示应答。硬件类型字段为 1表示10 Mb/s的以太网,这和A R P请求或应答(图4 - 3)中同名字段表示的含义相同。类似地,对于以太网,硬件地址长度字段为6字节。

“跳数”字段由客户设置为 0,但也能被一个代理服务器设置(参见 1 6 . 5节)。“事务标识”字段是一个由客户设置并由服务器返回的 32 bit整数。客户用它对请求和应答进行匹配。对每个请求,客户应该将该字段设置为一个随机数。

客户开始进行引导时,将“秒数”字段设置为一个时间值。服务器能够看到这个时间值,备用服务器在等待时间超过这个时间值后才会响应客户的请求,这意味着主服务器没有启动。

如果该客户已经知道自身的 I P地址,它将写入“客户 I P地址”字段。否则,它将该字段设置为0。对于后面这种情况,服务器用该客户的 I P地址写入“你的 I P地址”字段。“服务器I P地址”字段则由服务器填写。如果使用了某个代理服务器(见 1 6 . 5节),则该代理服务器就填写“网关I P地址”字段。

客户必须设置它的“客户硬件地址”字段。尽管这个值与以太网数据帧头中的值相同,U D P数据报中也设置这个字段,但任何接收这个数据报的用户进程能很容易地获得它(例如一个BOOTP 服务器)。一个进程通过查看 U D P数据报来确定以太网帧首部中的该字段通常是很困难的(或者说是不可能的)。

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

“特定厂商区域”字段用于对 B O O T P进行不同的扩展。1 6 . 6节将介绍这些扩展中的一些。当一个客户使用 B O O T P(操作码为 1)进行系统引导时,引导请求通常是采用链路层广播, I P首部中的目的 I P地址为 2 5 5 . 2 5 5 . 2 5 5 . 2 5 5(受限的广播, 1 2 . 2节)。源 I P地址通常是0 . 0 . 0 . 0,因为此时客户还不知道它本身的 I P地址。回顾图3 - 9,在系统进行自引导时, 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首部中的事务标识字段来确认应答是否与请求匹配,或者可以通过检查返回的客户硬件地址加以区分。

速读原著-TCP/IP(BOOTP 的分组格式)相关推荐

  1. 速读原著-TCP/IP(BOOTP示例)

    第16章 BOOTP:引导程序协议 16.3 一个例子 让我们看一个用 B O O T P引导一个X终端的例子.图 1 6 - 3显示了t c p d u m p的输出结果(例中客户名为p r o t ...

  2. 速读原著-TCP/IP(tcpdump的输出)

    A.4 tcpdump的输出 t c p d u m p的输出是"原始的".在本书中包含它的输出时,我们对它进行了修改以便阅读.首先,它总是输出它正在监听的网络接口的名字.我们把这 ...

  3. 速读原著-TCP/IP(UDP首部)

    第11章 UDP:用户数据报协议 11.2 UDP首部 U D P首部的各字段如图11 - 2所示. 端口号表示发送进程和接收进程.在图 1 - 8中,我们画出了 T C P和U D P用目的端口号来 ...

  4. TCP/IP 主要报文头格式

    TCP/IP协议是一个比较复杂的协议集,有很多专业书籍介绍.在此,我仅介绍其与编程密切相关的部分:以太网上TCP/IP协议的分层结构及其报文格式.我们知道TCP/IP协议采用分层结构,其分层模型及协议 ...

  5. 一文读懂 TCP/IP 网络模型

    本文是网络转载原文链接: https://www.toutiao.com/i6819659519954518541/? 简介 互联网是怎么构成的,又是怎么运作的?什么面试官老喜欢问 TCP/IP 网络 ...

  6. tcp硬件校验和rxtx开启是啥意思_一文读懂 TCP/IP 网络模型

    前言 互联网是怎么构成的,又是怎么运作的?什么面试官老喜欢问 TCP/IP 网络?为什么远隔万里的计算机可以互相通信?计算机网络作为 IT 行业的基石,是工程师永远绕不开的话题. 网络的分层体系结构 ...

  7. 读懂TCP IP四层模型与OSI七层模型

    目录 一.OSI七层模型 二.TCP/IP四层模型 三.OSI模型的七层解读 3.1 OSI七层模型小结 3.2 TCP/IP模型与OSI模型的对应关系 四.常见的网络相关协议 五.TCP和UDP协议 ...

  8. 一文读懂TCP/IP四层模型

    4.应用层:和程序相关的一层 3.传输层:负责数据从发送端到接收端 3.1 端口号分类 知名端口号:0-1023 ftp:21 SSH:22 Telnet:23 DNS:53 http:80 HTTP ...

  9. tcp/ip 中的分组和分片

    osi 大家应该都知道osi七层模型吧,物理层 链路层 网络层 传输层 会话层 表示层 应用层 ip 属于网络层,tcp 属于传输层,你可以把每一层想像成粽子的粽叶,包裹了七层的粽子 最外面的就是物理 ...

最新文章

  1. Python - selenium_WebDriver 鼠标键盘事件
  2. Hadoop通过路径和和链接访问HDFS
  3. drawable(hdpi,ldpi,mdpi) 的说明
  4. Android 监听锁屏、解锁、开屏 操作
  5. Maven工程的多模块
  6. 大连富海计算机专修学校怎么样,大连富海计算机专修学校贴吧吧规(2018年版)...
  7. 算法题目——被围绕的区域(dfs,bfs)
  8. 搭建MVC及WebAPI项目框架时碰到的问题集合
  9. 如何进行windows数据恢复呢
  10. 简单的木马编写之服务端篇
  11. EMNLP-21-Exploring Task Difficulty for Few-Shot Relation Extraction
  12. html怎么把桌面的图片放大缩小,css怎么让图片随屏幕变化大小
  13. 个人项目---音乐视频播放器
  14. QQ浏览器如何启用无痕模式
  15. Codeforces Round #376 (Div. 2) B. Coupons and Discounts
  16. 驱动专题:第五章MTD及Flash驱动 4.Norflash驱动
  17. Telegraf介绍和使用
  18. 网络 | NAT、SNAT、DNAT
  19. 羊了个羊微信小游戏开发技术解析
  20. 插入u盘需重启计算机,电脑一插u盘就重启的原因及其解决方案

热门文章

  1. sql delete
  2. 我的Go+语言初体验——iPad上搭建Go+开发环境(ish版)
  3. 博客精选:卓越博主分享知识的宝库
  4. mongodb Capped Collection
  5. 地图轨迹图怎么做?可以自己绘制路线的地图
  6. 数据库可以存储哪些类型的数据
  7. Python3 Request+Redis 爬取BILIBILI番剧列表
  8. 核马公关:CEO形象管理——最好的形象就是最好的自己
  9. huggingface实操_2018 年度 GtiHub 开源项目 TOP 25:数据科学 机器学习
  10. android灰色滤镜布局