利用Wireshark分析网络协议-计网实验
一、实验目的
- 加强对计算机网络通信协议的理解,用理论知识解决实际问题。
- 学习Wireshark的基本操作,抓取和分析有线局域网的数据包,熟悉一些应用层命令和协议。
- 通过运用Wireshark对网络活动进行分析,观察TCP协议报文,分析通信时序,理解TCP的工作过程,掌握TCP工作原理与实现;学会运用Wireshark分析TCP连接管理、流量控制和拥塞控制的过程,发现TCP的性能问题。
二、实验任务
(一)应用层协议分析
- 学会使用Wireshark抓包软件,会使用过滤器。
- 学习Wireshark基本操作:重点掌握捕获过滤器和显示过滤器。分析HTTP和DNS协议。
- 测试curl命令,访问一个web页面。(选做)
- 利用telnet命令测试get命令,访问www.baidu.com。(选做)
- 利用telnet命令测试SMTP服务,解析其过程。(选做)
- 测试tracert命令,并解析其过程。
- 使用nslookup查询域名信息,简要分析。
(二)传输层协议分析
- TCP数据流的追踪。
- TCP连接的建立。
- TCP连接的终止。
- TCP 连接的重置。
- 两台实验机本地相互连接,在实验机中仿真不同的网络条件,观察TCP的各种控制现象。(选做)
三、实验内容(含解析)
(一) 应用层协议分析
1. 学会使用Wireshark抓包软件,会使用过滤器。
(1)打开捕获过滤器
(2)正在捕获抓包
(3)过滤掉 Packet List 中所有的 ARP 数据包(显示过滤器的使用)
2. 分析HTTP和DNS协议。
(1) 设置过滤条件HTTP,开始抓包
此时选取一条进行报文分析:
该包为请求包,下面条形框为它的响应包
请求报文的结构为
若是响应包,则其响应报文结构为
如下图
(2) 分析DNS
设置过滤条件DNS,开始抓包:
分析编号为73的请求包:
可以发现DNS为应用层协议,下层传输层采用UDP,再下层网络层是IP协议,然后是数据链路层的以太网帧。
第一个是Transaction ID为标识字段,2字节,用于辨别DNS应答报文是哪个请求报文的响应:0x1b43
第二个是Flags标志字段,2字节,位数的含义如下:
QR: 查询/响应,1为响应,0为查询:例子中为查询
Opcode: 查询或响应类型,这里0表示标准,1表示反向,2表示服务器状态请求
AA: 授权回答,在响应报文中有效
TC: 截断,1表示超过512字节并已被截断,0表示没有发生截断:例子中已被截断
RD: 是否希望得到递归回答
RA: 响应报文中为1表示得到递归响应:例子中未得到
zero: 全0保留字段
rcode: 返回码
Quetions(问题数),2字节,通常为1
Answer RRs(资源记录数), Authority RRs(授权资源记录数), Additional RRs(额外资源记录数)通常为0
字段Queries为查询或者响应的正文部分,分为Name Type Class
Name(查询名称):这里是ping后的参数,不定长度以0结束
Type(查询类型):2字节,这里是主机A记录
Class(类):2字节,IN表示Internet数据,通常为1
分析响应包:
响应包多出了一个Answers字段,同时Flags字段每一位都有定义。Flags中Answer RRs 为1说明对应的Answers字段中将会出现1项解析结果。
Answers字段可以看成一个List,集合中每项为一个资源记录,除了上面提到过的Name,Type,Class之外,还有Time to Live, Data length, Addr。
Time to Live(生存时间TTL):表示该资源记录的生命周期,从取出记录到抹掉记录缓存的时间,以秒为单位。合计289s。
Data length(资源数据长度):以字节为单位,这里的4表示IP地址的长度为4字节.也就是下面Addr字段的长度.
Addr(资源数据): 返回的IP地址,就是我们想要的结果.
3. 测试tracert命令,并解析其过程。
观察ICMP数据包可得:
Type: 该字段有 1 个字节,表示特定类型的 ICMP 报文。
一台主机向一个节点发送一个类型字段值为8的ICMP报文,如果途中没有异常(如果没有被路由丢弃,目标不回应ICMP或者传输失败),则目标返回类型字段值为0的ICMP报文,说明这台主机存在。
Code: 该字段有 1 个字节,进一步细分 ICMP 的类型。如上图所示,Type 的值为 8,Code 的值为 0,表示回显请求。
Checksum: 该字段有 2 个字节,表示校验和。
Identifier: 该字段有 2 个字节,用于匹配 Request/Reply 的标识符。
Seq Num: 该字段有 2 个字节,用于匹配 Request/Reply 的序列号。
Data: 数据载荷。
粉色为Tracert发送的数据包,黑色为Tracert接受的数据包。TTL=5时,源地址收到了目的地址的ICMP回应答复(ICMP Echo Reply),说明源地址经过了5跳到达目的地址,与终端显示信息相符。
4. 使用nslookup查询域名信息,简要分析。
图中报文查询名为:www.baidu.com,查询类型为:A(IPv4地址),查询类为:IN(Internet数据)。
(二) 传输层协议分析
1. TCP数据流的追踪。
2. TCP连接的建立与终止时序图
3. TCP报文分析。
客户端发起连接请求的报文 第一条报文
首先,客户端想服务器发起连接请求,通过 wireshark 抓包工具,可以清楚的解析出 TCP 报文首部的所有字段值:
Source Port: 来源端口,也就是浏览器发出请求连接的端口55294
Destination Port: 80,也就是默认 HTTP协议的响应端口80
Sequence number: 0,这个序号是 wireshark 做的相对当前 TCP 建立连接的序号,不是真实的序号
Sequence number (raw): 3283466062,这个序号才是真实的 TCP 报文首部的序号,也就是seq = 3283466062,接下来的请求只看这个的变化
Acknowledgment number: 0,确认号
Flags: 也就是控制位部分,可以看到此时的标志位是SYN是1;而确认连接控制位ACK是0
4. TCP 连接的重置。
四、实验总结
本次实验完成后对wireshark的使用更加熟悉,掌握抓包,过滤器等的使用方法。分析了传输层和应用层协议和报文。第二个实验TCP三次握手,四次挥手在分析报文的过程中加深了对TCP传输过程的了解。