您的当前位置:首页正文

通信网络基础抓包作业答案

2020-08-08 来源:客趣旅游网


网络协议数据获取与TCP/IP协议分析

一、 实验环境介绍

网络接入方式:校园网宽带接入,IP获取方式:DHCP;

操作系统为windows7旗舰版;

本机MAC地址为5c:f9:dd:70:6a:89,IP地址为10.104.5.53。

图1 网络状态截图

二、实验步骤

1. 启动wireshark;

2. 启动一个网页浏览器,并键入一个URL地址,如:www.baidu.com。注意此时不要按下回车键;

3. 清除电脑中的DNS缓存,启动wireshark,开始抓包;

4. 在浏览期网页位置按下回车键,开始访问指定的网页。

5. 一旦网页内容下载完毕,立即停止Microsoft Network Monitor抓包,并将抓到的数据包存入文件中,同时将显示的网页存储下来,以便后面参考。

三、实验过程

使用wireshark前清除DNS缓存截图如下。

图2 清除DNS缓存

抓取协议如下图所示:

图3 抓取协议

四、协议分析

1. 抓取的协议类型

检查在Microsoft Network Monitor顶端窗口的协议一列,确认你已经抓到了DNS、TCP和HTTP数据包。

答:由图3可看出抓到了DNS、TCP、HTTP数据包。

2. 以太网帧,IP分组和UDP数据报

(1) 检查客户端发出的第一个DNS分组

a.确定客户端的以太网地址和IP地址

答:如图4,客户端的MAC地址为5c:f9:dd:70:6a:89;

IPv4地址为:10.104.5.53。

b.以太网帧结构的TYPE字段是什么内容?

答:如图所示,以太网帧结构的TYPE字段为:0x0800,表示该帧是IP协议。

c.目的以太网地址和目的IP地址分别是什么?这些地址对应哪些计算机?解释这些结

果与你连接到Internet 的计算机有关系。

答:目的以太网地址:00: 0f:e2:d7:ef:f9,目的IP地址:10. 0. 0.10

对应的计算机:以太网地址对应要访问的www.bitren.com的源地址,IP地址是本地局域网域名服务器的IP地址。因为我们访问网络时用的是域名,只有经过域名服务器经过域名解析得到要访问的网络IP地址,才能进行交换数据。不同的局域网的域名服务器IP地址不同。

图4 dns分组

(2)检查客户端发出的第一个DNS分组的IP报头

a 包头的长度是多少?分组的总长度是多少?

b 确定协议类型字段。载荷数据中协议的编号和类型是什么?

图5 IP报头

答:报头的长度是20 bytes,分组的总长度是60bytes。

协议类型字段如图所示0x11,协议编号为17,类型为UDP。

3). 检查客户端发出的第一个DNS分组的UDP报头

a. 确定客户端临时端口号和服务器端的默认端口号。载荷数据中应用层协议的类型是什么?

b. 确定UDP报头中的长度字段是否与IP报头长度信息一致。

图6 UDP报头

由图6知,客户端临时端口号为62063,服务器端的默认端口号为53。

UDP报头中的长度字段为40bytes,根据40+20(IP报头长度)=60(IP分组总长度),故UDP报头中的长度字段与IP报头长度信息一致。

4) 画出客户端和服务器端从数据链路层到应用层的协议栈,并解释为什么各层的PDU内容能够使得应用层的进程之间实现端到端通信。

DNSUDPIPEthernetDNSUDPIPEthernet客户端服务器 图7 客户端和服务器端从数据链路层到应用层的协议栈

实现各层的PDU内容能够使得应用层的进程之间实现端到端通信的原因是网络分层,每一层都会为从上一层接收到的信息块添加一个报头和报尾。在目标端,每一层都读出与其对应的头部,并决定采取何种操作,将数据头部和尾部去掉,最终将数据块提交给上一层。

3.DNS

1)检查客户端发送的DNS分组中的DNS查询报文

a)哪个字段表明这个报文是DNS查询还是响应?

b)查询的正文中传送什么信息?

c)查询的交互ID是什么?

d)确定查询的类型与级别的字段

图8 DNS报文

a 查询正文中flags第一位为0,表明此DNS分组为查询报文。

b type A表示查询是由域名查找IP地址;Class:Internet(0x1)是指Internet数据;Name指要查询域名。

c 查询的交互ID是0x64FC。

d 类型字段Type:A(0x1),级别字段Class:Internet(0x1)。

2)现在检查对上述查询的DNS响应的分组

a)这个分组中的以太网地址和IP地址应当是什么?检验这些地址是正确的

b)传送DNS响应的IP分组和UDP数据报的大小是多少?是否比查询的长?

c)确定在响应报文中的交互ID是正确的。

d)在响应报文中提供了多少个答案?比较这些答案及其TTL值。

图9 DNS报文

a 目的以太网地址:00: 0f:e2:d7:ef:f9,目的IP地址:10. 0. 0.10,显然是正确的。

b IP分组的长度124bytes,UDP数据报大小是104bytes,要比查询的长。

c 响应报文中的交互ID是0x64FC,与查询的交互ID相同。

图10 DNS nameservers

在响应报文中共提供了2个答案,分别是dns13.hichina.com和dns14.hichina.com,TTL分别都是40分49秒。

4 TCP 三次握手

1)确定http客户端和服务器端建立廉洁的三次握手的第一个TCP分段的帧结构。

a)在这个分段中你期望看到哪个源端以太网地址和IP地址?你期望看到的协议和类型字段是什么内容?确认这些地址是正确的。

b)解释在第一个TCP分段中的目的以太网地址和IP地址的值。这些地址对应什么计

算机?

c)确定客户端使用的临时端口号,确认使用的默认端口号是HTTP默认的。

d)TCP分段的长度是多少?

e)客户端到服务器端分段的初始序列号是多少?初始窗口大小是多少?最大分段尺寸是多少?

f)找到包含SYN标志的十六进制字符。

图11 TCP三次握手第一次

A)期望看到客户端的MAC地址和IP地址,期望看到的协议和类型字段是IP(0x08000)。如图由此可确认地址的正确性。

B)目的以太网地址为:00: 0F:E2:D7:EF:F9,它是服务器的MAC地址,IP地址为:10.1.10.253,它是服务器的IP地址。

图12 TCP三次握手第一次续图

C)客户端使用的临时端口号为6358,Destination Port为80,是http默认端口号。

D) TCP分段的长度为32.

E)分段的初始序列号:0;初始窗口大小:8192bytes;最大分段尺寸:1460bytes。

F)SYN标志如图所示。

2)确定三次握手中的第二分段

a)第一和第二分段抓取的时间差是多少?

b)在检查分组数据之间,先确定以下字段的值

以太网帧的源地址和目的地址以及类型字段

IP分组中的源IP地址和目的IP地址及其端口号

TCP分段中的ACK序列号

各个标识位的值

确认帧结构中包含期望的数据

c)TCP分段的长度是多少?

d)从服务器端到客户端连接的初始序列号是多少?最大分段尺寸是多少?

图13 TCP三次握手时间差

A) 时间差为2.56424-2.563638=0.00602S

B) 见图14.

图14 TCP三次握手第二阶段

C) TCP分段长度为32byte

D)服务器端到客户端连接的初始序列号:0x4D4Dfe30;最大分段尺寸: 1460bytes。

图15 TCP三次握手第二阶段续图

3)确定三次握手中的最后一个分段

a)从第二分段到最后分段的时间差是多少?将此时间差与第一与第二分段的时间差相比较,解释其中的原因

b)确定最后TCP分段的以下值

序列号和ACK序列号

标志比特的值以及窗口尺寸

确认分段中包含期望的数据

c)最后一个分段的长度是多少?

A)

图16 TCP三次握手时间差

时间差为2.564286 -2. 56424=0.000046S

B)

图17 TCP三次握手第三阶段

序列号1,窗口尺寸16425。

C) TCP长度为20byte。

5. HTTP GET 报文

1) 确定包含HTTP GET报文的数据帧

a) 确认TCP报头中的序列号和ACK号是预期的。

b) 解释TCP报头中的标识位。你是否能够解释为什么有两位被置位了?

c) TCP分段及载荷的长度分别是多少?

图18 http报文1

A) 序列号为1,是预期序列号

B) TCP报头中的标识位如图18。ACK置位表示确认号有效,握手过程有确认,所以ASK置位。PSH置位,它用来通知接收TCP模块立即将数据传递到应用程序。因为http属于应用程序,所以PSH置位。

C) 载荷的长度为746-20=726。

2) 现在考察GET报文的内容

a) 将Wireshark软件的第三个窗口向下滚动,将解码的内容与第二个窗口中的HTTP报文进行比较;

图19 http报文2

b) 数一数报文中的字节数,确认这个数值与TCP报头中的长度信息一致;

报文中的字节数总共为726bytes,与TCP报头中的长度信息一致。

c) 来自服务器的下一个分段期望的下一个序列号应当是多少?

图20 http报文3

6.HTTP Response

1).确定HTTP GET报文与对应的响应报文之间的时间差是多少?

图21 http报文时间差

2.575514-2.565166=0.010348

2).确定服务器是采用HTTP响应报文还是采用简单的TCP ACK分段进行应答。确认来自服务器的分段的序列号是期望的值。

答:采用HTTP响应报文,ACK分段应答。

图22 http报文

3).现在考察HTTP响应报文的分段

a)包含TCP分段的载荷长度是多少?

包含的TCP分段的载荷长度是1460bytes。

b)检查标志是否有置位,并解释为什么置位?

PSH置位是要求客户端将接受到的HTTP数据立即显示。

图23 标志位

c)来自客户端的下一个分段期望的下一个ACK序列号应当是多少?

图24 下一个ACK

下一个序列号是9410。

4).现在考察HTTP响应报文

a)响应报文的结果码是多少?

图25 HTTP响应报文

b)点亮HTTP响应报文中的“数据”部分。将Wireshark软件的第三个窗口向下滚动,将网页解码的内容与屏幕上显示的内容进行比较。

图26 HTTP响应报文

五、实验小结:

通过本次实验,抓取并且分析了DNS,TCP,HTTP有关数据包。学会了如何运用自己所学的知识与实践相结合,把知识运用到所抓包的分析中,通过逐个包逐层的分析,充分了解网络协议的层次结构,及IP地址与端口号如何在一起协调工作,完成端到端的应用。

实验中有几点要注意:

1、在抓取dns包之前需要清空dns缓存。否则计算机中存储的dns记录会导致访问的时候不需要获得dns服务,也就是无法抓取dns协议。

在开始抓包之前,一定要先启动一个网页浏览器,并键入所选择的URL地址,注意此时不要按回车键,而后启动wireshark开始抓包,并在浏览器网页位置按下回车键,开始访问指定的网页,当网页打开下载完毕后,立刻停止Microsoft Network Monitor抓包。否则无法抓取到DNS数据包,在抓取到的众多包中,要认真筛选需要的数据包。

因篇幅问题不能全部显示,请点此查看更多更全内容