图2 Parameter Request List
位逻辑与运算”从而得出网络地址。所有可以直接通信而不需要路由器参与的机器都有相同的网络地址。因此,子网掩码用来决定数据报是发送到本地路由器还是直接发送到本地目的主机。
客户端还必须知道它们的域名和它们在本地域名服务器上的标识。域名是一个可读的网络名。
IP地址为192.168.0.1的DHCP服务器回复了一个DHCP OFFER报文。该报文也广播到255.255.255.255,因为尽管客户端还不知道自己的IP地址,但它将接收到发送到广播地址的报文。这个报文中包含了客户端请求的信息,包括IP地址、本地路由器、子网掩码、域名和本地域名服务器。
在分组5中,客户端通过发送DHCP Request(请求)报文表明自己接收到的IP地址。最后,在分组6中DHCP服务器确认请求的地址并结束对话。此后,在分组7中客户端开始使用它的新的IP地址作为源地址。
在分组3和分组7到12的地址ARP协议引起了我们的注意。在分组3中,DHCP服务器询问是否有其它主机使用IP地址192.168.0.100(该请求被发送到广播地址)。这就允许DHCP服务器在分配IP之前再次确认没有其它主机使用该IP地址。在获取其
11
IP地址之后,客户端会发送3个报文询问其他主机是否有与自己相同的IP地址。前4个ARP请求都没有回应。在分组10—13中,DHCP服务器再次询问哪个主机拥有IP地址192.168.0.100,客户端两次回答它占有该IP同时提供了自己的以太网地址。
通过DHCP分配的IP地址有特定的租用时间。为了保持对某个IP的租用,客户端必须更新租用期。当输入第二个命令ipconfig /renew后,在分组14和15中就会看到更新租用期的过程。DHCP Request请求更新租用期。DHCP ACK包括租用期的长度。如果在租用期到期之前没有DHCP Request发送,DHCP服务器有权将该IP地址重新分配给其他主机。
最后,在分组16时输入命令ipconfig /release后的结果。在DHCP服务器接收到这个报文后,客户停止对该IP的使用。如有需要DHCP服务器有权重新对IP地址进行分配。
2、分析IPv4中的分片
在第二个实验中,我们将考察IP数据报首部。俘获此分组的步骤如下: (1) 启动Wireshark,开始分组俘获(“Capture”-----“interface…”----“start”)。 (2) 启动pingplotter(pingplotter 的下载地址为www.pingplotter.com),在“Address to trace:”下面的输入框里输入目的地址,选择菜单栏“Edit”---“Options”---“Packet”,在“Packet size(in bytes defaults=56):”
右边输入IP数据报大小:5000,按下“OK”。最后按下按钮“Trace”,你将会看到pingplotter窗口显示如下内容,如图3所示:
12
图3 ping plotter
(3) 停止Wireshark。设置过滤方式为:IP,在Wireshark窗口中将会看到如下情形,如图4所示。
在分组俘获中,你应该可以看到一系列你自己电脑发送的“ICMP Echo Request”和由中间路由器返回到你电脑的“ICMP TTL-exceeded messages。
13
图4 用Wireshark 所俘获的分组
(4) 如果你无法得到上图的分组信息,也可使用已经下载的IP分片分组文件:fragment_5000_isolated.cap。然后在Wireshark中,选择菜单栏“File”---“Open”导入上述文件进行学习。
下面,我们来分析fragment_5000_isolated.cap中的具体分组:
IP层位于传输层和链路层之间。在fragment_5000_isolated.cap中传输层协议是UDP,链路层协议是以太网。发送两个UDP数据报,每个包含5000个字节的数据部分和8字节的UDP首部。在分组1到4和分组5到8分别代表了先后发送的两个UDP数据报。
当IP层接收到5008字节的UDP数据报时,它的工作是将其作为IP数据报在以太网传输。以太网要求一次传输的长度不大于1514个字节,其中有14字节是以太网帧首部。
IP被迫将UDP数据报作为多个分片发送。每个分片必须包含以太网帧首部、IP数据报首部。每个分片还会包含UDP数据报的有效负载(首部和数据)的一部分。
IP将原始数据报的前1480个字节(含1472个字节的数据和含8个字节的UDP首部)放在第一个分片中。后面两个分片每个均含1480个字节的数据,最后一个分片中包含的数据为568个字节)。
14
为了让接收段重组原始数据,IP使用首部的特殊字段对分片进行了编号。标识字段用于将所有的分片连接在一起。分组1到4含有相同的标识号0xfd2b,分组5到8的标识号是0xfd2c.片漂移量指明了分组中数据的第一个字节在UDP数据报中的偏移量。例如分组1和分组5的偏移量都是0,因为它们都是第一个分片。
最后在标识字段中有一位用来指明这个分片后是否还有分片。分组1到分组3和分组5到分组7均对该位置进行了置位。分组4和分组8由于是最后一个分片而没有对该位置位。
四、实验报告内容
打开文件dhcp_isolated.cap、fragment_5000_isolated.cap,回答以下问题: 1、DHCP服务器广播的本地路由器或默认网关的IP地址是多少? 2、在dhcp_isolated.cap中,由DHCP服务器分配的域名是多少?
3、在fragment_5000_isolated.cap中,我们看到通过UDP数据报发送的5000字节被分成了多少分片?在网络中,一次能传输且不需要分片的最大数据单元有多大?
15