第二次作业:使用Packet Tracer分析应用层协议(DNS、FTP、DHCP、SMTP、POP3)
0 个人信息
- 张樱姿
- 201821121038
- 计算1812
1 实验目的
熟练使用Packet Tracer工具。分析抓到的应用层协议数据包,深入理解应用层协议,包括语法、语义、时序。
2 实验内容
使用Packet Tracer,正确配置网络参数,抓取应用层协议的数据包并分析,协议包含DNS、FTP, DHCP, stmp, pop3。步骤包含:
- 建立网络拓扑结构
- 配置参数
- 抓包
- 分析数据包
3 实验报告
本实验使用Cisco Packet Tracer这个平台来对网络环境进行模拟。
3.1 建立网络拓扑结构

如图,将一台PC端和一台Server端相连。
分析:客户(PC端)和服务器(Sever端)是通信中所涉及的两个应用进程,要达到抓包的目的,就需要建立通信关系,即需要在同一网段内。
3.2 IP配置
PC端的IP地址:192.168.1.38,子网掩码:255.255.255.0
服务器的IP地址:192.168.1.1,子网掩码:255.255.255.0
分析:对于PC端和服务器的IP配置,其子网掩码相同,在同一网段内,可以相互通信。
3.3 抓DNS包并分析
3.3.1 将服务器端的DNS服务开启,并增设一条域名解析记录:

3.3.2 点击右下角的Simulation键进行仿真。
3.3.3 只勾选支持DNS协议:

3.3.4 在PC端的浏览器输入域名访问:

(注:当出现域名解析出错时,会显示如下页面:

解决办法是PC端的DNS server要设置为DNS服务器的IP地址:

)
3.3.5 仿真后的信息传递结果如下:


3.3.6 报文分析:
(1)报文头:

- QDCOUNT(Questions Count)表示报文请求段中的问题记录数
- ANCOUNT(Answer Count)表示报文回答段中的回答记录数
- NSCOUNT(Authoritative Nameservers Count)表示报文授权段中的授权记录数
- ARCOUNT(Additional Recoreds Count)表示报文附加段中的附加记录数
(2)查询报文:

- NAME表示查询名,一般为需要查询的域名(如果是反向查询,则为IP地址)
- TYPE表示查询类型,4表示是一个邮件转发器。
- CLASS表示查询类,1表示是Internet数据
- TTL(Time to Live)表示生存时间,以秒为单位,表示的是资源记录的生命周期,一般用于当地址解析程序取出资源记录后决定保存及使用缓存数据的时间,它同时也可以表明该资源记录的稳定程度,极为稳定的信息会被分配一个很大的值(比如86400,这是一天的秒数)。
- LENGTH表示资源数据长度
(3)应答报文:

类似于查询报文:
- NAME表示资源记录包含的域名
- TYPE表示资源记录的类型
- CLASS表示资源记录的类
- TTL表示资源记录的生存周期
- LENGTH表示资源数据长度
- IP表示域名解析的结果
3.4 抓FTP包并分析
3.4.1 将服务器端的FTP服务开启,并增设一条用户记录:

3.4.2 点击右下角的Simulation键进行仿真。
3.4.3 只勾选支持FTP协议:(File Transfer Protocol,文件传输协议)

3.4.4 在PC端的Command Prompt(命令提示符,类似于cmd)输入用户名及密码对FTP服务器的文件访问:

输入?查询可使用命令:

其中,cd可改变远程工作目录,delete可删除远程单个文件,dir可显示远程目录文件的文件列表,get可复制单个远程文件到本地,help与?相同,可显示FTP命令帮助信息,passive可开/关被动模式,put可复制一个本地文件到远程目录,pwd可显示远程当前工作目录,quit可结束FTP会话并退出FTP,rename可重命名远程文件。
(注:FTP有两种使用模式:被动和主动,主动模式要求客户端和服务器端同时打开并监听一个端口以建立连接。但这种情况下,由于客户端安装了防火墙会产生一些问题,所以有了被动模式,被动模式只要求服务器端产生一个监听相应端口的进程,这样就能绕过客户的防火墙了。)
3.4.5 仿真后的信息传递结果如下:


3.4.6 报文分析:
(1)响应报文:

- Code:220表示新用户服务就绪
- Message表示对Code的解释
(2)响应报文:

- Code:331表示用户名正确,需要密码
- Message表示对Code的解释
(3)请求报文:

- FTP Command:PASS表示密码正确
- FTP Argument表示密码内容
(4)响应报文:

- Code:230表示用户已登录
- Message表示对Code的解释
(5)请求报文:

- FTP Command:QUIT表示用户已登出
(6)响应报文:

- Code:221表示服务京城已关闭连接
- Message表示对Code的解释
3.5 抓DHCP包并分析
3.5.1 将服务器端的DHCP服务开启,并设置IP地址分配的开始值192.168.1.0:

接着将PC端的IP获取方式从静态改成DHCP获取(192.168.1.2):

3.5.2 点击右下角的Simulation键进行仿真。
3.5.3 只勾选支持DHCP协议:(Dynamic Host Configuration Protocol,动态主机设置协议)

3.5.4 仿真后的信息传递结果如下:


3.5.5 报文分析:
(1)请求报文:

- OP表示报文类型,1表示请求报文
- HW TYPE表示硬件地址类型,1表示10Mb/s的以太网的硬件地址
- HW LEN表示硬件地址长度,以太网中为6
- HOPS表示跳数,客户端设置为0
- TRANSACTION ID表示事务ID,由客户端选择的一个随机数,被服务器和客户端用来在它们之间交流请求和响应,客户端用它对请求和应答进行匹配
- SECS由客户端填充,表示从客户端开始获得IP地址或IP地址续借后所使用了的秒数
- FLAGS表示标志字段,目前只有最左边的一个比特有用,该位为0,表示单播,为1表示广播
- CLIENT ADDRESS表示客户端地址,只有客户端是Bound、Renew、Rebinding状态,并且能响应ARP请求时,才能被填充。
- YOUR CLIENT ADDRESS表示客户端地址
- SERVER ADDRESS表示DHCP协议流程的下一个阶段要使用的服务器的IP地址
- RELAY AGENT AGGRESS表示DHCP中继器的IP地址
- CLIENT HARDWARE ADDRESS表示客户端硬件地址,客户端必须设置它的物理地址
- SERVER HOSTNAME表示可选的服务器主机名,该字段是空结尾的字符串,由服务器填写
- FILE表示启动文件名,是一个空结尾的字符串
- OPTIONS表示可选的参数域,格式为"代码+长度+数据"
(2)响应报文:

- OP表示报文类型,2表示响应报文
- YOUR CLIENT ADDRESS表示客户端地址,此时被分配为192.168.1.2
- SERVER ADDRESS表示DHCP协议流程的下一个阶段要使用的服务器的IP地址,为192.168.1.1
(3)DHCP Options

- OP:6表示DNS Server
- LEN:4表示4个字节
- DOMAIN NAME SERVER表示域名服务器的IP

- OP:15表示主DNS服务器名
- LEN:0x0表示长度可变
- DOMAIN NAME表示域名
3.6 抓SMTP包并分析(涉及STMP协议和POP3协议)
3.6.1 先将PC端的IP获取由DHCP变为静态获取,并设置其IP地址为192.168.1.38,再对Email中的Configure Mail进行设置:

接着将服务器端的IP获取方式从DHCP改成静态获取,并设置其IP地址为192.168.1.1,打开SMTP服务和POP3服务,增加两个用户,接着对Email中的Configure Mail进行设置:


3.6.2 点击右下角的Simulation键进行仿真。
3.6.3 只勾选支持SMTP协议和POP3协议:(Simple Mail Transfer Protocol,简单邮件传输协议;Post Office Protocol - Version 3,邮局协议版本3)

3.6.4 PC端写mail给服务器端:

另外,只能用PC端接受mail,因为设置的pop3服务器也是服务器端。
(注:如果出现如下问题,说明是DNS服务器未配置好,因为发邮件时是To一个域名,而非IP地址,因此需要域名解析,所以开启服务器端的DNS服务,并增设两条记录:


)
3.6.5 仿真后的信息传递结果如下:




3.6.6 报文分析:

- SMTP DATA表示将邮件报文发送给服务器

- POP3表示接收邮件报文
3.7 Q&A
Q:常用端口号?
A:
- 21/tcp FTP 文件传输协议
- 22/tcp SSH 安全登录、文件传送(SCP)和端口重定向
- 23/tcp Telnet 不安全的文本传送
- 25/tcp SMTP Simple Mail Transfer Protocol (E-mail)
- 69/udp TFTP Trivial File Transfer Protocol
- 80/tcp HTTP 超文本传送协议 (WWW)
- 110/tcp POP3 Post Office Protocol (E-mail)
- 220/tcp IMAP3
- 443/tcp HTTPS 安全的网页传输
4 Reference
· 深入理解DNS报文格式----夜苍山的CSDN博客
(https://blog.csdn.net/liao152/article/details/45252387)
· DNS协议详解及报文格式分析----Jocent Zhou的博客
(https://jocent.me/2017/06/18/dns-protocol-principle.html)
· FTP命令详解----罗汉爷的CSDN博客
(https://blog.csdn.net/indexman/article/details/46387561)
· DHCP报文及其格式----一路博客的CSDN博客
(https://blog.csdn.net/one_in_one/article/details/51684551)
第二次作业:使用Packet Tracer分析应用层协议(DNS、FTP、DHCP、SMTP、POP3)的更多相关文章
- 第二次实验报告:使用 Packet Tracer 分析应用层协议
个人信息: 姓名:倪晓东 班级:计算1811 学号:201821121020 1 实验目的 熟练使用Packet Tracer工具.分析抓到的应用层协议数据包,深入理解应用层协议,包括语法.语义.时序 ...
- 第二次实验报告:使用Packet Tracer分析应用层协议
个人信息: • 姓名:李微微 • 班级:计算1811 • 学号:201821121001 一.摘要 本文描述使用Packet Tracer,正确配置网络参数,抓 ...
- 第一次实验报告:使用Packet Tracer分析HTTP数据包
目录 1 实验目的 2 实验内容 3. 实验报告 第一次实验报告:使用Packet Tracer分析HTTP数据包 1 实验目的 熟练使用Packet Tracer工具.分析抓到的HTTP数据包,深入 ...
- 第三次作业:使用Packet Tracer分析TCP连接的建立与释放过程
0 个人信息 张樱姿 201821121038 计算1812 1 实验目的 使用路由器连接不同的网络 使用命令行操作路由器 通过抓取HTTP报文,分析TCP连接建立的过程 2 实验内容 使用Packe ...
- 第1次作业:使用Packet Tracer分析HTTP数据包
个人信息: • 姓名:李微微 • 班级:计算1811 • 学号:201821121001 一.摘要 本文将会描述使用Packet Tracer工具用到的网络结构 ...
- 第一次作业:使用Packet Tracer分析HTTP包
0 个人信息 张樱姿 201821121038 计算1812 1 实验目的 熟练使用Packet Tracer工具.分析抓到的HTTP数据包,深入理解:HTTP协议,包括语法.语义.时序. 2 实验内 ...
- 第三次实验报告:使用Packet Tracer分析TCP连接建立过程
目录 1 实验目的 2 实验内容 3. 实验报告 3.1 建立网络拓扑结构 3.2 配置参数 3.3 抓包,分析TCP连接建立过程 4. 拓展 (不作要求,但属于加分项) 1 实验目的 使用路由器连接 ...
- 第二次作业:APP案例分析
App案例分析 产品:三国杀-页游手游双通 选择理由 当今社会手机已经渐渐取代了电脑在人们日常生活的需求,既然要选择APP进行案例分析,首推的估计就是手机APP了.三国杀是陪伴我高中时代的主要娱乐方式 ...
- 集大1513 & 1514班 软件工程第二次作业评分与点评
谢谢按时完成作业的同学. 请大家在今后的作业中多思考,认真完成并注意作业的原创性. 学号 作业标题 作业地址 提交日期 分数 201521121087 微信APP简要分析 http://www.cnb ...
随机推荐
- I firmly believe
I firmly believe, what you plant now, you will harvest later.
- 日志文件写入失败(permission denied)
用过Laravel的小伙伴一开始安装完框架后可能都遇到过daily 日志文件写入失败的问题,接下来我们就来详细说下日志文件写入失败的原因以及对应的解决方案. 在讲这个问题之前可能需要简单介绍下Linu ...
- [FJOI2015]火星商店问题(线段树分治,可持久化,Trie树)
[FJOI2015]火星商店问题 前天考了到线段树分治模板题,全场都切了,就我不会QAQ 于是切题无数的Tyher巨巨就告诉我:"你可以去看看火星商店问题,看了你就会了." 第一道 ...
- 利用递归,反射,注解等,手写Spring Ioc和Di 底层(分分钟喷倒面试官)了解一下
再我们现在项目中Spring框架是目前各大公司必不可少的技术,而大家都知道去怎么使用Spring ,但是有很多人都不知道SpringIoc底层是如何工作的,而一个开发人员知道他的源码,底层工作原理,对 ...
- 第一个基于ArcGIS的Android应用
使用Android Studio创建第一个工程 打开Android Studio,新建工程.在Application name处填写项目名称,company domain是公司地址,将来作为包名,点 ...
- 做「容量预估」可没有true和false
如果第二次看到我的文章,欢迎右侧扫码订阅我哟~
- mysql count(*)与count(1)的区别
count() 对行数进行计算,包括NULL: count(column) 计算特定的列的值的行数,不包括NULL: count(1)这个用法和count()的结果是一样的. http://blog. ...
- Delphi - Indy TIdThreadComponent 线程研究
Indy IdThreadComponent 线程研究 前几天在开发数据实时解析功能模块的时候,发现解析数据量巨大,特别耗时,程序一跑起来界面假死. 为了优化用户体验,采用了Indy 自带的IdThr ...
- 云原生生态周报 Vol. 17 | Helm 3 发布首个 beta 版本
本周作者 | 墨封.衷源.元毅.有济.心水 业界要闻 1. Helm 3 首个 beta 版本 v3.0.0-beta.1 发布 该版本的重点是完成最后的修改和重构,以及移植其他 Helm 2 特性. ...
- Java NIO 下
内存映射文件 JAVA处理大文件,一般用BufferedReader,BufferedInputStream这类带缓冲的IO类,不过如果文件超大的话,更快的方式是采用MappedByteBuffer. ...