zoukankan      html  css  js  c++  java
  • DHCP协议

    DHCP,Dynamic Host Configuration Protocol,动态主机配置协议。采用DHCP的好处在于减少网络管理员和用户的负担。可以减少手动配置IP地址导致的地址冲冲突,以及网关地址或DNS地址错误导致的不能访问网络等问题。

    DHCP原理

    DHCP服务器有一个IP地址池,当任何启用DHCP的客户机连接到网络时,可从服务器那里租借一个IP地址,不再使用的IP地址自动回收到地址池中,供再次分配使用。

    DHCP保证在同一时刻的任何IP地址只能分给一个客户机使用。当DHCP客户机重启时,应配置为相同的IP地址。在DHCP服务器重启情况下,也应当给每个客户机分配相同的IP地址,并且和手动分配的IP地址共存。这要求DHCP服务器对已经分配的IP地址进行保存,并且在客户端不使用时进行回收。

    DHCP是一种动态地向网络终端提供配置参数的协议。在终端提出申请后,DHCP服务器可以向终端提供IP地址及子网掩码、网关和DNS服务器地址等参数。

    DHCP协议基于UDP协议,客户端的端口号是68,服务器端口号是67。

    DHCP在分配IP地址时有两种方法,一种是由DHCP服务器再特定的IP地址中自动选出一个进行分配。另一种方法是针对MAC地址分配一个固定的IP地址,而且这两种方法可以并用。

    为了检查所要分配的IP地址以及已经分配了的IP地址是否可用,DHCP服务器或DHCP客户端必须具备以下功能:

    DHCP服务器:在分配IP地址前发送ICMP回送请求包,确认没有返回应答。

    DHCP客户端:针对从DHCP那里获得到的IP地址发送ARP请求包,确认没有返回应答。

    DHCP工作流程

    DHCP共分为4个阶段:

     

    各阶段报文截图如下:

    若DHCP服务器分配的IP已被占用(通过arp判断),client发送decline报文:

    协议分析

    通过wireshark来获取上述4个阶段报文,过滤方式:

    1. 基于端口过滤     udp.port==67
    2. 基于协议过滤    bootp
         在wireshark里,bootp就是指的DHCP,因为DHCP是根据bootp改进过来的。如果要写filter的时候,记得用bootp,而不是dhcp。

    DHCP应用

    dnsmasq是轻量级的DHCP、TFTP和DNS缓存服务器,给小型网络提供DNS和DHCP服务。它的设计目标是轻量级的DNS,并且占用空间小,适用于资源受限的路由器和防火墙,以及智能手机、便携式热点设备等。官网:http://dnsmasq.org/

    dnsmasq的配置文件/etc/config/dhcp控制着DNS和DHCP服务选项。默认配置包含一个通用的配置节来指定全局选项,还有一个或多个DHCP来定义动态主机配置服务的网络接口和地址池等。还可以包含多个域名和主机配置,并且提供客户端地址列表来查询。

    参考:

    1. 跟我学TCP/IP系列4 --DNS、ARP、ICMP以及DHCP

    2. 智能路由器开发指南

    3. 图解TCP/IP

    4. Wireshark实战分析之DHCP协议(一)

  • 相关阅读:
    redis实现高并发下的抢购/秒杀功能
    redis分布式锁的实现(setNx命令和Lua脚本)
    【JAVA代码审计】——1、Spring框架知识篇
    使用edjpgcom工具制作一句话图片木马
    史上最强内网渗透知识点总结
    2018年云上挖矿分析报告
    Solidity 安全:已知攻击方法和常见防御模式综合列表
    【PHP渗透技巧拓展】————3、LFI、RFI、PHP封装协议安全问题学习
    【PHP渗透技巧拓展】————2、利用 Gopher 协议拓展攻击面
    【RPO技巧拓展】————5、RPO攻击初探
  • 原文地址:https://www.cnblogs.com/embedded-linux/p/7293920.html
Copyright © 2011-2022 走看看