实验三:抓取并分析报文,理解TCP/IP原理

1. 基本信息

姓名 学号 班级 网络是否连通 能否正常抓取报文
是/否 能/不能

注:可以用PING来测试网络的连通性

注:如果使用WireShark,可以直接从第三部分开始写

2. 建立网络拓扑结构

需要给出截图。

3. 配置网络参数

客户端和服务端,需要给出IP配置的示意图(在思科仿真器,点击设备 --> Desktop --> IP Configuration),如下图:

pt-ip-configuration

服务端还需要给出域名配置的截图(在Packet Tracer,点击设备 --> Services --> DNS),如下图所示:

pt-services-dns

3.1 客户端

3.2 服务端

4. 抓取报文并分析

将Packet Tracer切换到Simulation模式。在客户端的浏览器(在Packet Tracer,点击设备 --> Desktop --> Web Browser)输入你设置的域名,按回车,点击Play开始抓取报文。对抓取到的报文进行如下分析。

4.1 概览

给出你抓到报文截图,并给报文按时间顺序标上序号,举例:

pt-capature-packets

[!Tip]

在Packet Tracer事件窗口,只过滤出所关注的协议(Event List Filters),如上图,只看DNS、HTTP、TCP和UDP协议的报文

为上述报文进行归类,哪些序号的报文是做什么,举例:

  • 报文1-3:DNS域名解析
  • 报文?-?和报文?:TCP连接建立
  • ...

再对上述的分门别类展开阐述。每一个报文每个字段是什么含义。以下以DNS报文为例。

4.2 DNS域名解析

客户端向本地域名服务器发送DNS请求报文,域名服务器给客户端返回DNS响应报文。

4.2.1 DNS请求报文

给出抓取到的DNS请求报文示意图,举例如下:

pt-dns-query

基础结构

每个字段含义如下:

(1)Transaction ID: 0x4350

会话标识(2个字节),是DNS报文的标识,对于请求报文和其对应的应答报文,这个字段是相同的,通过它可以区分DNS应答报文是哪个请求的响应。

(2)标志

标志(2个字节),

  • QR(1位),报文没有显示,查询/响应标志,0表示查询,1表示响应
  • OPCODE: 0x01,操作码,0x01表示
  • ...

(3)QDCOUND: 1

...

问题区域(Queries)

每个字段含义如下:

(1)Name: qiankun.su

...

4.2.1 DNS响应报文

4.2.3 UDP

取DNS请求报文或者响应报文其中一个UDP分析即可。

4.3 TCP连接建立

4.3.1 概述

根据抓到的报文,TCP连接建立示意图如下(根据自身抓到报文将值填充上去):

tcp-connection-establish

注:作图,可以自己手画,再拍照插入图片。建议用微软Visio画。电脑上没有Visio软件,又不想装的,可以用在线的作图工具,如diagrams.net

  • 箭头上方的内容如下:

    • 编号,你抓取到报文的编号,4.1节对应的编号

    • ID,IP报文首部的标识符,如0x0014

    • seq,序号

    • ack,确认号

  • 箭头下方放标志位,如ACK=1(等于0不用放)

接下来,对上述的报文一一阐述,重点关注序号、确认号和标志位的演变。同一个字段出现多次,只需要给出一次解释就行。

4.3.2 连接请求报文

4.3.3 连接接受报文

4.3.4 第三次握手

4.4 HTTP

分析HTTP请求和响应报文,除了关注HTTP请求和响应报文格式,还要关注被封装成TCP报文的序号、确认号和标志位的演变。

4.4.1 HTTP请求报文

4.4.2 HTTP响应报文

4.4.3 IP数据报

取HTTP请求或者响应报文其中一个IP数据报进行分析即可。

4.5 TCP连接释放

同TCP连接建立分析。

5. 实验过程中遇到的问题及解决方法

写下你实验过程中遇到的问题,以及你是如何解决的。

也可以写下你深入报文分析之后,产生的疑惑。如TCP还没有双向建立连接,就可以发送了HTTP报文了。

也可以想下你对此实验的感想。

本文系Spark & Shine原创,转载需注明出处本文最近一次修改时间 2024-05-15 16:18

results matching ""

    No results matching ""