计算机网络 实验三 数据包抓取与分析

实验目的

1、 学习安装、使用协议分析软件。
2、掌握基本的数据报捕获、过滤和协议的分析技巧,能对抓取数据包进行分析。

实验环境

使用 Windows 操作系统;具备 Internet 连接。抓包软件 Wireshark。

实验内容

1、协议分析软件的安装和使用。
2、学会抓取数据包的方法并对对抓取数据包进行分析。

实验步骤

1、打开 Wireshark 程序执行抓包,访问深大外网网站 https://www.szu.edu.cn/。
2、抓包并分别分析 DNS、HTTP、TCP、UDP 数据包。
3、结合层次结构,截图给出各协议的封装和含义。
4、给出 TCP、UDP、IP 和 EthernetII 协议头部大小,结合抓取的数据包分析有效载荷

实验结果

1. Wireshark软件使用

  如图 1所示,打开Wireshark软件,选择想要监听的网卡。   若能正常返回响应,且用时和丢包率均不高,说明能与目标主机正常通信。

在这里插入图片描述
   如图 2所示,启动抓包,在过滤器部分选择想要抓取的封包,对数据进行过滤。

在这里插入图片描述
  最上面一栏分别显示的是封包编号、抓取时间,源地址和目标地址,所用协议、数据包长度与数据包信息。

  双击封包或查看界面下方,可查看该封包每层结构的具体信息。如图 3所示包括:
  1、Frame物理层数据帧信息,物理层封装将数据帧转换成电信号,并通过物理网络传输到目标计算机。
  2、Ethernet II: 数据链路层以太网帧头部信息,数据链路层封装将 DNS 数据报封装成数据帧,以便在物理网络上传输。
  3、Internet Protocol Version 4: 互联网层IP包头部信息,网络层封装使用 IP(Internet Protocol)协议将 DNS 数据报从传输层传输到数据链路层。
  4、Transmission Control Protocol: 传输层T的数据段头部信息,传输层封装使用 UDP或 TCP将 DNS 数据报从应用层传输到网络层。
  5、Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议,应用层封装负责将应用程序中的 DNS 请求封装成 DNS 协议格式的数据报,然后通过网络发送到 DNS服务器。

在这里插入图片描述

2 DNS分析

2.1 DNS简介

  DNS(Domain Name System,域名系统)协议是一个分布式的命名系统,它用于将域名转换为IP地址。DNS协议在网络协议栈中位于应用层,一般使用UDP协议在传输层进行通信。当返回的数据量较大时,为确保数据的可靠性,就需要使用TCP协议进行通信。

2.2 DNS层级概述

  DNS在应用层添加DNS头部,使其成为DNS消息进行传输,头部长度一般为12字节,包括以下字段:
  1、标识(16 bit):用于标识查询消息和响应消息之间的关系。
  2、标志(16 bit):包括查询/响应标志、操作码、授权回答标志、递归查询标志等。
  3、问题数(16 bit):指定DNS消息中包含的查询数量。
  4、回答数(16 bit):指定DNS消息中包含的响应数量。
  5、权威记录数(16 bit):指定DNS消息中包含的权威记录数量。
  6、附加记录数(16 bit):指定DNS消息中包含的附加记录数量。

2.3 DNS内容分析

  打开Wireshark软件监听,访问深大外网网站https://www.szu.edu.cn/。访问网站,首先网站域名要经过DNS服务器解析IP。
  如图 5所示,通过过滤,我们可以看到有两组DNS封包与szu.edu.cn有关。
  其中一组是A类型,提供域名到IPv4地址的映射;另一组是AAAA类型,提供域名到IPv6地址的映射。

在这里插入图片描述
  以本机服务器向DNS服务器发出A类域名解析请求为例。如图 5数据报解读如下:
  1、Frame物理层可以看到数据包总长度为74字节(592比特)。
  2、EthernetII数据链路层的头部大小为14字节,其中12字节分别表示源和目的的地址,2字节表示类型。可以看到数据源地址在名为Dell的主机上,目的地在杭州的服务器。
  3、IP网络层的头部大小为20字节,其中8个字节存储了主机IP和DNS服务器IP,DNS服务器地址为114.114.114.114,使用的协议为Ipv4。
  4、Protocol传输层的头部大小为8字节,主机端口为51179,DNS服务器端口为53,使用的协议为UDP。
  5、应用层存储了该请求报文的主要信息,长度为32字节,其内容另外解读。

在这里插入图片描述
  应用层内容解读:
  1、Transaction ID:0xacda 标识字段;
  2、Response:0,标准DNS查询请求;
  3、Truncated:0,没有发生截断;
  4、Recursion desired:1,期望得到递归回答;
  5、查询域名:www.szu.edu.cn
  如图 6可见本机向DNS服务器发出了一条ID为0xacada、没有被截断、期望得到递归回答的标准DNS查询请求,所查询的域名为www.szu.edu.cn。

在这里插入图片描述
  根据最下方的Response,我们可以看到DNS服务器的回复报文在1584条。如图 7所示,其回复内容(应用层)解读如下:
  1、Transaction ID:0xacda 标识字段,和请求报文一致;
  2、Response:1,标准DNS回复报文;
  3、Reply code:0,没有发生错误;
  4、Recursion available:1,服务器可以做递归查询;
  5、查询域名:www.szu.edu.cn
  6、域名解析结果Addr:210.39.4.1,数据长度为4个字节。
  可见DNS服务器向本地服务器发出了一条没有错误、递归查询的DNS查询答复,所查询的域名为www.szu.edu.cn,解析出来的IP地址为210.39.4.1。

  DNS服务器成功查询所需域名对应的IP地址,并成功发回了本机服务器。

在这里插入图片描述

3. TCP分析

3.1 TCP简介

  TCP(Transmission Control Protocol,传输控制协议)是一种基于连接的、可靠的、面向字节流的传输协议。TCP在互联网协议族中属于传输层协议,是因特网的核心协议之一。TCP是一种可靠的数据传输协议,通过建立连接、数据分段和确认、重传机制、流量控制和拥塞控制等机制来确保数据的可靠传输。

3.2 TCP通信建立

  TCP协议建立通信需要进行三次握手,具体步骤如下:

  第一次握手:客户端发送SYN(同步)数据包给服务器端,请求建立连接。SYN包中会包含客户端的初始序列号。客户端进入SYN_SEND状态,等待服务器端的确认。

  第二次握手:服务器端收到客户端发送的SYN数据包后,发送一个SYN+ACK(同步和确认)数据包给客户端,表示同意建立连接。SYN+ACK包中会包含确认号和服务器端的初始序列号。服务器端进入SYN_RECV状态,等待客户端的确认。

  第三次握手:客户端收到服务器端发送的SYN+ACK数据包后,向服务器端发送一个ACK(确认)数据包,确认连接已建立。ACK包中包含客户端的序列号和确认号。客户端进入ESTABLISHED状态,服务器端也进入ESTABLISHED状态,TCP连接建立完成。

  经过三次握手之后,双方就可以开始进行数据的传输了。

3.3 TCP封装分析

  TCP在传输层为数据包加上20字节的TCP头,包含源端口和目标端口的信息,以及一些控制标志。用于实现可靠的传输和流控制。分别是:
  1、源端口号(16 bit):标识发送端的应用程序使用的端口号。
  2、目的端口号(16 bit):标识接收端的应用程序使用的端口号。
  3、序列号(32 bit):用于对发送的数据进行编号,以便接收端进行排序和重组。
  4、确认号(32 bit):用于确认已经收到的数据,以便进行数据重传和流控制。
  5、数据偏移(4 bit):指定TCP头部的长度,以便接收端正确解析TCP数据包。
  6、标志(6 bit):包括URG、ACK、PSH、RST、SYN和FIN等标志,用于控制TCP连接的建立、维护和关闭。
  7、窗口大小(16 bit):用于流控制,指定发送端可以发送多少个字节的数据。
  8、校验和(16 bit):用于检测TCP数据包在传输过程中是否有错误发生。
  9、紧急指针(16 bit):用于指定TCP数据包中紧急数据的结束位置。

3.4 TCP内容分析

  根据我们刚才获取的深大官网IP地址,进行IP和TCP过滤,可以得到多条TCP封包信息。如图 8所示,前三条为三次握手建立过程。
在这里插入图片描述

3.4.1 第一次握手(客户端—>服务器)

  1、Frame物理层看到该数据报总长度为66字节(528比特)。
  2、EthernetII数据链路层的头部大小为14字节,主机地址在名为Dell的主机上,目的地在杭州的服务器。
  3、IP网络层的头部大小为20字节,主机IP为172.29.97.108,目标服务器IP为210.39.4.1,使用的协议为Ipv4。
  4、Protocal传输层头部大小为32字节,使用的协议为TCP,主机端口为7174,目标服务器端口为443。
  首先可以看到Flag:0x002后面有SYN标识,意味这本数据报是第一次握手的SYN同步数据报。
  第一次握手请求的初始序列号Sequence Number相对值为0,实际值为263749523,同时Acknowledgment Number也为0。
  发送完第一次握手请求后,主机端就进入SYN_SEND状态,等待服务器端的第二次握手请求。

在这里插入图片描述

3.4.2 第二次握手(客户端<—服务器)

  1、Frame物理层看到该数据报总长度为66字节(528比特)。
  2、EthernetII数据链路层的头部大小为14字节,主机地址在杭州服务器,目的地在本地主机Dell,与第一次握手相反。
  3、IP网络层的头部大小为20字节,主机IP为210.39.4.1,目标服务器IP为172.29.97.108,与第一次握手相反,使用的协议为Ipv4。
  4、Protocal传输层头部大小为32字节,使用的协议为TCP,主机端口为443,目标服务器端口为7174。
  首先可以看到Flag:0x012后面有SYN,ACK标识,意味这本数据报是服务器端收到客户端发送的SYN数据包后,向客户端发送的第二次握手同步和确认数据报。
  第二次握手答复的序列号Sequence Number相对值为0,实际值为3243080206,同时Acknowledgment Number被改为第一次握手seq+1,即为1。
  发送完第二次握手请求后,服务器端表示同意建立通信,进入SYN_RECV状态,等待客户端的第三次握手确认。

在这里插入图片描述

3.4.3 第三次握手(客户端—>服务器)

  1、Frame物理层看到该数据报总长度为54字节(432比特)。
  2、EthernetII数据链路层的头部大小为14字节,主机地址在名为Dell的主机上,目的地在杭州的服务器。
  3、IP网络层的头部大小为20字节,主机IP为172.29.97.108,目标服务器IP为210.39.4.1,使用的协议为Ipv4。
  4、Protocal传输层头部大小为32字节,使用的协议为TCP,主机端口为7174,目标服务器端口为443。
  首先可以看到Flag:0x012后面有ACK标识,意味这本数据报客户端收到服务器发送的SYN+ACK数据包后,向服务器发送的第三次握手确认数据报。
  第三次握手请求的序列号Sequence Number相对值为1,实际值为263749524, Acknowledgment Number相对值为第二次握手seq+1,实际值为3243080207。
  发送完第三次握手请求后,主机端和服务器端都进入ESTABLISHED状态,TCP连接建立完成。

在这里插入图片描述
  经过TCP三次握手后,连接建立,可以进行数据传送。而关闭TCP通信,需要经历相似的四次握手过程。

4. UDP分析

4.1 UDP简介

  UDP(User Datagram Protocol)是一种传输层协议,用于在计算机网络中传输数据包。它是一个简单的、无连接的协议,不提供可靠性、流量控制、拥塞控制、重传等服务,也不保证数据包的顺序性,因此数据包有可能丢失或乱序。UDP的主要优势在于它的高效性和低延迟性,因为它不需要在每个数据包中添加额外的控制信息。

4.2 UDP层级分析

  数据在应用层被封装为数据报后,在传输层被UDP协议加上UDP头,UDP头有8个字节,包含以下字段信息:
  1、源端口号(16 bit):标识发送端的应用程序使用的端口号。
  2、目的端口号(16 bit):标识接收端的应用程序使用的端口号。
  3、UDP长度(16 bit):指定UDP数据报的长度,包括UDP头和数据部分。
  4、校验和(16 bit):用于检测UDP数据报在传输过程中是否有错误发生。

4.3 UDP内容分析

   我们访问www.szu.edu.cn时,要先将域名传送至DNS服务器解析为IP地址,这个传输过程使用的就是UDP协议,故使用DNS数据报进行内容分析即可。
   由于该DNS报文已经做过分析,故这里只分析其UDP头的内容,如图 12所示。
   1、源端口号为51179,目的端口号为53.
   2、检验和Checksum为0xf2a7
   3、总长度Length为40,数据报长度为40-8=32字节。

在这里插入图片描述

5. HTTP分析

5.1 HTTP简介

  HTTP(Hypertext Transfer Protocol)是一种应用层协议,用于在Web应用程序之间传输数据。HTTP协议基于客户端-服务器模型,客户端发送HTTP请求到服务器,服务器响应HTTP请求并返回数据。

5.2 HTTP层级分析

  HTTP是应用层协议,能在应用层将HTTP消息打包成标准的数据报格式进行传输,其对信息的封装主要由以下部分构成:
  1、HTTP请求行:包括请求方法、请求资源路径以及HTTP协议版本号。
请求方法有GET、POST、HEAD、PUT、PATCH、DELETE、TRACE等。
  2、HTTP请求头部:包括请求的相关信息,如请求的主机、Accept头、Content-Type头等。
  3、HTTP请求主体:可选部分,包含请求的实际数据。
  4、HTTP响应行:包括响应的状态码、状态消息以及HTTP协议版本号。
  响应状态码有:200:客户端请求成功、302:重定向、404:请求资源不存在、400:客户端请求有语法错误,不能被服务器所理解、401:请求未经授权、403:服务器拒绝提供服务、500:服务器内部错误、503:服务器当前不能处理客户端的请求等。
  5、HTTP响应头部:包括响应的相关信息,如响应的内容类型、响应的长度等。
  6、HTTP响应主体:包含实际的响应数据
  7、空行:一个空行用于分隔请求头部和请求主体。

  经过封装后的HTTP信息,可以被接收方正确的解析和处理,实现Web应用之间的通信。

5.3 HTTP内容分析

  www.szu.edu.cn在内的许多网站都更换为了HTTPS(HTTP+SSL)等更安全的加密协议(443端口),由于https是加密的,Wireshark无法直接解密HTTPS封包(若有私钥的话可以解密)。故测试网站改为http://www.uooc.net.cn/league/union。
  通过查看DNS报文可以看到UOOC平台IP地址为120.78.21.18。经过筛选,如图 13和图 14所示,我们可以看到截取的HTTP的请求和答复报文,还能截取到TCP通信建立的三次握手过程。

在这里插入图片描述

在这里插入图片描述

5.3.1 HTTP请求

  首先观察http请求数据包,如图 15所示:
  1、Frame物理层可以看到数据包总长度为660字节(5280比特)。
  2、EthernetII数据链路层的头部大小为14字节,其中12字节分别表示源和目的的地址,2字节表示类型。可以看到数据源地址在名为Dell的主机上,目的地在杭州的服务器。
  3、IP网络层的头部大小为20字节,其中8个字节存储了主机IP和目的地服务器IP,主机IP地址为172.29.97.108,目的地服务器IP地址为120.78.21.18,使用的协议为Ipv4。
  4、Protocol传输层的头部大小为20字节,主机端口为10002,http服务器端口为80,使用的协议为TCP。Seq=Ack=1,说明TCP通信已建立,负载为606字节。
  5、应用层存储了该http请求报文的主要信息,长度为606字节,其有效内容如下:
  ① 该报文使用了GET请求方法,使用的协议为HTTP1.1。
  ② 请求页面信息的域名为www.uooc.net.cn,返回实体主体。
  ③ 接收的资源格式有文本、html、xml、图片等。
  ④ 接收的编码方式有gzip,语言优先为zh-CN中文。

在这里插入图片描述

5.3.2 HTTP答复

  观察http答复数据报文如图 16所示:
  1、Frame物理层可以看到数据包总长度为558字节(4464比特)。
  2、EthernetII数据链路层的头部大小为14字节,其中12字节分别表示源和目的的地址,2字节表示类型。可以看到数据源地址在杭州的服务器,目的地在Dell上。
  3、IP网络层的头部大小为20字节,其中8个字节存储了主机IP和目的地服务器IP,主机IP地址为20.78.21.18,目的地服务器IP地址为172.29.97.1081,使用的协议为Ipv4。
  4、Protocol传输层的头部大小为20字节,主机端口为80,http服务器端口为10002,使用的协议为TCP。Seq=Ack=1,说明TCP通信已建立,负载为504字节。
  5、应用层存储了该http应答报文的主要信息,长度为504字节,其有效内容如下:
  ① 答复报文的响应状态码为200,说明服务器端成功应答,使用的协议为HTTP1.1。
  ② 内容类型为:UTF-8编码的文本和html。
  ③ 打包方式为:gzip。
  ④ Date为当前时间。
  ⑤ File Data为html网页主体内容,被http协议压缩后传输给用户,再被解析就能在用户端显示网页,带线啊哦为65845字节。

在这里插入图片描述

实验小结

总结:

  通过本次实验,我掌握了Wireshark的基本操作,并通过实操分析了DNS、HTTP、TCP、UDP数据包。更加深刻了理解了各种协议的特点和用途,学习了从数据报在提取有用信息。
  同时,通过逐层分析不同协议的封装和有效载荷,我对网络协议体系的理解更加深入,形成了更直观的认识,提高了我对计算机网络的认知水平。

  • 3
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值