计算机网络-DHCP协议抓包分析总结
前置问题:什么是(网络)协议?
网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。
而且:
一个网络协议至少包括三要素:
语法:用来规定信息格式;数据及控制信息的格式、编码及信号电平等。
语义:用来说明通信双方应当怎么做;用于协调与差错处理的控制信息。
时序:定义了何时进行通信,先讲什么,后讲什么,讲话的速度等。比如是采用同步传输还是异步传输。
简单的来说,就是说话交流的过程,两方要说话,相互听得懂,那么得满足:
①:说的同一个语言(语法)
②:说的话表达了明确的意思(语义)
③:话讲的有条理,能被理解(时序)
清楚了这一点,我们就可以开始分析协议了。
主机申请IP:DHCP动态主机配置协议
①:客户端广播DHCP消息“Discover”
所有的服务器端都可以收到这个消息。
②:服务器提供租约“Offer”
所有的服务器端都会提供一个响应,Offer报文中“Your(Client) IP Address”字段就是服务器端能供使用的IP地址。
且服务器端会将自己的IP地址放在“option”字段中以便客户端区分不同的服务器端。
服务器端在发出此报文后会存在一个已分配IP地址的纪录。
③:客户端选择并请求租用“Request”
客户端只能处理其中的一个DHCP Offer报文,一般的原则是客户端处理最先收到的DHCP Offer报文,客户端会发出一个广播的DHCP Request报文,在选项字段中会加入选中的服务器端的IP地址和需要的IP地址
服务器端收到DHCP Request报文后,判断选项字段中的IP地址是否与自己的地址相同,如果不相同,服务器端不做任何处理只清除相应IP地址分配记录;如果相同,服务器端就会向客户端响应一个DHCP ACK报文,并在选项字段中增加IP地址的使用租期信息。
④:服务器确认将地址租用给客户端“ACK”
客户端接收到DHCP ACK报文后,检查服务器端分配的IP地址是否能够使用。如果可以使用,则客户端成功获得IP地址并根据IP地址使用租期自动启动续延过程;如果客户端发现分配的IP地址已经被使用,则客户端向服务器端发出DHCP Decline报文,通知服务器端禁用这个IP地址,然后客户端开始新的地址申请过程。
了解了DHCP协议的基本运行规则,就可以使用wireshack工具进行分析了。
Wireshack分析DHCP报文
在过滤器上输入bootp,显示如下

下面,我们通过抓包分析其报文,讲讲白话解释来理解一下DHCP的过程,DHCP的报文有以下基本格式:
但看这么一串僵硬的文字肯定不是很舒服,我们选取一些重要信息理解一下,我们把客户端向服务器端请求ip看作找工作的过程:
我们先看Discover阶段:
这段的意思,可以说是,一个用户要找工作,他往给网上的某个“招聘群”里发了一条消息,说“我要找工作!”

我们看到:
消息类型 :boot request(1),表示这条信息是“请求包”,请求包是客户端发出的;
bootp 标志 :其中第一位为 0 表示单播,为 1 表示广播,但是其是在从服务器发出的才有用,此处无用;
一系列 IP 地址 :都是 0.0.0.0,因为还没有确定;
MAC 地址 :显示了设备的 MAC 地址;
DHCP 消息类型 :表示了该条信息的类型。
再看Offer阶段:
这一段的意思,可以理解成,看到了这一个用户的消息,猎头们纷纷给该用户提供自己的工作环境信息和工资等。

和Discover阶段不同的是,我们看到消息类型变成了回复包、服务器向客户端的单播有了具体的地址,即设备的物理地址、在your (client) IP address中出现可以提供的地址,此外,在Option中还可以查看服务器端的子网掩码,域名等信息。
再看Request阶段:
这一阶段可理解为,用户接受了某个猎头提供的工作,并且告诉其他的猎头:“我找到工作了,不用再发offer了”。

这里还是广播,但是我们可以看到这边的已经将一系列信息,如:主机名称、申请的哪一个服务器、申请的ip等广播出去,收到的服务器就会停止发送offer,提供服务的服务器就会记录该客户端申请的地址。
最后是ack阶段:
相当于是客户跟着猎头去公司,签了个合同,就成功的入职了。

当服务器收到客户端回答的Request信息之后, 它便向客户端发送一个包含它所提供的IP地址和其他设置的Ack确认信息。以确认IP地址的正式生效。然后客户端便将其TCP/IP协议与网卡绑定,另外,除DHCP客户机选中的服务器外,其他的DHCP服务器都将收回曾提供的IP地址。
总结:

至于offer和ack阶段的目标地址到底是广播还是单播,可以参考一下博文:
https://www.zhihu.com/question/280872108?sort=created
计算机网络-DHCP协议抓包分析总结的更多相关文章
- dhcp协议抓包分析
dhcp协议 DHCP,动态主机配置协议,前身是BOOTP协议,是一个局域网的网络协议,使用UDP协议工作,常用的2个端口:67(DHCP server),68(DHCP client). wires ...
- 【计算机网络】wireshark抓包分析1
学习计算机网络很久了,但总是局限于书本知识,感觉get不到重点.经师兄建议用wireshark抓包分析看看. 我自己以前并没有做过抓包分析,所以这篇博文可能会有很多错误,只是我自己的一个记录,路过的亲 ...
- 网络协议抓包分析——TCP传输控制协议(连接建立、释放)
前言 TCP协议为数据提供可靠的端到端的传输,处理数据的顺序和错误恢复,保证数据能够到达其应到达的地方.TCP协议是面向连接的,在两台主机使用TCP协议进行通信之前,会先建立一个TCP连接(三次握手) ...
- 网络协议抓包分析——IP互联网协议
前言 IP协议是位于OSI模型的第三层协议,其主要目的就是使得网络间可以相互通信.在这一层上运行的协议不止IP协议,但是使用最为广泛的就是互联网协议. 什么是IP数据报 TCP/IP协议定义了一个在因 ...
- 网络协议抓包分析——ARP地址解析协议
前言 计算机之间可以相互通信的前提是要知道对方的地址,才可以发送信息给其他计算机,就像别人要联系你也得先知道你的电话号码一样.这里的地址因为网络分层的原因就包括IP地址和MAC地址(即网卡地址.硬件地 ...
- 【极客思考】计算机网络:Wireshark抓包分析TCP中的三次握手与四次挥手
[摘要]本文重点分析计算机网络中TCP协议中的握手和挥手的过程. [前提说明] 前段时间突然看到了一篇关于TCP/IP模型的文章,心想这段时间在家里也用wireshark抓了点包,那么想着想着就觉得需 ...
- ARP 协议抓包分析
ARP(Address Resolution Protocol)- 地址解析分析 ARP 协议是根据IP地址获取物理地址的一个TCP/IP协议. 当PC1 想与 PC2 进行通信时,需要同时知道PC2 ...
- 【计算机网络】wireshark抓包分析2
在分析1中,大概的看到了一个包中的信息.这里,看看这些包究竟在做什么 这是我的电脑跟某个网站交互的前4个包. 其中前三个包可以明显看出是TCP的三次握手. 那么,问题来了: 为什么第三个包的长度比前两 ...
- Wireshark数据抓包分析——网络协议篇
Wireshark数据抓包分析--网络协议篇 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGF4dWViYQ==/ ...
随机推荐
- 拉格朗日乘子法 Lagrange multipliers
- mysql-18-function
#函数 /* 存储过程:可以有0个或多个返回,适合批量插入.批量更新 函数:有且仅有一个返回,适合处理数据后返回一个结果 */ #一.创建语法 /* create function 函数名(参数列表) ...
- python 报错 wxPyDeprecationWarning: Using deprecated class PySimpleApp.
如题:python 报错 提示为 : wxPyDeprecationWarning: Using deprecated class PySimpleApp. 解决:将 wx.PySimpleApp() ...
- requests和正则表达式爬取猫眼电影Top100练习
1 import requests 2 import re 3 from multiprocessing import Pool 4 from requests.exceptions import R ...
- 【漏洞复现】Office远程代码执行漏洞(CVE-2017-11882)
昨晚看到的有复现的文章,一直到今天才去自己复现了一遍,还是例行记录一下. POC: https://github.com/Ridter/CVE-2017-11882/ 一.简单的生成弹计算器的doc文 ...
- 编程体系结构(07):JavaEE之Web开发
本文源码:GitHub·点这里 || GitEE·点这里 一.基础概念 1.CS与BS架构 CS架构模式 客户端/服务器(Client/Server)模式,既要编写服务器端程序,也要开发客户端程序,软 ...
- 【LGR-070】洛谷 3 月月赛-官方题解
本次免费为大家提供[LGR-070]洛谷 3 月月赛的官方题解,点个赞再走呗! 代码就不上了,大家可以到别的博客上去找找!希望这篇博客能对你有所帮助!
- ubuntu19.10 系统需要安装的软件
将ubuntu18 升级到ubuntu19 期间好几次卡在启动界面,比较担心要不要重装系统,有幸后来正常了.明显感觉操作快了不少.下半年稳定版就出来,到时候免不了再折腾一番,提前把安全记录做好. 下面 ...
- docker 和 k8s 调研总结
一. docker简介 环境配置 软件开发最大的麻烦事之一,就是环境配置.用户计算机的环境都不相同,你怎么知道自家的软件,能在那些机器跑起来? 用户必须保证两件事:操作系统的设置,各种库和组件的安装. ...
- Hudi on Flink在顺丰的实践应用
获取PDF版本 请关注"实时流式计算" 后台回复 "flink1015"