【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不是一个协议,而是一个协议族,通常它被认为是一个四层的协议系统,下面展 ...
随机推荐
- jquery html 鼠标悬浮出现列表切换
效果截图 HTML结构为: <div class="activityBox"> <ul class="activityTab"> < ...
- 20155239吕宇轩 Linux下IPC机制
20155239吕宇轩 Linux下IPC机制 - 共享内存 原理:把所有需要使用的共享数据都存放在共享内存 区域中,任何想要访问这些共享数据的进程都必须在自己的进程地址空间中新增加一块内存区域,用来 ...
- PHP 注释规范
注释在写代码的过程中非常重要,好的注释能让你的代码读起来更轻松,在写代码的时候一定要注意注释的规范. php里面常见的几种注释方式: 1.文件头的注释,介绍文件名,功能以及作者版本号等信息 /** * ...
- 5285: [Hnoi2018]寻宝游戏
5285: [Hnoi2018]寻宝游戏 链接 分析: 从下面依次确定运算符号,然后在确定的过程中,需要确定的位数会逐渐减少.比如最后有一个1,如果在从下往上确定了一个or 1,那么再往前可以随便选了 ...
- zhengruioi 470 区间
区间 链接 题意:给定n个区间[li,ri].你可以选出任意一些区间,设选出的区间个数是s,[l,r]是这些区间的交,求min(s,r-l+1)的最大值. N≤3×105 分析:首先按照左端点排序,然 ...
- Gitlab+Jenkins学习之路(二)之gitlab部署
1.安装依赖及gitlab [root@linux-node1 ~]# yum install -y curl policycoreutils openssh-server openssh-clien ...
- JAVA 调用gc机制强制删除文件
在删除文件前调用System.gc()方法,也就是垃圾回收机制,即可成功删除被JAVA虚拟机占用的文件.
- Assert.notNull(sessionUser);
rg.springframework.util.Assert Assert翻译为中文为"断言".就是断定某一个实际的值就为自己预期想得到的,如果不一样就抛出异常.
- python易错盲点排查之+=与+的区别分析以及一些赋值运算踩过的坑
问题1. int和list是不一样的 >>> a=1 >>> b=a >>> a+=1 >>> a,b (2, 1) >& ...
- win10系统安装docker注意事项
首先要确保win10系统支持 hyper-v 技术. 然后按照官网的流程下载,安装,基本上不会出什么问题.安装好之后使用,需要进行以下几个操作 access denied问题的解决 按win+R,输入 ...