前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >速读原著-TCP/IP(BOOTP服务器的设计)

速读原著-TCP/IP(BOOTP服务器的设计)

作者头像
cwl_java
发布2020-03-11 14:45:07
3340
发布2020-03-11 14:45:07
举报
文章被收录于专栏:cwl_Javacwl_Java

第16章 BOOTP:引导程序协议

16.4 BOOTP服务器的设计

B O O T P客户通常固化在无盘系统只读存储器中,因此了解 BOOTP 服务器的实现将更有意义。

首先,BOOTP 服务器将从它的熟知端口( 6 7)读取U D P数据报。这没有特别的地方。它不同于RARP 服务器 (5 . 4节),它必须读取类型字段为“ R A R P请求”的以太网帧。 B O O T P协议通过将客户的硬件地址放入 B O O T P分组中,使得服务器很容易获取客户的硬件地址 (图1 6 - 2 )。

这里出现了一个有趣的问题: TFTP 服务器如何能将一个响应直接送回 BOOTP 客户?这个响应是一个 U D P数据报,而服务器知道该客户的 I P地址(可能通过读取服务器上的配置文件)。但如果这个客户向那个 I P地址发送一个 U D P数据报(正常情况下会处理 U D P的输出),BOOTP 服务器的主机就可能向那个 I P地址发送一个A R P请求。但这个客户不能响应这个 A R P请求,因为它还不知道它自己的 I P地址!(这就是在R F C 9 5 1中被称作“鸡和蛋”的问题。)有两种解决办法:第一种,通常被 Unix 服务器采用,是服务器发一个 i o c t l ( 2 )请求给内核,为该客户在A R P高速缓存中设置一个条目(这就是命令 a r p - s所做的工作,见 4 . 8节)。服务器能一直这么做直到它知道客户的硬件地址和 I P地址。这意味着当服务器发送 U D P数据报 (即B O O T P应答)时,服务器的A R P将在ARP 高速缓存中找到该客户的I P地址。

另一种可选的解决办法是服务器广播这个 B O O T P应答而不直接将应答发回该客户。既然通常期望网络广播越少越好,因此这种解决方案应该只在服务器无法在它的 ARP 高速缓存设置一个条目的情况下使用。通常只有拥有超级用户权限才能在 A R P高速缓存设置一个条目,如果没有这种权限就只能广播 B O O T P应答。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-03-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第16章 BOOTP:引导程序协议
    • 16.4 BOOTP服务器的设计
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档