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

    1 DHCP优缺点

    2 基础知识

    2.1 介绍

    名字:Dynamic Host Configuration Protocol -> DHCP

    前身:Bootp

    传输层:UDP

    端口号:’DHCP server’67      ‘DHCP client’68

    2.2 报文流程-无中继

    2.3 报文流程-有中继

    2.4 报文类型

    2.5 报文格式

    2.6 CS典型交互流程

    2.6.1 步骤1 Discover

    2.6.2 步骤2 Offer

    2.6.3 步骤3 Request

    2.6.4 步骤4 ACK

    2.6.5 客户端重启

    重启后,可直接跳过step1 discover和step2 offer,进入step3 request

    3 服务器端源码分析

    3.1. 概览

    本节是对busybox自带的dhcp服务端源码的分析,分析的主要目的是要掌握如下几点内容:

    l  重要的全局变量和结构体定义

    l  租赁IP的管理

    l  收包-发包间的联系

    1. 收到DISCOVER-发OFFER
    2. 收到REQUEST-发ACK/NAK
    3. 收到DECLINE
    4. 收到RELEASE
    5. 收到INFORM-发ACK

    3.2 结构体-DHCP格式

    3.3 全局变量 server_config

    3.4 全局变量 IP池

    3.5 IP的租赁管理

    3.6 报文的收发对应关系

    3.7 接收Discover

    3.8 接收Request

    3.9 接收Decline

    3.10 接收Release

    3.11 接收Inform

    4 测试

     

    (1)测试用例

    分析:

    步骤4结束后,dhcp server的ip地址池有192.168.1.2和192.168.1.3的使用记录。

    步骤5中dhcp client并没有主动发release报文,而是直接和dhcp server断开联系。

    步骤8中当dhcp client重新接入dhcp server时,直接使用之前用过的ip地址192.168.1.3.

    步骤9中dhcp client无法再获得ip地址,原因如下:

    Dhcp server收到申请192.168.1.3的Request后,直接回复了ACK。

    Dhcp client收到ACK后,有检测到该IP地址已经不能使用,但并没有再次发Decline给dhcp server,而是继续发送申请192.168.1.3的Request。由此就陷入了一个死循环,使得dhcp client无法获得新的ip地址

    (2)测试工具

    工具名字:SVlanFrame.exe

     

    5 漏洞攻击

    局域网内的任何一个主机都可以冒充dhcp server,回应某个dhcp client的discovery报文,从而篡改该dhcp client的网关地址、DNS服务器地址等。

    如下局域网内有一个路由器(192.168.1.1),和两个LAN PC,其中PC2冒充dhcp server篡改了PC1的网关地址。

    6 自测问答题

    问题:

    1 为什么wireshark工具分析dhcp协议的时候,过滤的关键字是dhcp吗?

    2 为什么执行完ipconfig /release之后,客户端的IP地址变成了169.254.60.156?

    3 dhcp中是如何确定IP是否被占用的?

    4 客户端的request中的ip是如何确定的?

    5 广播单播的问题?

    答案:

    1 因为dhcp的前身就是bootp

    2 在rfc5735中有对这个地址的介绍

       169.254.0.0/16 - This is the "link local" block.  As described in

       [RFC3927], it is allocated for communication between hosts on a

       single link.  Hosts obtain these addresses by auto-configuration,

       such as when a DHCP server cannot be found.

    3 有两种方式:服务器端IP租赁管理和ARP查询

    4 有两种方式:来自之前服务器端发出的Offer报文中的yiaddr和来自客户端以前连接的历史IP值

    5 广播和单播是根据如下自动取得的,为1表示广播,为0表示单播

    7 Reference

    1. https://tools.ietf.org/html/rfc1533
    2. https://tools.ietf.org/html/rfc2131
    3. https://wenku.baidu.com/view/8fdeb5ddcf84b9d529ea7a59.html
  • 相关阅读:
    盘点开发中那些常用的MySQL优化
    刚入职!就遇到上亿(MySQL)大表的优化
    面试技巧|“唇枪舌剑”之十大招式
    rpc是什么?php中流行的rpc框架有哪些?
    使用 memory_limit 限制 PHP 进程的内存使用
    swoole查看子进程与主进程关系
    使用SecureCRT连接AWS的EC2(Linux系统)亲测可行
    substitute Simple JavaScript Template :
    git 简单图表
    jquery 队列
  • 原文地址:https://www.cnblogs.com/aimmiao/p/12759522.html
Copyright © 2011-2022 走看看