【TCP/IP详解 卷一:协议】第六章:DHCP 和自动配置
简介
为了使用 TCP/IP 协议族,每台主机or路由器都需要一定的配置信息:
- IP地址
- 子网掩码
- 广播地址
- 路由或转发表
- DNS
协议配置方法:
- 手动
- 通过使用网络服务来获得
- 使用一些算法来自动确定
服务器、路由器通常采取手工配置。而客户端主机也要手动配置的话就太麻烦了!
定义
动态主机配置协议[RFC2131] Dynamic Host Configuration Protocol
- Internet 客户端主机(有时也有路由器)中用于建立基本要素、指定配置信息的协议与程序。
- 流行的 client-server协议,应用层 协议
- 前身为 Internet 引导程序协议(Bootstrap Protocol,BOOTP)
- 分配方式:自动、动态、手动。
- 地址池和租用的概念
消息格式

| 字段 | 含义 |
|---|---|
| OP | 若是 client 送给 server 的封包,设为 1 ,反向为 2。 |
| HTYPE | 硬件类别,Ethernet 为 1。 |
| HLEN | 硬件地址长度, Ethernet 为 6。 |
| HOPS | 若封包需经过 router 传送,每站加 1 ,若在同一网内,为 0。 |
| TRANSACTION ID | DHCP REQUEST 时产生的数值,以作 DHCPREPLY 时的依据。 |
| SECONDS | Client 端启动时间(秒)。(时间戳) |
| FLAGS | 从 0 到 15 共 16 bits ,最左一 bit 为 1 时表示 server 将以广播方式传送封包给 client ,其余尚未使用。 |
| ciaddr | 要是 client 端想继续使用之前取得之 IP 地址,则列于这里。 |
| yiaddr | 从 server 送回 client 之 DHCP OFFER 与 DHCPACK封包中,此栏填写分配给 client 的 IP 地址。 |
| siaddr | 若 client 需要透过网络开机,从 server 送出之 DHCP OFFER、DHCPACK、DHCPNACK封包中,此栏填写开机程序代码所在 server 之地址。 |
| giaddr | 若需跨网域进行 DHCP 发放,此栏为 relay agent 的地址,否则为 0。 |
| chaddr | Client 之硬件地址。 |
| sname | Server 之名称字符串,以 0x00 结尾。 |
| file | 若 client 需要透过网络开机,此栏将指出开机程序名称,稍后以 TFTP 传送。 |
| options | 允许厂商定议选项(Vendor-Specific Area),以提供更多的设定信息(如:Netmask、Gateway、DNS、等等)。 |
最后一项 options 长度可变,同时可携带多个选项,每一选项之第一个 byte 为信息代码,其后一个 byte 为该项数据长度,最后为项目内容。
项值类别:
1 DHCP DISCOVER
2 DHCP OFFER
3 DHCP REQUEST
4 DHCP DECLINE
5 DHCP ACK
6 DHCP NACK
7 DHCP RELEASE
DHCP 的选项非常多,这里不再叙述了。
协议操作和状态机

四步:
- Discover
- 由于 DHCP Server 对于 client 来说是未知的,因此发现的操作的报文是广播的。
- Offer
- 所有支持 TCP/IP 的主机都会接受到此报文,然而只有 DHCP Server 会回应。Offer也需要是广播,因为 client 此时可能还没有 IP 地址。
- Request
- Request也需要广播,通知其他 DHCP Server 自己做出的选择。
- ACK
- 仍需要广播,其他 DHCP Server 将收回之前提供的 IP 地址。
状态机:状态机由状态寄存器和组合逻辑电路构成,能够根据控制信号按照预先设定的状态进行状态转移,是协调相关信号动作,完成特定操作的控制中心。

DHCP relay

用DHCP Relay代理可以去掉在每个物理的网段都要有DHCP服务器的必要。它可以传递消息到不在同一个物理子网的DHCP服务器,也可以将服务器的消息传回给不在同一个物理子网的DHCP客户机。
- 当dhcp client 启动并进行dhcp 初始化时,它会在本地网络广播配置请求报文。
- 如果本地网络存在 dhcp server,则可以直接进行 dhcp 配置,不需要 dhcp relay。
- 如果本地网络没有 dhcp server,则与本地网络相连的具有 dhcprelay 功能的网络设备收到该广播报文后,将进行适当处理并转发给指定的其它网络上的 dhcp server。
- dhcp server 根据 dhcp client 提供的信息进行相应的配置,并通过 dhcp relay 将配置信息发送给 dhcp client,完成对dhcp client 的动态配置。
事实上,从开始到最终完成配置,需要多个这样的交互过程。
- dhcp relay 设备修改 dhcp 消息中的相应字段,把 dhcp 的广播包改成单播包,并负责在服务器与客户机之间转换。
- netcore路由器(2x05)可以作为dhcp relay 代理。
在 DHCP 客户端看来,DHCP 中继代理就像 DHCP 服务器;在 DHCP 服务器看来,DHCP 中继代理就像 DHCP 客户端。
DHCP 与 DNS 交互
DNS 是一台机器使用互联网服务的一个很重要的部分,如果没有 DNS 服务器或者其他方式将域名映射为 IP 地址,大部分用户几乎难以访问互联网系统。由于 DNS 映射通常采取烦琐的手工配置,因此,将指定 DHCP 地址与相应地址的 DNS 映射更新方法结合起来会更加方便。这可以通过组合 DHCP/DNS 服务器或者动态 DNS 来解决。
DHCP 安全问题:认证、与 DHCP 有关的攻击
不幸的是,DHCP 并没有提供安全保障。为了缓解这些问题,[RFC3118]提出了DHCP认证(DHCP Authentication)
- DHCP 认证
- Authentication Information 保存一个类似于密码的字符串,用于 client 和 server 的匹配。
- 很明显这种流量可能被攻击者截获,很不安全,只能抵御偶然的DHCP问题
- DHCP 延期认证
- 如此,则discover 、offer、ACK 消息中包含认证选项
- 用 MAC 确认身份。
- Client 和 Server 有一个共享的密钥,用于确保两者之间互换的 DHCP 消息没有被修改(Integrity)
- DHCP 认证没有被广泛使用的原因:
- 所有 DHCP Server 和每个认证的 Client 都要分发共享密钥
- 认证的定义出现在 DHCP 已经广泛使用之后。
DHCP 很容易受到拒绝服务式攻击,大多数攻击可以通过为 DHCP 增加安全机制来缓解,但是目前仍然很少被使用。
links
【TCP/IP详解 卷一:协议】第六章:DHCP 和自动配置的更多相关文章
- TCP/IP详解 卷一(第六章 ICMP:Internet控制报文协议)
ICMP是(Internet Control Message Protocol)Internet控制报文协议. 用于在IP主机.路由器之间传递控制消息.控制消息是指网络通不通.主机是否可达.路由是否可 ...
- TCP/IP详解 卷一(第三章 IP:网际协议)
IP是TCP/IP协议族中最为核心的协议.所有的TCP.UDP.ICMP及IGMP数据都以IP数据报格式传输. IP提供不可靠.无连接的数据报传送服务. 1.不可靠:就是它不能保证IP数据报能成功地到 ...
- TCP/IP详解 卷一(第十三章 IGMP:Internet组管理协议)
本章将介绍用于支持主机和路由器进行多播的Internet组管理协议(IGMP) 它让一个物理网络上的所有系统知道主机当前所在的多播组.多播路由器需要这些信息以便知道多播数据报应该向那些接口转发. 跟I ...
- TCP/IP详解 卷一(第十一章 UDP:用户数据报协议)
UDP是一个简单的面向数据报的运输层协议. UDP不提供可靠性:它把应用程序传给IP层的数据发送出去,但是并不保证它们能到达目的地. UDP首部的个字段如下图所示
- TCP/IP详解 卷一(第十七章 TCP:传输控制协议)
与UDP协议相比,TCP提供一种面向连接的.可靠的字节流服务. TCP首部 跟UDP一样,TCP数据被封装在一个IP数据报中,下面显示TCP的首部数据格式 每个TCP段都包含源端和目的端的端口号,用于 ...
- 『TCP/IP详解——卷一:协议』读书笔记——10
2013-08-22 22:57:17 3.8 ifconfig命令 这个命令在Linux系统下可以通过下面的指令阅读说明文档: ifconfig 由于书中作者用的系统比较早的某Unix系统,所以我的 ...
- 『TCP/IP详解——卷一:协议』读书笔记——01
从今日起开始认真研读TCP/IP详解这本经典制作,一是巩固我薄弱的计算机网络知识,二来提高我的假期的时间利用率.将心得与思考记录下来,防止白看-哦耶 2013-08-14 18:47:06 第一章 概 ...
- 【TCP/IP详解 卷一:协议】第二章:链路层
2.1 引言 链路层的三个目的: (1)为IP模块发送和接收IP数据报. (2)为ARP模块发送ARP请求和接收ARP应答.地址解析协议:ARP. (3)为RARP模块发送RARP请求和接收RARP应 ...
- TCP/IP详解 卷一(第一章 概述)
很多不同的厂家生产各种型号的计算机,它们运行完全不同的操作系统,但TCP/IP协议族允许它们相互进行通信. 1.分层 TCP/IP不是一个协议,而是一个协议族,通常它被认为是一个四层的协议系统,下面展 ...
随机推荐
- python 中的字符串格式化
python 中的字符串格式化 %方式的调用 1.格式化代码 代码 意义 s 字符串,使用str r 字符串,使用repr不使用str c 字符 d 十进制的数字 i 整数 u 无符号整数 o 八进制 ...
- go Context的使用
控制并发有两种经典的方式,一种是WaitGroup,另外一种就是Context WaitGroup的使用 WaitGroup可以用来控制多个goroutine同时完成 func main() { va ...
- Asp.net中使用缓存(cache)
做了一个时间优化的项目,目的就是缩短程序过程中的时间花费,最后发现了asp.net和asp.net core 中都有缓存工具来进行缓存,以加快访问速度. 找了官方demo来进行分析: ObjectCa ...
- 使用最新版的Adobe Photoshop CC 2017
1. 装之前建议把之前老的Photoshop删干静.打开官网 https://www.adobe.com/cn/products/photoshop.html 点免费使用 ,会下载一个安装器Crea ...
- Python_sklearn机器学习库学习笔记(四)decision_tree(决策树)
# 决策树 import pandas as pd from sklearn.tree import DecisionTreeClassifier from sklearn.cross_validat ...
- jquery ajax 上传文件和传递参数到一个接口的实现方法
参考:https://blog.csdn.net/qq_15674631/article/details/81095284 参考:https://www.jianshu.com/p/46e6e03a0 ...
- Tomcat部署Web应用
在Tomcat中部署Web有三种方法: 1,可以将Web应用文件直接复制到webapps目录下,也可以将Web应用打成war包放到webapps目录下,tomcat会自动解开war包,并在webapp ...
- iptables 生产环境下基础设置
iptables 生产环境下基础设置 生成环境需求:防火墙需要让内网的Ip全部通过,外网IP添加到白名单,其他一切拒绝.安装在linux系统中安装yum install iptables-servic ...
- 动态权限<三>华为小米特殊机制
动态权限对于谷歌来说从android6.0引入,对于国内的rom来说,这个题目不是好的选择题.因为大多数时候由于使用群众的层次不同,有些人在乎隐私的泄露,而更多的人却并不关心,使用了动态权限,增加了用 ...
- 关于jsp中引用css外部样式无效时的处理方法
今天做项目遇到的一个小问题,如下所示: <link href="./bootstrap/css/bootstrap.min.css" rel="stylesheet ...