简介

为了使用 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客户机。

  1. 当dhcp client 启动并进行dhcp 初始化时,它会在本地网络广播配置请求报文。
  2. 如果本地网络存在 dhcp server,则可以直接进行 dhcp 配置,不需要 dhcp relay。
  3. 如果本地网络没有 dhcp server,则与本地网络相连的具有 dhcprelay 功能的网络设备收到该广播报文后,将进行适当处理并转发给指定的其它网络上的 dhcp server。
  4. dhcp server 根据 dhcp client 提供的信息进行相应的配置,并通过 dhcp relay 将配置信息发送给 dhcp client,完成对dhcp client 的动态配置。

事实上,从开始到最终完成配置,需要多个这样的交互过程。

  1. dhcp relay 设备修改 dhcp 消息中的相应字段,把 dhcp 的广播包改成单播包,并负责在服务器与客户机之间转换。
  2. 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 认证

    1. Authentication Information 保存一个类似于密码的字符串,用于 client 和 server 的匹配。
    2. 很明显这种流量可能被攻击者截获,很不安全,只能抵御偶然的DHCP问题
  • DHCP 延期认证
    1. 如此,则discover 、offer、ACK 消息中包含认证选项
    2. 用 MAC 确认身份。
    3. Client 和 Server 有一个共享的密钥,用于确保两者之间互换的 DHCP 消息没有被修改(Integrity)
  • DHCP 认证没有被广泛使用的原因:
    1. 所有 DHCP Server 和每个认证的 Client 都要分发共享密钥
    2. 认证的定义出现在 DHCP 已经广泛使用之后。

DHCP 很容易受到拒绝服务式攻击,大多数攻击可以通过为 DHCP 增加安全机制来缓解,但是目前仍然很少被使用。


links

【TCP/IP详解 卷一:协议】第六章:DHCP 和自动配置的更多相关文章

  1. TCP/IP详解 卷一(第六章 ICMP:Internet控制报文协议)

    ICMP是(Internet Control Message Protocol)Internet控制报文协议. 用于在IP主机.路由器之间传递控制消息.控制消息是指网络通不通.主机是否可达.路由是否可 ...

  2. TCP/IP详解 卷一(第三章 IP:网际协议)

    IP是TCP/IP协议族中最为核心的协议.所有的TCP.UDP.ICMP及IGMP数据都以IP数据报格式传输. IP提供不可靠.无连接的数据报传送服务. 1.不可靠:就是它不能保证IP数据报能成功地到 ...

  3. TCP/IP详解 卷一(第十三章 IGMP:Internet组管理协议)

    本章将介绍用于支持主机和路由器进行多播的Internet组管理协议(IGMP) 它让一个物理网络上的所有系统知道主机当前所在的多播组.多播路由器需要这些信息以便知道多播数据报应该向那些接口转发. 跟I ...

  4. TCP/IP详解 卷一(第十一章 UDP:用户数据报协议)

    UDP是一个简单的面向数据报的运输层协议. UDP不提供可靠性:它把应用程序传给IP层的数据发送出去,但是并不保证它们能到达目的地. UDP首部的个字段如下图所示

  5. TCP/IP详解 卷一(第十七章 TCP:传输控制协议)

    与UDP协议相比,TCP提供一种面向连接的.可靠的字节流服务. TCP首部 跟UDP一样,TCP数据被封装在一个IP数据报中,下面显示TCP的首部数据格式 每个TCP段都包含源端和目的端的端口号,用于 ...

  6. 『TCP/IP详解——卷一:协议』读书笔记——10

    2013-08-22 22:57:17 3.8 ifconfig命令 这个命令在Linux系统下可以通过下面的指令阅读说明文档: ifconfig 由于书中作者用的系统比较早的某Unix系统,所以我的 ...

  7. 『TCP/IP详解——卷一:协议』读书笔记——01

    从今日起开始认真研读TCP/IP详解这本经典制作,一是巩固我薄弱的计算机网络知识,二来提高我的假期的时间利用率.将心得与思考记录下来,防止白看-哦耶 2013-08-14 18:47:06 第一章 概 ...

  8. 【TCP/IP详解 卷一:协议】第二章:链路层

    2.1 引言 链路层的三个目的: (1)为IP模块发送和接收IP数据报. (2)为ARP模块发送ARP请求和接收ARP应答.地址解析协议:ARP. (3)为RARP模块发送RARP请求和接收RARP应 ...

  9. TCP/IP详解 卷一(第一章 概述)

    很多不同的厂家生产各种型号的计算机,它们运行完全不同的操作系统,但TCP/IP协议族允许它们相互进行通信. 1.分层 TCP/IP不是一个协议,而是一个协议族,通常它被认为是一个四层的协议系统,下面展 ...

随机推荐

  1. html移动应用 input 标签 清除按钮功能如何实现(不触发键盘)

    有个需求是:输入框有文本的时候就显示清除按钮,没有文本则隐藏清除按钮,点击清除按钮不能影响键盘弹出的状态. 网上有css实现自动显示和隐藏清除按钮的方案,但是考虑到兼容性,我们还是使用js来实现. c ...

  2. hadoop--hive数据仓库

    一.hive概述 Hive是基于 Hadoop 的一个[数据仓库工具],可以将结构化的数据文件映射为一张数据库表,并提供简单的 sql 查询功能,可以将 sql 语句转换为 MapReduce 任务进 ...

  3. # 2017-2018-1 20155224 《信息安全系系统设计基础》第四周MyOD

    2017-2018-1 20155224 <信息安全系系统设计基础>第四周MyOD 在这里跟老师先道歉,当时我的git没有安装好,后面也一直没有装上,所以程序没有git. 要求 参考教材第 ...

  4. c++ 变量 常量

  5. 4-[多进程]-互斥锁、Queue队列、生产者消费者

    1.互斥锁 (1)为什么需要互斥锁 进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的, 而共享带来的是竞争,竞争带来的结果就是错乱,如下 #并发运行,效率 ...

  6. 开发人员常用的DOS命令

    1.远程连接:mstsc /admin 2.开启服务:services.msc 3.打开注册表:regedit 4.IIS服务器重启:iisreset 5.打开记事本:notepad 6.查看系统信息 ...

  7. aws存储桶s3使用

    关于aws s3的使用说明: aws官方文档地址:https://docs.aws.amazon.com/s3/index.html#lang/zh_cn 创建s3与基础使用: 1.登陆aws控制台- ...

  8. linux shell 完成批量压缩文件

    首先得到文件列表 使用 list -1 注意是1 不是l 然后是用一个循环内包装zip代码 #!/bin/bash list=`` for var in $list do echo $var zip ...

  9. Python 之Memcache中间件

    一.引子 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载,它通过在内存中缓存数据和减少读取数据库的次数,从而提高动态数据库驱动网站的速度.Memcache ...

  10. 在WebGL场景中进行棋盘操作的实验

    这篇文章讨论如何在基于Babylon.js的WebGL场景中,建立棋盘状的地块和多个可选择的棋子对象,在点选棋子时显示棋子的移动范围,并且在点击移动范围内的空白地块时向目标地块移动棋子.在这一过程中要 ...