第六章 系统配置:DHCP和自动配置
系统配置:DHCP和自动配置
写在开头:今天和导师见了个面,抛给我一堆材料以及论文,感觉自己学业更加繁重。有些知识现阶段我可能没办法掌握,但是至少在我需要进一步理解它的时候,要知道在哪个地方能够找到。努力协调好项目以及导师的安排,课堂的内容尽量都在课堂直接消化了。找到能够一起学习的伙伴们是多门幸运的事情,好好加油~
Yesterday you said tomorrow.
引言
我们知道每台主机和路由器都是需要一定的配置的信息的,配置信息用于为系统指定本地名称,以及接口制定标识符(比如IP地址),而在TCP/IP网络中。每个接口需要:
- IP地址
- 子网掩码
- 广播地址
系统需要一个路由或转发表,用来确定到达不同目的地的系统通讯。
Internet客户端主机中用于建议基本要素的协议和程序:动态主机配置协议(DHCP)以及IPv4和IPv6的无状态地址自动配置。
状态机:状态机由状态寄存器和组合逻辑电路构成,能够根据控制信号按照预先设定的状态进行状态转移,是协调相关信号动作,完成特定操作的控制中心。
动态主机配置协议
DHCP是一种流行的客户机/服务器协议,它用于为主机(或路由器)指定配置信息。
DHCP的设计是基于一种早期的协议,Internet引导程序协议(BOOTP),只不过它已经过时了…
DHCP由两个主要的部分组成,地址管理和配置数据交付。
地址管理用于IP地址的动态分配,并为客户机提供地址租用。
配置数据交付包过DHCP协议的消息格式和状态机
DHCP服务器可配置提供三种地址分配:
- 自动分配,同动态分配,但是地址不可撤销
- 动态分配,最常用,客户机从服务器配置的地址池中获得一个可撤销的IP地址
- 手动分配,
地址池和租用
在动态分配中,DHCP客户机请求分配一个IP地址,服务器从可用的地址池中选择一个地址作为响应。
分配给客户机的地址只在一段特定时间内有效,这段时间称为租用期
运作:
当发送DHCP请求时,客户机需要向服务器提供信息。这些信息包过客户机的名称、请求的租用期、已使用或最后使用过的地址副本和其他参数。
当服务器接收到这个请求时,它可利用客户机提供的信息(包过MAC地址请求),结合其他从外部获得的信息(例如一天的时间,接受请求的接口),决定在响应中提供的地址和配置信息。
当服务器向客户机提供租用期时,服务器将租用信息保存在持久性的存储器(非易失性内存或磁盘)中。
DHCP消息格式
我们知道 DHCP前身是BOOTP,所以它的消息格式是采用拓展BOOTP的方式
如图所示:

| 名称 | 内容及作用 |
|---|---|
| Op | 标识消息是请求(1),还是应答(2) |
| htype | 基于ARP使用的值,(1)为以太网 |
| hlen | 存放硬件(MAC)地址 |
| 跳步 | 用于保存消息传输过程中的中继次数,初始为0,依次增加 |
| 事务ID xid | 客户机选择的随机数,服务器需要将它复制在应答中,用于匹配应答与请求 |
| 秒数 | 申请地址经过的秒数 |
| 标志 | 广播标志,表示客户机所发请求不能处理单播IP数据报,但能处理广播数据报 |
| 客户机IP地址 | 请求者的IP地址,如果没有就为0 |
| 你的IP地址,yiaddr | 即服务器地址 |
| 下一服务器IP地址 | 顾名思义客户机可能需要另一个DHCP服务器来完成它的请求 |
| 网关IP地址 | 中继地址,由DHCP中继器填写,在转发时返回自己的地址 |
| 客户机硬件地址 | 客户机唯一标识符 |
其他字段例如服务器名,引导文件名并不是每次都需要填写的,但是选项字段区分DHCP和传统BOOTP消息。
因此我们可以称DHCP消息是带有一组特殊选项的BOOTP消息,至于选项的细节,我们在这里暂时不提
DHCP协议操作
当新客户机连接网络时,它首先发现DHCP服务器们以及服务器们能提供的地址。然后它向中意的服务器发送它中意的请求,同时也向其他服务器发送它的决定。如果该服务器还保留该地址,便通过确认将地址分配给客户机。

他们之间的互相通讯可以由上图反应,数据包中各单位值的修改我暂时没有写在这里。
这里存在一个疑问,DHCP服务器如何向一个没有设置IP地址的客户机传达消息呢?
还记得数据报中的标志字段吗?设置标志字段表示自己能够接收广播数据报,所以DHCP服务器是采用广播的方式连上客户机的
下图给出DHCP的状态机

DHCP中继
在更复杂的网络中,可以通过DHCP中继代理来中继DHCP流量,这样会更方便~

如图,在网段A\B之间的中继器会转发DHCP消息。通过选项或者填充空白字段使用额外的消息来标识它。
这里有个要注意的地方,中继一般不会参与到客户机与服务器的所有流量交换。它仅中继客户机首次广播的消息,当客户机获得了服务器的IP地址,那就可以直接与服务器单播通讯了。
中继代理信息选项(RAIO)
定义了很多子选项,例如几个被ISP用于标识一个请求来自哪个用户、链路或网络的选项
例如:中继代理远程ID子选项和IPv6远程ID选项
用于标识发送请求的DHCP客户机的方法。通俗来说就是采用本地解释的命名方式,例如呼叫方ID、用户名、调制解调器ID、点到点链路的远程IP地址等
DHCP和DNS交互
当一台DHCP客户机获得一个IP地址时,它接收的配置信息的重要部分是一台DNS服务器的IP地址。
组合DHCP/DNS服务器或动态DNS用来实现指定DHCP地址与相应的DNS地址的映射更新方法。
组合DHCP/DNS服务器可读取请求中的客户机标识符或域名,在ACK进行响应前,通过映射更新内部DNS数据库,这样在后续的DNS请求中,能够在客户机名称和新分配的IP地址之间转换
以太网上的PPP
对于大多苏局域网和一些广域网连接,DHCP提供了最常见的客户机系统配置的方法。对于广域网连接,常用另一种基于PPP的方法替代它。这种方法设计在以太网中携带PPP,因此称为以太网上的PPP(PPPoE)
PPPoE用于广域网连接设备(例如图中的DSL调制解调器)作为一个交换机或网桥而不是使用路由器的情况下。

在DSL调制解调器与ISP成功建立一条底层链路后,PC就可以开始PPPoE交换
PPPoE消息交换开始于发现阶段及建立PPP会话阶段。每个消息是一个PAD(主动发现)消息。PADI(初始化)请求来自PPPoE服务器的响应,PADO(提供)提供连接。PADR(请求)表示客户机可以从多个可能的服务器中做出选择。PADS(会话确认)从选中的服务器向客户机提供一个确认。经过PAD交换,一次PPP会话开始。
PPP会话可以由任何一方发送PADT(终止)消息来终止,或在底层链路出现故障时关闭。

第六章 系统配置:DHCP和自动配置的更多相关文章
- 【TCP/IP详解 卷一:协议】第六章:DHCP 和自动配置
简介 为了使用 TCP/IP 协议族,每台主机or路由器都需要一定的配置信息: IP地址 子网掩码 广播地址 路由或转发表 DNS 协议配置方法: 手动 通过使用网络服务来获得 使用一些算法来自动确定 ...
- TCP/IP 笔记 - DHCP和自动配置
动态主机配置协议(DHCP),一个局域网的网络协议,使用UDP协议工作,用于局域网中集中管理.分配IP地址. DHCP介绍 DHCP有两个主要部分组成:地址管理和配置数据交付.地址管理用于IP地址的动 ...
- 第二章、DHCP原理与配置
目录 一.了解DHCP服务 1DHCP概述: 2DHCP好处 3DHCP的分配方式 二.DHCP工作过程 DHCP租约过程 三.使用 DHCP动态配置主机地址 1DHCP服务优点 2可分配的地址信息主 ...
- Linux学习笔记(第六章)
第六章-档案权限与目录配置#chgrp:改变档案的所属群组#chown:改变档案的拥有者#chmod:改变档案的权限及属性 chown用法 chmod用法: r:4 w:2 x:1对于文档: 对于目录 ...
- SpringBoot | 4.1 SpringMVC的自动配置
目录 前言 1. SpringMVC框架的设计与流程 1.1 SpringMVC框架的示意图 1.2 SpringMVC的组件流程 2. *自动配置的源码分析 2.1 导入Web场景启动器 2.2 找 ...
- 【RL-TCPnet网络教程】第25章 DHCP动态主机配置协议基础知识
第25章 DHCP动态主机配置协议基础知识 本章节为大家讲解DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),通过前面章节对TCP和UDP ...
- 第六章、Linux 的文件权限与目录配置
第六章.Linux 的文件权限与目录配置 1. 使用者与群组 2. Linux文件权限概念 2.1 Linux文件属性 2.2 如何改变文件属性与权限: chgrp, chown, chmod 2.3 ...
- CentOS6安装各种大数据软件 第六章:HBase分布式集群的配置
相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...
- H3C交换机DHCP Server配置的六个方面
H3C交换机DHCP Server配置的六个方面 在交换机上面配置DHCP内容是司空见惯的了.那么这里我们就讲解一下H3C交换机DHCP Server配置内容.之后的文章中,我们还对针对其他方面的配置 ...
随机推荐
- Login用户登录(Python实现)
username_fault = "isuperSun" #程序存储用户名和密码 password_fault = " counts = 0 while counts&l ...
- 使用免费公开的api接口示例(iOS)
做项目难免需要测试,要测试就需要一些接口,现在网上的很多接口都是需要收费的. 以下是目前找到的免费 JSON API免费接口 云聚数据 网吧数据 其中选取了一个百度百科的接口 百度接口 百度百科接口: ...
- 【杂题总汇】UVa-1627 Team them up!
[UVa-1627] Team them up! 借鉴了一下hahalidaxin的博客……了解了思路,但是莫名Wa了:最后再找了一篇dwtfukgv的博客才做出来
- Navicat-12.0.26的激活
1.卸载掉早期版本,卸载干净,然后安装最新版Navicat(使用群文件中Iobit uninstaller8卸载) 2.安装完成后将破解补丁复制到安装目录下,运行破解补丁. 4.先patch,然后选择 ...
- 用python实现【五猴分桃】问题
转载链接:https://blog.csdn.net/cy309173854/article/details/78296839 据说“五猴分桃”问题最先是由大物理学家狄拉克提出来的,这一貌似简单的问题 ...
- J.U.C 系列之Atomic原子类
一 什么是原子类? 所谓原子类必然是具有原子性的类,原子性操作--原子操作,百度百科中给的定义如下 "原子操作(atomic operation)是不需要synchronized" ...
- fromkeys语法/set集合/深浅拷贝/列表/字典的删除
fromkeys语法: dic = {"apple":"苹果", "banana":"香蕉"} 返回新字典. 和原来的没 ...
- 关于IAR软件的Go to Definition of功能问题的解决方法
关于IAR软件的Go to Definition of功能问题的解决方法 首先,工程文件必须放在没有中文的路径下,如果路径里有中文应把中文该成英文 如:C:\Users\ABC\Desktop\新建文 ...
- ionic3中关于Ionic ui component使用的一些总结
在我的理解中,IONIC中例如 ion-list ion-item ion-input 其实就是相于一段自定义的指令 ,相对于angular1.x中的东西, 所以,我们在使用中,要特别去注意butt ...
- centos使用--排查服务是否可用
端口与服务的关系 一台拥有IP地址的主机可以提供许多服务,比如Web服务.FTP服务.SMTP服务等,这些服务完全通过1个IP地址来实现.那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因 ...