参考资料:

百度百科:https://baike.baidu.com/item/DHCP/218195?fr=aladdin

DHCP:Dynamic Host Configuration Protocol,动态主机配置协议。该协议是一种局域网网络协议。主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。

1、DHCP报文结构如下:

DHCP封包在传输层( Transport Layer)是采用UDP协议,而当 Client传送给封包给 Server时,采用的是UDP 67 Port,从 Server传送给 Client则是使用UDP 68 Port。 [3]

DHCP的封包格式如右图所示,各字段定义如下

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 ,bit为0时标示server将以单播的方式传递封包给client,其余bit尚未使用。

ciaddr:

要是 client 端想继续使用之前取得之 IP 地址,则列于这里。

yiaddr:

从 server 送回 client 之 DHCP OFFER 与 DHCP ACK封包中,此栏填写分配给 client 的 IP 地址。

siaddr:

若 client 需要透过网络开机,从 server 送出之 DHCP OFFER、DHCP ACK、DHCP NACK封包中,此栏填写开机程序代码所在 server 的地址。

giaddr:

若需跨网域进行 DHCP 发放,此栏为 relay agent 的地址,否则为 0。

chaddr:

Client 之硬件地址。

sname:

Server 之名称字符串,以 0x00 结尾。

file:

若 client 需要透过网络开机,此栏将指出开机程序名称,稍后以 TFTP 传送。

2、报文种类:

DHCP DISCOVER:由client端发起,目的是向server发起dhcp请求。

DHCP OFFER:由server端发起,目的是告诉client端“我能给你分配的ip是这个啊”。这个数据包中携带的信息有:我(server)的信息是谁,我能给你分配的ip是什么。

DHCP REQUEST:由client端发出,告诉提供ip地址分配的server端“我用你给我分配的ip”,这个数据包中需要携带信息表明:server端是谁,要用的ip地址是谁。

DHCP ACK:由server端发出,告诉client端“好的,就这么定了,你就用我给你分配的ip吧”。

3、抓包分析:

打开windows的cmd.exe,依次输入:

ipconfig –release

ipconfig –renew

利用wireshark软件抓取数据包,过滤协议dhcp。

3.1 DHCP Discover

我们在这里只分析应用层数据包。

Bootp flags:0表示单播,1表示广播,这里为1,即DHCP服务端回复的DHCP Offer报文应为单播形式。

部分书上讲述的DHCP四个包都是使用广播的方式进行,实际上DHCP Offer和DHCP Ack这两个数据包是广播还是单播是由DHCP的客户端发送的数据包来决定的。

因为如下信息此时对于client端来说都是未知的,所以填充的值如下:

Client IP address: 0.0.0.0

Your (client) IP address: 0.0.0.0

Next server IP address: 0.0.0.0

3.2 DHCP OFFER

DHCP服务器能够提供的ip地址为192.168.0.103,是通过广播的方法回复的啊。该数据包中携带了服务器的ip地址、router、子网掩码等信息。

3.3 DHCP Request

client通过广播的方式表明自己要用的ip地址信息(用哪个服务器提供的),如果有其他dhcp服务器收到了该广播包,则将其通过的ip地址再次放到可用的地址池中。

3.4 DHCP ACK

dhcp server搜到Request数据包后,判断出来是要用自己提供的ip,则给client端回复一个ack包,里面携带分配给client端的ip地址等一系列信息。

Dhcp Release/Dhcp inform/Dhcp NAck包等在这里就不进行分析了。

网络协议-dhcp报文分析相关推荐

  1. 计算机3级网络技术综合题第3题(DHCP报文分析)解题总结

    前言 综合题第3题一般为DHCP报文分析,给你一段报文然后对此进行分析,分为两种情况: (1)客户机向服务器申请IP地址 (2)客户机ip地址租期准备到期,要向服务器申请续租 一.情况1:客户机向服务 ...

  2. 网络协议图形化分析工具EtherApe

    网络协议图形化分析工具EtherApe 在对网络数据分析的时候,渗透测试人员往往只关心数据流向以及协议类型,而不关心具体数据包的内容.因为这样可以快速找到网络的关键节点或者重要的协议类型. Kali ...

  3. UNIX 网络协议的深度分析

    https://www.ibm.com/developerworks/cn/aix/library/au-deepprotocolanalysis/index.html?mhq=http%E5%8D% ...

  4. 实验二网络协议以太网帧分析

    实验二 以太网帧分析 实验目的:掌握以太网的帧首部格式,理解其功能与含义. 原理概述: 在有线局域网中,目前只有一种,即以太网.下图是以太网的帧格式. 实验内容步骤: IP地址用于标识因特网上每台主机 ...

  5. dhcp 服务器发出了 dhcpnack 消息,跪求DHCP报文分析

    1. 寻找Server.当DHCP客户端第一次登录网路的时候,也就是客户发现本机上没有任何IP资料设定,它会向网路发出一个DHCPDISCOVER封包.因为客户端还不知道自己属于哪一个网路?所以封包的 ...

  6. 关于手游网络协议的简单分析

    前言 大多数加密方案都假定可信的发送者和接收者会通过一个不可信的通道通信. 虽然假设发送者会故意尝试愚弄接收者有点荒谬,但这确实是摆在开发者面前的问题.有些玩家是不可信的, 更糟的是, 他们能够通过客 ...

  7. 使用wireshark抓包并进行网络协议分析

    前言 今天想通过抓包实验,巩固一下所学习的网络协议.同时,在知识点上会加上以前遇到的一些问题.这次实验并不是对所有的网络协议都进行分析,而是从下面这个问题出发(面试常被问).从这一过程中复习学过的网络 ...

  8. 网络原理DHCP 安全

    动态主机配置协议(DHCP:Dynamic Host Configuration Protocol),提供了一种动态分配网络配置参数的机制. DHCP协议是一种client/server模式的网络协议 ...

  9. 网络协议从入门到底层原理(6)应用层 - 域名、DNS、DHCP、HTTP(ABNF、HTTP报文格式、请求方法、头部字段、状态码、跨域)、代理、CDN

    应用层 域名( Domain Name)- 顶级域名.二级域名 DNS - DNS服务器.常用命令 DHCP(DISCOVER.OFFER.REQUEST.ACKNOWLEDGE) HTTP HTTP ...

  10. DHCP协议说明及报文分析

    DHCP几个概念: DHCP Client:DHCP客户端,通过DHCP协议请求IP地址的客户端.DHCP客户端是接口级的概念,如果一个主机有多个以太接口,则该主机上的每个接口都可以配置成一个DHCP ...

最新文章

  1. JavaScript Document 对象
  2. 解决 Unable to load native-hadoop library for your platform方法之一
  3. sonar 服务器搭建 遇到各种问题
  4. antd table动态表头_解决react使用antd table组件固定表头后,表头和表体列不对齐以及配置fixed固定左右侧后行高度不对齐...
  5. matlab哈明窗带阻,基于matlabFIR低通,高通,带通,带阻滤波器设计.doc
  6. 「Unity」UGUI的Text实现首行缩进的办法
  7. 真香定律!一文带你搞懂Android多线程Handler,成功入职腾讯
  8. 李宏毅机器学习(八)ELMo、BERT、GPT、XLNet、MASS、BART、UniLM、ELECTRA、others
  9. Ambari安装client报错OSError:[Error 17] File exists
  10. 区块链企业级解决方案 ( Hyperledger )
  11. BZOJ2843 极地旅行社 LCT
  12. 计算机等级考试网络工程师题库,计算机等级考试4级网络工程师习题库要点
  13. qq pc9.4协议机器人框架源码
  14. GB 2312 编码
  15. C51红外接收与发射控制及原理编码与解码
  16. c语言for死循环的作用,for循环死循环语句
  17. 判断是否是ie浏览器 前端js_JavaScript判断IE浏览器版本IE6,IE7,IE8
  18. MacOS-Mac开发和iOS开发的区别
  19. Win8/Win10 Ctrl+Alt+方向键 屏幕显示翻转解决办法
  20. 在国企的日子(第四章 团建)

热门文章

  1. 基于 AngularJS 的 UI 框架 Suave UI
  2. CacheCloud-资源归档
  3. ImageOptim使用教程之图片压缩的方法
  4. libtorrent java_Libtorrent 之 NDK 编译
  5. flex 3 格式化组件
  6. Linux虚拟机IP地址查询
  7. 常见的相机输出接口CVBS、VGA、DVI、HDMI、SDI、Camera Link、HS-LINK、CoaXPress
  8. python股票收益率计算_股票分析之——收益率(附完整代码和讲解)
  9. 公式计算机实现,数学公式的计算机表达(精选).doc
  10. 谈谈多源数据融合-科普基本概念篇