DHCP

定义

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个应用层网络协议,使用UDP协议工作, 通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址(一般是动态地分配私有IP地址),使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率(因为可以动态分配IP)。

功能

DHCP协议采用客户端/服务器模型,主机地址的动态分配任务由网络主机驱动(客户机主动发出IP申请)。当DHCP服务器接收到来自网络主机申请地址的信息时,才会向网络主机发送相关的地址配置等信息,以实现网络主机地址信息的动态配置。

DHCP具有以下功能:
  • 保证任何IP地址在同一时刻只能由一台DHCP客户机所使用。
  • DHCP应当可以给用户分配永久固定的IP地址。
  • DHCP应当可以同用其他方法获得IP地址的主机共存(如手工配置IP地址的主机)。
  • DHCP服务器应当向现有的BOOTP(自举协议,是DHCP协议的前身)客户端提供服务。
DHCP有三种机制分配IP地址:
  1. 自动分配方式(Automatic Allocation),DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。
  2. 动态分配方式(Dynamic Allocation),DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。
  3. 手工分配方式(Manual Allocation),客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。

三种地址分配方式中,只有动态分配可以重复使用客户端不再需要的地址。DHCP消息的格式是基于BOOTP(Bootstrap Protocol)消息格式的,这就要求设备具有BOOTP中继代理的功能,并能够与BOOTP客户端和DHCP服务器实现交互。BOOTP中继代理的功能,使得没有必要在每个物理网络都部署一个DHCP服务器。

产生原因

如果没有DHCP,TCP/IP协议在初始化过程中,需要用户提供IP地址、网络掩码、默认网关、DNS服务器,以此来完成各个协议模块的初始化工作,对于广大用户来说,这绝对是一种很糟糕的体验。而有了DHCP,TCP/IP协议在初始化时,会自动调用DHCP模块,DHCP通过广播的方式去发现(Discover)DHCP服务器,如果本广播域没有服务器,通常会在网关上配置一个DHCP Relay + DHCP 服务器IP,一句话,肯定可以找到一个可以分配IP(Offer)的服务器。通过四次消息交互,最后电脑获得了所有上网的的IP参数:IP地址、网络掩码、默认网关、DNS服务器,TCP/IP所有模块完成初始化,比如IP模块、DNS模块。用户无需任何配置即可上网,这是TCP/IP对用户友好的一面。

通信过程

UDP的整个数据包:

在这里插入图片描述
(1)最前面的"以太网标头",设置发出方(本机)的 MAC 地址和接收方(DHCP 服务器)的 MAC 地址。前者就是本机网卡的 MAC 地址,后者这时不知道,就填入一个广播地址:FF-FF-FF-FF-FF-FF。  
(2)后面的"IP 标头",设置发出方的 IP 地址和接收方的 IP 地址。这时,对于这两者,本机都不知道。于是,发出方的 IP 地址就设为0.0.0.0,接收方的 IP 地址设为 255.255.255.255。  
(3)最后的"UDP 标头",设置发出方的端口和接收方的端口。这一部分是 DHCP 协议规定好的,发出方是 68 端口,接收方是 67 端口。

DHCP的通信过程
  • Discovery
    数据包构造完成后,就可以发出了。以太网是广播发送,同一个子网络的每台计算机都收到了这个包。因为接收方的 MAC 地址是 FF-FF-FF-FF-FF-FF,看不出是发给谁的,所以每台收到这个包的计算机,还必须分析这个包的 IP 地址,才能确定是不是发过自己的。
  • Offer
    当看到发出方 IP 地址是0.0.0.0,接收方是 255.255.255.255,于是 DHCP 服务器知道"这个包是发过我的",而其他计算机就可以丢弃这个包。接下来,DHCP 服务器读出这个包的数据内容,分配好 IP 地址,发送回去一个"DHCP 响应"数据包。这个响应包的结构也是类似的,以太网标头的 MAC 地址是双方的网卡地址,IP 标头的 IP 地址是 DHCP 服务器的 IP 地址(发出方)和 255.255.255.255(接收方),UDP 标头的端口是 67(发出方)和 68(接收方),分配给请求端的 IP 地址和本网络的具体参数则包含在 Data 部分。
  • Request
    新加入的计算机收到这个响应包,于是就知道了自己的 IP 地址、子网掩码、网关地址、DNS 服务器等等参数。然后回应服务器
  • ACK 
    服务器确认刚刚分配的这个IP还有效(因为IP分配使动态的,所以需要确认有效性,以有效利用IP资源

常见问题

为什么是四次握手

第一次:首先client一开始是什么都不知道,所以肯定得一个广播去问
第二次:收到广播的server就给client发offer
第三次:server不知道client要不要啊,不要还得给别人呢,所以client必须要确认offer
第四次:但是这个offer有可能在client确认之前就已经失效了,所以server要告诉client这个offer是否依然有效,如果offer有效那么client就可以用这个ip了

和NAT的联系和区别

区别

  • DHCP:通过动态分配地址提高IP地址利用率。此外,其主要功能还有简化主机上网配置的功能。
  • NAT:通过私有IP向公网IP转换提高IP地址利用率。此外,其还可以有保障安全的功能。

    NAT的安全功能:一些因为历史关系获得一个或者多个整个A网段的公司,比如IBM或者HP,内网的机器会被直接分派一个A网的IP地址,这种情况下,NAT有时候还是会被用到,因为安全因素考虑,即便是公网IP,也会在访问外网时被转到某个特定IP段。

联系
由于一般企业网、家庭网络,DHCP服务器分配给电脑的都是私有IP,诸如 10/8、172.16/12、192.168/16,这些私有IP在企业网内部还可以混混,但不能到Internet上去浪。所以必须在企业网与Internet的边界网关,做私有IP与公网IP的转换(NAT),即由于公网IP可能只有一个或几个,需要使用NAT网关的端口号来识别一个个用户session。也就是说,DHCP和NAT需要搭配使用。

DHCP是如何确定适合客户端网段的IP地址的

客户端此时还没有IP地址的时候,肯定是通过MAC地址与DHCP通讯的。在一个复杂的网络环境中会有多个网段,DHCP是如何确定适合客户端网段的IP地址的呢?
跨广播域的dhcp,会有一个dhcp中继。dhcp中继在收到dhcp请求广播后,将广播改为单播,单播封装的源ip就是其收到这个广播的接口地址。dhcp服务器根据这个接口地址选择dhcp池


参考文献

https://baike.baidu.com/item/DHCP DHCP的定义
https://www.zhihu.com/question/66893227 DHCP和NAT的区别,产生原因
https://www.zhihu.com/question/23337642 DHCP通信过程
https://www.zhihu.com/question/263584277 DHCP是如何确定适合客户端网段的IP地址的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值