网络协议-dhcp报文分析_dhcp报文结构_马小橙的博客-程序员宅基地

技术标签: wireshark  物联技术  Discover  dhcp  报文  抓包  

参考资料:

百度百科:百度百科-验证

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

1DHCP报文结构如下:

https://gss1.bdstatic.com/-vo3dSag_xI4khGkpoWK1HF6hhy/baike/c0%3Dbaike80%2C5%2C5%2C80%2C26/sign=3705c58d2e738bd4d02cba63c0e2ecb3/7dd98d1001e93901cc8e376e7bec54e737d196d6.jpg

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

ciaddr:

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

yiaddr:

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

siaddr:

client 需要透过网络开机,从 server 送出之 DHCP OFFERDHCP ACKDHCP 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、抓包分析:

打开windowscmd.exe,依次输入:

ipconfig –release

ipconfig –renew

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

3.1 DHCP Discover

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

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

部分书上讲述的DHCP四个包都是使用广播的方式进行,实际上DHCP OfferDHCP 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包等在这里就不进行分析了。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Atlas12345/article/details/104123371

智能推荐

Multicore Programming OpenMP: Part 1_Snail_Walker的博客-程序员宅基地

多核共享内存平台multicore shared-memory platformOpenMP介绍多核共享内存APIOMP介绍parallel region创建线程同步synchronizationcriticalatomic循环parallel loopsparallel forreductiondata environmentAdvanced worksharing opti

微信小程序解析富文本标签_小程序 设置富文本里面的标签_ColorKin的博客-程序员宅基地

wxParse方法我踩雷了微信官方文档有个更为便捷的标签<rich-textnodes="{{}}"></rich-text>

如何打开asm文件(学习汇编语言)_工科狗Niko的博客-程序员宅基地

1.asm文件可以直接用记事本打开,浏览2.asm文件是汇编程序源文件,可以通过debug工具汇编成.obj文件,然后用link工具连接成.exe 文件3.可以在MASMPlus.exe 中打开,点击编译-编译(ASM)-连接,也会生成exe文件4.在dosbox中改变盘符,然后输入debug空格+exe文件的名称,单击回车,出现“-”符号,则文件已经打开。...

opencv(Python与c++双实现)随笔记录:1.opencv在anaconda下安装(windows/ubuntu16.0.4)_小新快跑123的博客-程序员宅基地

网上的opencv安装教程过于复杂,这里的安装只需要简单的两步。本教程基于你已经安装了anaconda。1.打开navigator点击environments->create(创建一个虚拟环境)输入opencv,确定创立该虚拟环境2.打开anaconda prompt打开anaconda prompt激活openc

python 离散建模:感知器学习算法_感知器如何学到参数_the only KIrsTEN的博客-程序员宅基地

Python 离散建模:感知器学习算法我们将研究一种判别式分类方法,其中直接学习评估 g(x)所需的 w 参数。我们将使用感知器学习算法。感知器学习算法很容易实现,但为了节省时间,我在下面为您提供了一个实现。该函数有几个输入:训练数据、训练标签、对权重的初始猜测和学习率。注意,对于这两个类,类标签的值必须为+1和-1。它将返回一个元组,其中包含:1.学习w参数2.执行的迭代次数3.错误分类的样本数花些时间检查代码。如果不清楚每一行是如何工作的,不要担心,只要让你自己知道每一行的目的是什么就可以

随便推点

windows启动系统自动登录配置_gouguofei的博客-程序员宅基地

https://support.microsoft.com/zh-cn/help/982145易宝典: 如何实现 Windows 7/Vista 开机自动登录而不用输入密码适用于:Windows Vista UltimateWindows Vista StarterWindows Vista Service Pack 2详细密码登录是系统保护用户信息的一种安全机制,但在某些场...

Battery Charging Specification, Revision 1.2, December 7, 2010 中文_liglei的博客-程序员宅基地

Battery Charging SpecificationRevision 1.2December 7, 2010中文版2014.04.03 Rev0.1转载请注明转自:http://blog.csdn.net/liglei1. Introduction  第一章 简介1.1 Scope    适用范围规范定义了设备通过USB端口充电的

ios如何解除dns被劫持_mac dns被劫持如何修复-Mac DNS被劫持解决方法 - 河东软件园..._weixin_39794734的博客-程序员宅基地

想必许多用户在使用电脑浏览网页时,常常会遇到各类广告弹窗,让您烦不胜烦,而据许多Mac用户反应,当已经设置了广告拦截任然会收到大量广告,更有甚者,当用户打开某个网页时直接跳转到其他的广告页面,这时用户就需要注意了,此时您的DNS可能已经被劫持,所以才造成的广告连天的情况,今天就为用户带来了Mac DNS被劫持解决教程,如果您遇到此问题,不妨试一试以下方法。方法/步骤1、首先,我们在Mac桌面中点击...

Centos安装snmp服务监测服务器资源(内网情况下)_snmp 官网 centos_今年下半年的博客-程序员宅基地

前言:因项目需要,对linux服务器及windows服务器进行服务器资源状态的监测,经过查阅资料,发现通过snmp监测不失为一种好的方式,且java有监测snmp的工具包,可以整合到springboot项目中使用。当前服务器资源在内网,是不能联网的,下面介绍离线的安装方法。一、准备文件准备好安装snmp服务需要的rpm包:perl-Data-Dumper-2.145-3.el7.x86_64.rpmnet-snmp-libs-5.7.2-28.el7_4.1.x86_64.rpmnet-

java8 .stream().filter() 代替嵌套for循环 lambda表达式_一勺菠萝丶的博客-程序员宅基地

public class TestController { @Data static class Car { private String name; private String color; } public static void main(String[] args) { List<Car> listCar1 = constructCar1(); List<Car> listC

[数学]------[多项式]-------快速傅里叶变换(FFT)_T_a_r_j_a_n的博客-程序员宅基地

快速傅里叶变换简介Fast Fourier TransformFast \ Fourier \ TransformFast Fourier Transform ,简称FFTFFTFFT。这东西似乎在数字通信领域有大用处:(EDA表示很感动)计算量小的显著的优点,使得FFT在信号处理技术领域获得了广泛应用,结合高速硬件就能实现对信号的实时处理。例如,对语音信号的分析和合成,对通信系统中实现全数字化的时分制与频分制(TDM/FDM)的复用转换,在频域对信号滤波以及相

推荐文章

热门文章

相关标签