第二次实验报告:使用Packet Tracer分析应用层协议

姓名:黄声钦

学号:201821121077 

班级:计算1813

1 实验目的

熟练使用Packet Tracer工具。分析抓到的应用层协议数据包,深入理解应用层协议,包括语法、语义、时序。

2 实验内容

使用Packet Tracer,正确配置网络参数,抓取应用层协议的数据包并分析,协议包含DNS、FTP, DHCP, stmp, pop3。步骤包含:

  • 建立网络拓扑结构
  • 配置参数
  • 抓包
  • 分析数据包

3. 实验报告

(1)建立网络拓扑结构

 

 

3.1 DNS

(2)配置参数

 PC和SERVER的IP配置如下:

 

 

 

 

 

 

 server的DNS配置如下:

 

 

 

(3)抓包并分析抓到的数据包

开始抓包:

 

 

 

 

 

 

分析抓取到的数据包:

 

 

 此图为OSI模型界面,OSI模型包含七个层次,图中显示了七个层次的数据,最后一行表示这是由dns客户端向dns服务器发送dns查询。

 

 

 

 上图为传出pdu详细信息,这里先介绍IP段,各字段的意义如下图:

 

 

 首先看出每一个IP地址是32bite

其中TTL代表生存时间,即为缓存时间,如果这一项为0,表示只能传输不能缓存,CHKSUM表示校验

 

接下来是UDP部分;

SRC/DEST PORT下的数字是源端口号和目的端口号,端口号的有效范围是从0到65535。一般来说,大于49151的端口号都代表动态端口。

DNS header:

各字段意义如下图:

 

 

 

标识ID: 请求客户端设置的16位标示,服务器给出应答的时候会带相同的标示字段回来,这样请求客户端就可以区分不同的请求应答了。

标志:
QR 1个比特位用来区分是请求(0)还是应答(1)。

OPCODE 4个比特位用来设置查询的种类,应答的时候会带相同值,可用的值如下:

0 标准查询 (QUERY)

1 反向查询 (IQUERY)

2 服务器状态查询 (STATUS)

3-15 保留值,暂时未使用

AA 授权应答(Authoritative Answer) - 这个比特位在应答的时候才有意义,指出给出应答的服务器是查询域名的授权解析服务器。

注意因为别名的存在,应答可能存在多个主域名,这个AA位对应请求名,或者应答中的第一个主域名。

TC 截断(TrunCation) - 用来指出报文比允许的长度还要长,导致被截断。

RD 期望递归(Recursion Desired) - 这个比特位被请求设置,应答的时候使用的相同的值返回。如果设置了RD,就建议域名服务器进行递归解析,递归查询的支持是可选的。

RA 支持递归(Recursion Available) - 这个比特位在应答中设置或取消,用来代表服务器是否支持递归查询。

Z 保留值,暂时未使用。在所有的请求和应答报文中必须置为0。

RCODE 应答码(Response code) - 这4个比特位在应答报文中设置,代表的含义如下:

0 没有错误。

1 报文格式错误(Format error) - 服务器不能理解请求的报文。

2 服务器失败(Server failure) - 因为服务器的原因导致没办法处理这个请求。

3 名字错误(Name Error) - 只有对授权域名解析服务器有意义,指出解析的域名不存在。

4 没有实现(Not Implemented) - 域名服务器不支持查询类型。

5 拒绝(Refused) - 服务器由于设置的策略拒绝给出应答。比如,服务器不希望对某些请求者给出应答,或者服务器不希望进行某些操作(比如区域传送zone transfer)。

6-15 保留值,暂时未使用。

问题数QDCOUNT 无符号16位整数表示报文请求段中的问题记录数。

资源记录数ANCOUNT 无符号16位整数表示报文回答段中的回答记录数。

授权资源记录数NSCOUNT 无符号16位整数表示报文授权段中的授权记录数。

额外资源记录数ARCOUNT 无符号16位整数表示报文附加段中的附加记录数。

请求报文DNS Query:

 

各字段分别为:查询名,查询类型,查询类

 

最后是响应报文:

 

 

域名NAME 资源记录包含的域名

类型TYPE 2个字节表示资源记录的类型,指出RDATA数据的含义

类CLASS 2个字节表示RDATA的类

生存时间TTL 4字节无符号整数表示资源记录可以缓存的时间。0代表只能被传输,但是不能被缓存。

**资源数据长度URDLENGT**H 2个字节无符号整数表示RDATA的长度

资源数据RDATA 不定长字符串来表示记录,格式根TYPE和CLASS有关。比如,TYPE是A,CLASS 是 IN,那么RDATA就是一个4个字节的ARPA网络地址。

3.2 FTP

先在server端开启ftp服务

 

 

然后在PC端链接ftp服务:

 

 

抓取数据包;

 

 以最后一个数据包为例:

 

 首先分析TCP段各字段:

源端口号/目的端口号: 表示数据从哪个进程来, 到哪个进程去.
32位序号:
4位首部长度: 表示该tcp报头有多少个4字节(32个bit)
6位保留: 顾名思义, 先保留着, 以防万一
6位标志位
16位窗口大小:
16位检验和: 由发送端填充, 检验形式有CRC校验等. 如果接收端校验不通过, 则认为数据有问题. 此处的校验和不光包含TCP首部, 也包含TCP数据部分.
16位紧急指针: 用来标识哪部分数据是紧急数据.
选项和数据暂时忽略

 

最后的FTP段230表示登录成功。

3.3 DHCP

开启服务端的DHCP:

 

 

PC端由静态改成DHCP:

 

 开始抓包;

 

 

 

点开最后一个数据包:

 

 

 

解释DHCP各字段的含义:

OP:
若是 client 送给 server 的封包,设为 1 ,反向为 2。HTYPE
硬件类别,Ethernet 为 1。
HLEN:
硬件地址长度, Ethernet 为 6。
HOPS:
若封包需经过 router 传送,每站加 1 ,若在同一网内,为 0。
TRANSACTION ID:
DHCP REQUEST 时产生的数值,以作 DHCPREPLY 时的依据。
SECONDS:
Client 端启动时间(秒)。
FLAGS:
从 0 到 15 共 16 bits ,最左一 bit 为 1 时表示 server 将以广播方式传送封包给 client ,其余尚未使用。
ciaddr:
要是 client 端想继续使用之前取得之 IP 地址,则列于这里。
yiaddr:
从 server 送回 client 之 DHCP OFFER 与 DHCPACK封包中,此栏填写分配给 client 的 IP 地址。
siaddr:
若 client 需要透过网络开机,从 server 送出之 DHCP OFFER、DHCPACK、DHCPNACK封包中,此栏填写开机程序代码所在 server 之地址。
giaddr:
若需跨网域进行 DHCP 发放,此栏为 relay agent 的地址,否则为 0。
chaddr:
Client 之硬件地址。
sname:
Server 之名称字符串,以 0x00 结尾。
file:
若 client 需要透过网络开机,此栏将指出开机程序名称,稍后以 TFTP 传送。
options:
允许厂商定议选项(Vendor-Specific Area),以提供更多的设定信息(如:Netmask、Gateway、DNS、等等)。其长度可变,同时可携带多个选项,每一选项之第一个 byte 为信息代码,其后一个 byte 为该项数据长度,最后为项目内容。CODE LEN VALUE 此字段完全兼容 BOOTP ,同时扩充了更多选项。其中,DHCP封包可利用编码为 0x53 之选项来设定封包类别。

3.4 smtp和pop3

先设置好服务器的EMALL

 

 

 

然后DNS增加两个域名和地址

 

 

 

PC端的Configure Mail设置好:

 

 

 

发送邮件:

 

 

 

 

 

 

 

抓包:

 

 

查看数据包:

 

 

 

 

 

 

 

参考资料:

[1] 结合Wireshark捕获分组深入理解TCP/IP协议栈
[2] 结合Wireshark捕获分组深入理解TCP/IP协议栈之HTTP协议

posted @ 2019-09-22 13:03  笑离  阅读(366)  评论(0编辑  收藏  举报