网络抓包 DNS
环境 Windows10
释放网卡配置
指令 ipconfig /release
本机会发送给路由器一个包:
1 | |
DHCP 协议规范:
- 数字 1 = Discover(客户端寻找 DHCP 服务器)
- 数字 2 = Offer(服务器提供 IP 配置)
- 数字 3 = Request(客户端请求使用该 IP)
- 数字 5 = ACK(服务器确认授权)
- 数字 7 = Release(客户端释放 IP)
重新申请
指令 ipconfig /renew
情况一:之前刚执行过
release(当前网卡无 IP)
从头开始执行标准的 DHCP 四步握手:
- 广播发送 DHCP Discover(最先干的事):局域网广播.
- 电脑向局域网广播发送
DHCP Discover包(源 IP 为0.0.0.0,目标 IP 为255.255.255.255),大喊:“局域网里有 DHCP 服务器吗?我需要一个 IP!”
- 电脑向局域网广播发送
- 接收路由器回应的 DHCP Offer: 服务器响应.
- 路由器收到广播后,挑选一个可用 IP,向电脑发送
DHCP Offer包,表示:“我这里有一个 IP(例如 192.168.0.12)可以租给你。” - Offer 的发送方式(单播还是广播)取决于客户端在 Discover 里设置的 Bootp Flags(广播位)以及路由器的具体实现
- 路由器收到广播后,挑选一个可用 IP,向电脑发送
- 广播发送 DHCP Request: 请求确认.
- 电脑回应
DHCP Request包:“太好了,我决定申请使用这个 IP!”
- 电脑回应
- 接收 DHCP ACK 确认: 完成配置.
- 路由器发送
DHCP ACK包:“没问题,该 IP 正式租给你,配置已生效。”
- 路由器发送
情况二:当前网卡本身就有 IP(仅尝试续约/重刷新)
如果当前网卡已经拥有一个有效 IP,直接运行 renew
时,电脑不会从头广播
Discover,而是直接进行快速单播续约:
- 单播发送 DHCP Request(最先干的事): 定向单播.
- 电脑直接向原路由器 IP(如
192.168.0.1)发送单播DHCP Request包:“你好,我想继续使用我现在的 IP192.168.0.12,可以延长租约吗?” - 如果单播续约无响应,过段时间电脑会进入 Rebind 状态(尝试向全网广播 Request 寻找任何可用的 DHCP 服务器)如果单播续约无响应,过段时间电脑会进入 Rebind 状态(尝试向全网广播 Request 寻找任何可用的 DHCP 服务器)
- 电脑直接向原路由器 IP(如
- 接收路由器回应的 DHCP ACK: 续约成功.
- 路由器确认无冲突后,直接回复
DHCP ACK:“可以,租期已为你刷新。”
- 路由器确认无冲突后,直接回复
抓包内容
1 | |
在 RFC 2131 规范中,Option 53(DHCP Message Type) :
- 1 = Discover:客户端在局域网内寻找可用 DHCP 服务器(广播)。
- 2 = Offer:服务器回应客户端,提供可分配的 IP 地址及网络配置。
- 3 = Request:客户端向服务器申请使用(或续租)特定的 IP 地址。
- 4 = Decline:客户端发现分配给它的 IP 存在冲突(比如被其他设备占用了),拒绝使用该 IP。
- 5 = ACK:服务器确认授权,配置正式生效(分配成功)。
- 6 = NAK:服务器拒绝授权(比如请求的 IP 不在网段内或租约已失效)。例如:请求的 IP 冲突或不在该网段时,服务器拒绝该请求)。
- 7 = Release:客户端主动通知服务器释放当前使用的 IP 租约。
- 8 = Inform:客户端已有 IP,仅向服务器索取额外的网络配置(如 DNS、网关等)。
网络抓包 DNS
https://fu01.github.io/posts/15d86b46/