第二次实验报告:对应用层协议的认识
- 姓名:王璐璐
- 学号:201821121037
- 班级:计算1812
0 摘要
在此次的报告中,我将尝试抓取DNS、FTP、DHCP、SMTP、POP3等应用层协议的数据包,并对抓取到的数据包进行分析,深入理解各应用层协议在网络传输中起到的作用。
1 实验目的
熟练使用Packet Tracer工具。分析抓到的应用层协议数据包,深入理解应用层协议,包括语法、语义、时序。
2 实验内容
使用Packet Tracer,正确配置网络参数,抓取应用层协议的数据包并分析,协议包含DNS、FTP, DHCP, stmp, pop3。步骤包含:
- 建立网络拓扑结构
- 配置参数
- 抓包
- 分析数据包
3 实验报告
在整个实验中,先构建网络拓扑结构,再对客户端与服务器进行参数的配置,选定要抓取的包,再从客户端中输入要访问的服务器的地址,运行后,对抓取到的数据包进行分析。
3.1 建立网络拓扑结构
上图为本次实验中将会用到的网络拓扑结构。该网络拓扑结构十分简单,左侧为PC-PT客户端,右侧为Server-PT服务器,两者之间用一个简单的线路连接。
3.2 DNS数据包
- DNS是什么:DNS是互联网使用的命名系统,用来把便于人们使用的机器名字转换为IP地址。
- 域名到IP地址的解析过程:当某个应用进程需要把主机名解析为IP地址时,该应用进程就会调用解析程序,并成为DNS的一个客户,待解析的域名将会被放在DNS的请求报文中,以UDP用户数据报方式发给本地域名服务器。本地域名服务器在查找域名后,把对应的IP地址放在回答报文中返回,应用程序获得目的主机的IP地址后即可进行通信。
3.2.1 参数的配置
(1)先对客户端与服务器的IP地址进行配置。
客户端IP:
服务器IP:
(2)在服务器的Services窗口中,开启DNS域名配置,在DNS中添加一个域名,该域名可以解析出服务器的IP地址。如下图操作:
(3)在服务器端口配置完DNS后,在客户端的IP设置中对DNS Server进行配置。如下图操作:
(4)这些参数配置好后,在仿真模拟中选择抓取DNS包,然后在客户端中输入域名地址,访问该域名中的内容。
(5)最后在仿真模拟中会出现以下的结果:
得到这样的结果后,便可以对抓取到的DNS数据包进行分析了。
3.2.2 抓包并分析抓到的数据包
3.2.2.1 报文头
在DNS Message中一般会包含这些信息:
Header——消息头部
Question ——DNS请求
Answer——回答请求的资源记录(Resource Record(s))
Authority——指向域的资源记录
Additional——其他资源记录
- QDCOUNT表示的是报文请求段中的问题记录数(QD表示的是Questions Count)
- ANCOUNT表示的是报文回答段中的回答记录数(AN表示的是Answer)
- NSCOUNT表示的是报文授权段中的授权记录数(NS表示的是Authoritative Nameservers)
- ARCOUNT表示的是报文附加段中的附加记录数(AR表示的是Additional Recoreds)
3.2.2.2 查询报文
- NAME表示的是查询名。查询名的长度不固定,且不使用填充字节,一般该字段表示的就是需要查询的域名
- TYPE表示的是查询类型。TYPE:4的含义是一个邮件转发器
- CLASS表示的是查询类。一般CLASS的值是1,表示的是互联网地址
- TTL表示的是生存时间。该时间以秒为单位,表示的是资源记录的生命周期,一般用于当地址解析程序取出资源记录后决定保存及使用缓存数据的时间,它同时也可以表明该资源记录的稳定程度,极为稳定的信息会被分配一个很大的值(比如86400,这是一天的秒数)
- LEBGTH表示的是资源数据长度。该字段是一个可变长字段,表示按照查询段的要求返回的相关资源记录的数据,可以是Address(表明查询报文想要的回应是一个IP地址)或者CNAME(表明查询报文想要的回应是一个规范主机名)等
对于TYPE的值还有其他的取法:
类型 | 助记符 | 说明 |
1 | A | 由域名获得IPv4地址 |
2 | NS | 查询域名服务器 |
5 | CNAME | 查询规范名称 |
6 | SOA | 开始授权 |
11 | WKS | 熟知服务 |
12 | PTR | 把IP地址转换成域名 |
13 | HINFO | 主机信息 |
15 | MX | 邮件交换 |
28 | AAAA | 由域名获得IPv6地址 |
252 | AXFR | 传送整个区的请求 |
255 | ANY | 对所有记录的请求 |
3.2.2.3 回答报文
回答报文中的各参数的含义与查询报文中的类似。
- NAME表示的是资源记录包含的域名。它的格式和Queries区域的查询名字字段是一样的。有一点不同就是,当报文中域名重复出现的时候,该字段使用2个字节的偏移指针来表示
- TYPE表示的是资源记录的类型
- CLASS表示的是资源记录的类
- TTL表示的是资源记录的生命周期
- LENGTH表示的是资源数据长度
- IP表示的是域名解析后得到的结果
3.3 FTP数据包
3.3.1 参数的配置
(1)完成DNS的抓取后,不更改已设置好的客户端IP地址与服务器IP地址
(2)将服务器中Services的FTP打开,并设置记录FTP的用户名与密码
(3)修改要抓取的包为FTP
(4)打开客户端的Command Prompt
(5)在Command Prompt中访问ftp的服务器地址
此时会获得一个数据包,并请求输入用户名。
(6) 输入用户名后会请求输入密码,在密码输入行中输入密码,即可进入要访问的ftp中
输入“help”可以用来查询可用的命令
(7)下图为最后仿真结束后得到的数据包
3.3.2 抓包并分析抓到的数据包
(1)服务器回应请求进入ftp服务器的要求
- Code:220表示的是新用户的Ftp服务已经准备就绪
- Message是对Code的解释,该解释会在Command Prompt中被输出,提示用户可进入Ftp服务器
(2)在Command Prompt中出现Username后,将用户名输入,并将该命令信息传输给服务器,请求进入该ftp
- FTP Command:USER表示的是FTP在指定远程计算机的用户
- FTP Argument:cisco表示的是指定登录到远程计算机所使用的用户名是cisco
(3)输入完用户名后,服务器给出的响应报文
- Code:331表示的是输入的用户名存在,需要输入密码
- Message是对Code的详细解释,用于提示用户
(4)接下来在客户端中会出现Password的命令,需要在此处输入密码
- FTP Command:PASS表示的是ftp的命令是密码
- FTP Argument:cisco表示的是在该处命令中需要输入的是cisco
(5)输完密码后,服务器将会向客户端返回一个响应报文
- Code:230表示的是ftp登陆成功
- Message表示的是对Code的解释,用于提示用户
(6)当用户想要退出ftp时,可以输入命令quit,这时客户端将会向服务器发送ftp命令的请求报文
- FTP Command:QUIT表示的是ftp所使用的命令是退出
- FTP Argument后没有信息表示的是QUIT指令后面没有输入信息
(7)退出成功时,服务器会想客户端返回一个响应报文
- Code:221表示的是服务器关闭了与ftp的控制连接
- Message是对Code的解释,也是对用户的提示
在ftp中常用的命令有以下几个:
USER
PASS
TYPE
STRU
MODE
PASV 等待数据连接的请求
PORT
IP地址和两个字节的端口id CWD
LIST
PWD 显示当前工作目录
RETR
REST
STOR
STOU
ACCT
DELETE
RMD
MKD
QUIT 从ftp服务器退出登录
常用的响应码如下:
332 需要账号名 331 用户名有效,需要密码
230登录成功 530登录失败
200 成功
227 进入被动模式(发送IP和端口号)
220 服务器准备就绪 421关闭服务器
225 数据连接打开 425 不能打开数据连接
226 数据连接关闭
452磁盘空间不足 552 超过分配的存储空间
426结束连接
500无效命令 504无效命令参数
501 错误参数 502命令未执行
125 数据连接已打开,在短时间内开始传输
120在短时间内服务器准备就绪
250 完成的文件行为
257 当前的路径名 550不可用的文件
553 不允许的文件名 551不知道的页类型
3.4 DHCP数据包
3.4.1 参数的配置
(1)将服务器中的DHCP服务打开,并将开始IP地址设置成192.168.1.0
(2)将客户端中的IP地址设置成DHCP获取
(3)更改要抓取的数据包为DHCP
(4)开始仿真模拟后得到的结果
3.4.2 抓包并分析抓到的数据包
(1)请求报文如下图:
- OP表示的是报文的类型,其中1表示请求报文
- HW TYPE表示的是硬件地址类型,其中值为1表示10Mb/s的以太网的硬件地址
- HW LEN表示的是硬件地址长度,而在以太网中该值为6
- HOPS表示的是跳数,客户端设置为0,该值也能被一个代理服务器设置
- TRANSACTION ID表示的是事务ID,由客户端选择的一个随机数,被服务器和客户端用来在它们之间交流请求和响应,客户端用它对请求和应答进行匹配,该ID由客户端设置并由服务器返回,为32位整数
- SECS表示的是从客户端开始获得IP地址或IP地址续借后所使用了的秒数,由客户端填充
- FLAGS表示的是标志字段,这个16比特的字段,目前只有最左边的一个比特有用,该位为0,表示单播,为1表示广播
- CLIENT ADDRESS表示的是客户端的IP地址。但这只有客户端是Bound、Renew、Rebinding状态,并且能响应ARP请求时,才能被填充
- YOUR CLIENT ADDRESS表示的是"你自己的"或客户端的IP地址
- SERVER ADDRESS表示的是DHCP协议流程的下一个阶段要使用的服务器的IP地址
- RELAY AGENT ADDRESS表示的是DHCP中继器的IP地址
- CLENT HARDWARE ADDRESS表示的是客户端硬件地址
- SERVER HOSTNAME表示的是可选的服务器主机名,该字段是空结尾的字符串,由服务器填写
- FILE表示的是启动文件名,是一个空结尾的字符串
- OPTIONS表示的是可选参数域,格式为"代码+长度+数据"
(2)响应报文如下图:
响应报文各类参数的含义与请求报文一致,其中OP值为2表示的是响应报文。
- DOMAIN NAME SERVER:给出了DNS服务器的IP地址
3.5 SMTP和POP3
3.5.1 参数的配置
(1)先在服务器中设置的Services打开EMAIL的SMTP与POP3服务,操作如下图:
(2)配置客户端中Email信息,如下图配置:
(3)配置服务器中Email信息,如下图配置:
(4)在客户端中写一份邮件并将该邮件发送给服务器
当出现以下提示时,表示发送错误,据查资料发现在DNS上少设置了两个域名,使得客户端联系不上服务器的IP地址
(5)设置服务器上的DNS
(6)发送邮件成功后会出现下图:
(7)得到发送邮件的数据包
(8)在客户端的邮件中点击“Receive”,接收从服务器传过来的文件,接收成功将会得到下图信息
(9)得到接收邮件的数据包
3.5.2 抓包并分析抓到的数据包
(1)发送邮件时的报文
(2)接收邮件时的报文
4 参考资料:
DNS请求报文有哪几个部分:http://09105106.blog.163.com/blog/static/2483578201342584441807/
DNS原理及其解析过程:https://www.cnblogs.com/gopark/p/8430916.html
DNS报文格式分析:https://jocent.me/2017/06/18/dns-protocol-principle.html
FTP命令详解:http://blog.chinaunix.net/uid-21411227-id-1826769.html
FTP实现原理及抓包分析:https://www.jianshu.com/p/05212313d0e2
DHCP报文解析:http://blog.chinaunix.net/uid-20530497-id-2203830.html