实验三:抓取并分析报文,理解TCP/IP原理
1. 基本信息
姓名 | 学号 | 班级 | 网络是否连通 | 能否正常抓取报文 |
---|---|---|---|---|
是/否 | 能/不能 |
注:可以用PING来测试网络的连通性
注:如果使用WireShark,可以直接从第三部分开始写
2. 建立网络拓扑结构
需要给出截图。
3. 配置网络参数
客户端和服务端,需要给出IP配置的示意图(在思科仿真器,点击设备 --> Desktop --> IP Configuration),如下图:
服务端还需要给出域名配置的截图(在Packet Tracer,点击设备 --> Services --> DNS),如下图所示:
3.1 客户端
3.2 服务端
4. 抓取报文并分析
将Packet Tracer切换到Simulation模式。在客户端的浏览器(在Packet Tracer,点击设备 --> Desktop --> Web Browser)输入你设置的域名,按回车,点击Play开始抓取报文。对抓取到的报文进行如下分析。
4.1 概览
给出你抓到报文截图,并给报文按时间顺序标上序号,举例:
[!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请求报文示意图,举例如下:
基础结构
每个字段含义如下:
(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连接建立示意图如下(根据自身抓到报文将值填充上去):
注:作图,可以自己手画,再拍照插入图片。建议用微软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报文了。
也可以想下你对此实验的感想。