WireShark-DHCP
实验步骤
- 安装dhclient
1 | sudo apt install isc-dhcp-client -y |
- 另开一个终端,打开wireshark,选择eth0,在过滤器中输入bootp
1 | sudo wireshark |
- 在之前的终端中进行释放与获取ip
1 | sudo dhclient -r eth0 |
- 停止抓包,此时DHCP报文中有:discover offer ACK release request
实验截图
- 随便一个Discover包,点开User Datagram Protocol(1 2),点开Ethernet II(3),Dynamic Host Configuration Protocol(4)
- request包,点开Dynamic Host Configuration Protocol(4)
- 随便一个Discover包,在 Dynamic Host Configuration Protocol (Discover) 中,找到Transaction ID(5),展开 Internet Protocol Version 4(6)
- 在offer包中展开 Dynamic Host Configuration Protocol 下的 Options,查看Server Identifier(7)、Subnet Mask和Router(10),在Dynamic Host Configuration Protocol 找Your (client) IP address(8)、Relay agent IP address(9)
- request包,在optiion中找Requested IP Address(11)
- offer包,在option中找IP Address Lease Time(12)
- release包,Message type: Boot Request Option: (53) DHCP Message Type (Release) DHCP: Release (7) (13题)
- 删除过滤器中的bootp,查看是否有arp包
题目
- DHCP消息是通过UDP还是TCP发送的?
UDP - 画出客户端和服务器之间前四个DHCP报文(Discover/Offer/Request/ACK)交换的时序图。对于每个报文,标明源端口号和目的端口号。端口号是否与本实验示例中的相同?
自己画图
客户端使用端口68,服务器使用端口67(具体看自己的是多少)
端口号与实验示例完全相同 - 你主机的链路层(如以太网)地址是什么?
00:0c:29:69:6f:44 (VMware_69:6f:44)(具体看自己的是多少) - DHCP Discover消息中的哪些值将该消息与DHCP Request消息区分开?
特征 DHCP Discover DHCP Request Option 53 1 (Discover) 3 (Request) Option 54 不存在 存在 (192.168.178.254) Option 50 不存在 存在 (192.168.178.163) - 前四个DHCP消息(Discover/Offer/Request/ACK)中每个消息的Transaction-ID值是多少?第二组DHCP消息(Request/ACK)中的Transaction-ID值是多少?Transaction-ID字段的作用是什么?
报文组 Transaction ID 第一组Discover/Offer/Request/ACK 0x08ac956b 第二组Request/ACK 0xeda17e3e 第三组Discover/Offer/Request/ACK 0xa388fc7d Transaction-ID的作用:Transaction-ID是客户端生成的一个随机数,用于匹配DHCP请求和响应。客户端发送请求时生成一个xid,服务器在响应中返回相同的xid,客户端通过xid来识别哪些响应是对应自己的请求的,避免将其他客户端的响应误认为是自己的 - 主机使用DHCP来获取IP地址等配置。但主机的IP地址直到四次消息交换结束时才被确认!如果在四次消息交换结束前IP地址尚未设置,那么在这四次消息交换的IP数据报中使用了什么值?对于四个DHCP消息(Discover/Offer/Request/ACK),分别指明封装IP数据报中的源IP地址和目的IP地址
DHCP消息 源IP地址 目的IP地址 Discover 0.0.0.0 (本机无IP) 255.255.255.255 (广播) Offer 192.168.178.254 (DHCP服务器) 255.255.255.255 (广播) Request 0.0.0.0 (本机无IP) 255.255.255.255 (广播) ACK 192.168.178.254 (DHCP服务器) 255.255.255.255 (广播) - 你的DHCP服务器的IP地址是多少?
192.168.178.254 - DHCP服务器在DHCP Offer消息中向你主机提供的IP地址是多少?指出哪个DHCP消息包含所提供的DHCP地址
192.168.178.163。该地址出现在DHCP Offer报文中,并在DHCP ACK报文(Frame 68)的”Your (client) IP address”字段中得到确认 - 在本实验的示例截图中,主机和DHCP服务器之间没有中继代理。跟踪中的哪些值表明没有中继代理?你的实验中是否有中继代理?如果有,代理的IP地址是多少?
Relay agent IP address (giaddr)字段指示是否存在中继代理。当该字段为0.0.0.0时,表示没有中继代理
Relay agent IP address字段值为0.0.0.0,没有中继代理 - 解释DHCP Offer消息中router(路由器)和subnet mask(子网掩码)行的作用
子网掩码 (255.255.255.0):告诉客户端它所处网络的子网掩码,客户端使用它来判断目的IP地址是否在同一子网内。如果目的IP与自己在同一子网,客户端直接发送ARP请求;否则将数据包发送给默认网关
路由器/默认网关 (192.168.178.2):告诉客户端默认网关的IP地址。当客户端需要访问不同子网(如互联网)的主机时,会将所有出站数据包发送到这个网关地址,由网关负责转发 - 在脚注2提到的DHCP跟踪文件中,DHCP服务器向客户端提供了一个特定的IP地址(参见上面的问题8)。在客户端对DHCP服务器的响应中,客户端是否接受了这个提供的IP地址?在客户端的响应中,请求的IP地址在哪里被指明?
客户端接受了服务器提供的IP地址。在DHCP Request报文中,客户端通过 Option 50 (Requested IP Address) 字段指明请求的IP地址,值为 192.168.178.163 - 解释租约时间的目的。你的实验中租约时间是多长?
租约时间的作用:
指定客户端可以使用该IP地址的有效期
当租约到期时,客户端必须重新申请IP地址或续租
允许DHCP服务器回收不再使用的IP地址,有效利用有限的IP地址资源
租约时间:1800秒 (30分钟) - DHCP Release消息的作用是什么?DHCP服务器是否对客户端的Release请求发送确认?如果客户端的DHCP Release消息丢失了会发生什么?
DHCP Release消息的作用:
客户端主动通知DHCP服务器自己不再需要使用分配的IP地址
服务器收到后可以将该IP地址回收并重新分配给其他客户端
服务器是否发送确认:
不发送确认。DHCP服务器不对DHCP Release消息发送任何确认。这是UDP协议的”fire and forget”特性,Release消息只是单向通知
如果Release消息丢失:
服务器不知道客户端已经释放了IP地址
服务器会认为客户端仍在使用该IP地址
服务器等待租约时间(1800秒)到期后才会回收该IP地址
导致IP地址资源暂时浪费,但不会造成网络故障(因为客户端已经不再使用该IP) - 从Wireshark窗口中清除bootp过滤器。在DHCP报文交换期间是否有任何ARP包被发送或接收?如果有,解释这些ARP包的作用
有ARP报文被发送
作用:
检测IP地址冲突:客户端在获得IP地址 192.168.178.163 后,发送ARP请求询问 192.168.178.254(网关),确认自己的IP地址在网络中是否唯一。这是一种重复地址检测机制
获取网关的MAC地址:客户端需要通过ARP获取网关 192.168.178.254 的MAC地址,以便后续封装以太网帧并发送数据包到外网(互联网)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 QingMaxLim-Blog!









