实验步骤

  1. 安装dhclient
1
sudo apt install isc-dhcp-client -y 
  1. 另开一个终端,打开wireshark,选择eth0,在过滤器中输入bootp
1
sudo wireshark
  1. 在之前的终端中进行释放与获取ip
1
2
3
4
5
6
sudo dhclient -r eth0
sudo dhclient eth0
sudo dhclient -r eth0
sudo dhclient eth0
sudo dhclient -r eth0
sudo dhclient eth0
  1. 停止抓包,此时DHCP报文中有:discover offer ACK release request

实验截图

  1. 随便一个Discover包,点开User Datagram Protocol(1 2),点开Ethernet II(3),Dynamic Host Configuration Protocol(4)
  2. request包,点开Dynamic Host Configuration Protocol(4)
  3. 随便一个Discover包,在 Dynamic Host Configuration Protocol (Discover) 中,找到Transaction ID(5),展开 Internet Protocol Version 4(6)
  4. 在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)
  5. request包,在optiion中找Requested IP Address(11)
  6. offer包,在option中找IP Address Lease Time(12)
  7. release包,Message type: Boot Request Option: (53) DHCP Message Type (Release) DHCP: Release (7) (13题)
  8. 删除过滤器中的bootp,查看是否有arp包

题目

  1. DHCP消息是通过UDP还是TCP发送的?
    UDP
  2. 画出客户端和服务器之间前四个DHCP报文(Discover/Offer/Request/ACK)交换的时序图。对于每个报文,标明源端口号和目的端口号。端口号是否与本实验示例中的相同?
    自己画图
    客户端使用端口68,服务器使用端口67(具体看自己的是多少)
    端口号与实验示例完全相同
  3. 你主机的链路层(如以太网)地址是什么?
    00:0c:29:69:6f:44 (VMware_69:6f:44)(具体看自己的是多少)
  4. 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)
  5. 前四个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来识别哪些响应是对应自己的请求的,避免将其他客户端的响应误认为是自己的
  6. 主机使用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 (广播)
  7. 你的DHCP服务器的IP地址是多少?
    192.168.178.254
  8. DHCP服务器在DHCP Offer消息中向你主机提供的IP地址是多少?指出哪个DHCP消息包含所提供的DHCP地址
    192.168.178.163。该地址出现在DHCP Offer报文中,并在DHCP ACK报文(Frame 68)的”Your (client) IP address”字段中得到确认
  9. 在本实验的示例截图中,主机和DHCP服务器之间没有中继代理。跟踪中的哪些值表明没有中继代理?你的实验中是否有中继代理?如果有,代理的IP地址是多少?
    Relay agent IP address (giaddr)字段指示是否存在中继代理。当该字段为0.0.0.0时,表示没有中继代理
    Relay agent IP address字段值为0.0.0.0,没有中继代理
  10. 解释DHCP Offer消息中router(路由器)和subnet mask(子网掩码)行的作用
    子网掩码 (255.255.255.0):告诉客户端它所处网络的子网掩码,客户端使用它来判断目的IP地址是否在同一子网内。如果目的IP与自己在同一子网,客户端直接发送ARP请求;否则将数据包发送给默认网关
    路由器/默认网关 (192.168.178.2):告诉客户端默认网关的IP地址。当客户端需要访问不同子网(如互联网)的主机时,会将所有出站数据包发送到这个网关地址,由网关负责转发
  11. 在脚注2提到的DHCP跟踪文件中,DHCP服务器向客户端提供了一个特定的IP地址(参见上面的问题8)。在客户端对DHCP服务器的响应中,客户端是否接受了这个提供的IP地址?在客户端的响应中,请求的IP地址在哪里被指明?
    客户端接受了服务器提供的IP地址。在DHCP Request报文中,客户端通过 Option 50 (Requested IP Address) 字段指明请求的IP地址,值为 192.168.178.163
  12. 解释租约时间的目的。你的实验中租约时间是多长?
    租约时间的作用:
    指定客户端可以使用该IP地址的有效期
    当租约到期时,客户端必须重新申请IP地址或续租
    允许DHCP服务器回收不再使用的IP地址,有效利用有限的IP地址资源
    租约时间:1800秒 (30分钟)
  13. 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)
  14. 从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地址,以便后续封装以太网帧并发送数据包到外网(互联网)