计算机网络-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==/ ...
随机推荐
- mysql-10-union
#进阶10:联合查询 /* union联合 将多条查询语句的结果合并成一个结果 语法: 查询1 union 查询2 union 查询3 ... 应用场景:要查询的结果来自于多个表,且多个表没有直接的连 ...
- 008 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 02 Java 中的关键字
008 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 02 Java 中的关键字 关键字 关键字就是一些有特殊意义的词 之前学习的程序中涉及到的关键字 Java中 ...
- 005 01 Android 零基础入门 01 Java基础语法 01 Java初识 05 Eclipse简介
005 01 Android 零基础入门 01 Java基础语法 01 Java初识 05 Eclipse简介 Eclipse是一款集成开发工具--IDE. 集成开发环境(IDE,Integrated ...
- 06 解决Sublime Text3输入法不跟随的问题
安装原生的Sublime, 输入法是不会跟随Sublime的编译文件页面的,会失去焦点,这样写代码写文档时看起来会十分不方便,参考了一些资料,下载插件做了配置,已经在自己机器上用百度输入法测试成功,记 ...
- [POI2005]SAM-Toy Cars 贪心+堆
[POI2005]SAM-Toy Cars 题目:Jasio 是一个三岁的小男孩,他最喜欢玩玩具了,他有n 个不同的玩具,它们都被放在了很高的架子上所以Jasio 拿不到它们:为了让他的房间有足够的空 ...
- 计数,dic的创建方式,求九九乘法表
s1='char,python,nihao,ni,ni,python's=s1.split(',')print(s1)s2=list()for i in s: if i not in s2: s2.a ...
- NOIP提高组2016 D2T3 【愤怒的小鸟】
貌似还没有写过状压DP的题目,嗯,刚好今天考了,就拿出来写一写吧. 题目大意: 额,比较懒,这次就不写了... 思路分析: 先教大家一种判断题目是不是状压DP的方法吧. 很简单,那就是--看数据范围! ...
- VS2019 配置opencv4.4
安装VS2019 参考:链接 下载opencv 链接 下载此时的最新版4.4.0 最后"上墙"下,不然很慢! 安装opencv 我的安装位置是:D:\soft\opencv\ins ...
- http_parser
最近读了 http_parser 的源码,记录下. 有意思的地方: 1) 协议解析可以不完全解析完,但是当前 parser 会记录解析状态,这样可以继续解析 2) 协议解析首要还是要了解协议 ...
- ngx_align 值对齐宏
ngx_align 值对齐宏 ngx_align 为nginx中的一个值对齐宏.主要在需要内存申请的地方使用,为了减少在不同的 cache line 中内存而生. // d 为需要对齐的 // a 为 ...