IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> wireshark抓包分析HTTP、DNS、TLS、SMTP、ARP、RTP、RTMP -> 正文阅读

[网络协议]wireshark抓包分析HTTP、DNS、TLS、SMTP、ARP、RTP、RTMP

一次计算机网络课的作业,有几个包不是很好抓,在网上搜了很多,最后勉强抓到,所以记录一下,留个参考。
(ps:计网学的不好,分析的都很简略,可能有误~~

要求

使用Ethereal或相关协议分析工具,进行HTTP(包括头部典型方法与字段)、DNS、TLS、SMTP、ARP、RTP、RTMP(Real Time Messaging Protocol)协议的分析。要求:对每个应用层协议从上到下(Ethernet帧),写出协议执行过程及协议单元封装的过程和主要字段值的意义(例如HTTP协议请求、响应过程,DNS对某个具体域名的查找过程,TCP连接建立、数据传输、释放连接过程,等等)。

实验工具:

  • wireshark
  • chrome浏览器
  • Foxmail客户端
  • VLC media player
  • VoIP 通话线路
  • MicroSIP

分析过程:

以访问一个网页为例。

启动wireshark,在浏览器输入www.xiaomi.com,访问小米的官网。(ps:网址会自动跳转到www.mi.com,这是因为小米官网做了域名重定向。)

在这里插入图片描述

整个访问小米官网的过程,可以大致划分为以下几个步骤:

  1. 浏览器输入网址,回车
  2. DNS域名解析
  3. 建立TCP连接
  4. 发起http请求
  5. 服务器响应http请求,返回网页
  6. 浏览器解析网页,并渲染

所以,当我们访问这个网址的的时候,首先要做的就是域名解析。域名解析就是要得到域名对应的ip地址,浏览器首先会搜索自身DNS缓存和操作系统DNS缓存,找不到就读取系统hosts文件,若还找不到,那就想DNS服务器发起DNS请求。DNS服务器一般由运营商提供,它会查找自身缓存,若仍然找不到,它会代替我们的浏览器发起迭代DNS查询请求。

分析DNS协议

DNS是一个应用层协议,基于TCP/IP传输,一般的DNS报文传输层是UDP报文。查询的时候一般请求DNS服务器的53端口号。

查询请求的数据包如下:(ps:221.11.1.67 是西安联通提供的DNS服务器)

在这里插入图片描述

响应报文如下:

在这里插入图片描述

可以看到,经过DNS查询,得到了IP地址123.125.103.192111.202.1.201

接下来建立TCP连接,如图是TCP三次握手的报文。

在这里插入图片描述

分析TCP握手过程

  • 第一次握手:客户端向服务器发送连接请求包,标志位SYN置为1,序号为Seq = X (由报文可以看出X=0)

在这里插入图片描述

  • 第二次握手:服务器收到客户端发过来报文,由SYN=1知道客户端要求建立联机。向客户端发送一个SYN和ACK都置为1的TCP报文,设置初始序号Seq=Y(由报文可得Y=0),将确认序号ACK设置为客户的序列号Seq+1,即X+1 = 0+1=1,

在这里插入图片描述

  • 第三次握手:客户端收到服务器发来的包后检查ACK是否正确。以及标志位ACK是否为1。若正确,客户端再次发送确认包,ACK标志位为1,SYN标志位为0。确认序号ACK=Y+1=0+1=1,发送序号为X+1=1。服务器收到后确认序号值与ACK=1则连接建立成功,可以传送数据了

在这里插入图片描述

TCP建立完成后,就可以进行数据传输了。客户端会向服务器发送HTTP请求报文。

分析HTTP报文

HTTP报文由三部分组成,开始行、首部行和实体主体,如下图。在请求报文中,开始行就是请求行。

在这里插入图片描述

下图是抓取的请求报文。可以看到,请求方法为GET,协议版本是HTTP/1.1,主机名www.xiaomi.comUser-Agent是生成请求的浏览器类型,Accept是客户端可识别的响应内容类型列表。Accept-Language: 客户端可接受的自然语言。Accept-Encoding: 客户端可接受的编码压缩格式。connection:连接方式。

在这里插入图片描述

下图是响应报文,可以看到我们的请求被重定向到了www.mi.com

在这里插入图片描述

收到响应报文后,发现我们的请求被重定向到了www.mi.com

所以,我们要去访问www.mi.com,所以再来一遍DNS查询,TCP连接。抓包结果如下:

在这里插入图片描述

那么与www.mi.com建立了连接之后呢,就可以开始传输数据了吗?并不是。

在数据传输之前,我们要建立加密安全数据通道,这就要用到TLS协议。

分析TLS报文

客户端会先向服务端发送Client Hello消息,其中包括了随机数、密码套件以及密钥交换算法参数。服务端收到后会给确认,发送给客户端Server Hello 数据包,服务端会根据Client Hello提供的协议版本列表,选择版本。

下图是TLS协议Client Hello

在这里插入图片描述

下图是服务端发出的Server Hello

在这里插入图片描述

到此,TLS的握手过程就结束了,后面可以加密传输消息了。

分析ARP协议

实验环境:两台电脑同处于一个局域网下,我的电脑IP地址是10.102.38.182,另外一台点脑ip地址是10.102.40.125

用我的电脑ping另外一台电脑,使用wireshark抓包

请求报文如下:

在这里插入图片描述

响应报文如下:

在这里插入图片描述

SMTP抓包测试

注意:抓取SMTP数据包需要关闭邮件客户端的SSL加密选项,否则无法抓到。

发送一封测试邮件,观察wireshark抓包结果。

可以看到,首先向211.11.1.67DNS服务器发送了DNS查询。

在这里插入图片描述

报文如下:我用的是QQ邮箱,所以查询的是QQ的邮件服务器。

在这里插入图片描述

DNS查询结束后,需要进行TCP握手,建立TCP连接,然后才开始smtp报文。

我直接筛选smtp报文来分析。如图,是筛选结果。因为在smtp报文之前就已经建立了tcp连接,所以第一条smtp报文就是服务器端发给客户端的。

在这里插入图片描述

可以逐条分析一下:

第98帧,服务器发给客户端,响应代码220表示连接建立成功

在这里插入图片描述

第99帧,客户端收到220代码后,继续发送请求,首先是发送EHLO命令。一般来说客户端和SMTP服务端建立连接之后就需要发送EHLO或者是HELO命令,后面附带的参数是domain,即相当于客户端的主机域名或者是主机名,这一步的主要作用是声明身份,EHLO/HELO命令相当于是HELLO命令,两者之间的主要区别是EHLO带身份验证而HELO不带身份验证,因此EHLO要更加安全

在这里插入图片描述

第101帧,服务端接收到客户端的EHLO请求之后,返回了一个250代码并且附带了支持的身份验证方式

在这里插入图片描述

第102帧,客户端使用AUTH命令进行身份验证

在这里插入图片描述

第104帧,身份验证成功,返回235的成功代码。

在这里插入图片描述

到这里就完成了和SMTP服务器建立连接和身份验证的步骤。

第105帧,客户端发送MAIL FROM命令,声明邮件的发件人

在这里插入图片描述

第108帧,服务器返回250代码确定操作成功

在这里插入图片描述

第109帧,然后客户端发送RCPT TO命令声明邮件的收件人

在这里插入图片描述

第113帧,服务器返回250代码确定操作成功

在这里插入图片描述

第114帧,客户端使用DATA命令,告知服务器要开始传输邮件的正文内容。

在这里插入图片描述

第118帧,服务端返回354代码,告知邮件的内容结束以<CR><LF>.<CR><LF>为标记

在这里插入图片描述

第119帧,客户端接收到354代码后,会给服务端法案送一个确认数据包,开始传输邮件内容

在这里插入图片描述

第121帧,邮件正文。我们可以看到在上面的数据包中包含了SMTP和IMF两个部分,因为抓包发送的邮件内容都是文本,所以直接使用IMF协议就可以传输,而SMTP协议中的报文内容则是DATA命令的终止标志

在这里插入图片描述

因为我们为了抓包方便,所以没有加密。所以其实我们可以在这里面直接提取到邮件内容。看下图,此报文中有编码格式以及编码。

在这里插入图片描述

我们将编码解码为GB2312即可看到邮件内容。如图,确实是我们发送的内容。(解码网站为https://base64.us/

在这里插入图片描述

第127帧,在客户端发送完邮件内容之后,还会接着发送一个QUIT命令来表示结束这次的SMTP传输

在这里插入图片描述

服务器在接受到数据之后会返回250代码表示接受成功并且再返回221代码表示结束本次SMTP传输。分别在第126帧和第131帧.

在这里插入图片描述

在这里插入图片描述

至此,整个邮件传输过程结束。

我这里筛选了smtp报文,并逐帧分析了整个会话流程。其实还有另一种方式,我们可以右键选择追踪tcp流来追踪整个会话过程。如下图,这个会话流程可以清晰的看到客户端和服务器的信息交互,我们可以直接分析服务器和客户端的会话过程。

在这里插入图片描述

追踪tcp流,我们也可以看到,确实是先经过了TCP三次握手,才进行smtp握手。

在这里插入图片描述

RTP抓包分析

RTP协议用于实时传输数据。RTP协议是一种基于UDP的传输协议,一般视频监控,视频会议,语音电话(VOIP)之类的,都会使用RTP协议。

但是我找了下,没有找到能抓到RTP包的网站。然后考虑他的应用场景,手边刚好有海康威视的摄像头,我尝试了一下,连接电脑,打开监控视频,然后下载了一段监控视频,并没有抓到RTP包(连UDP都没抓到,我也不太懂怎么回事)。

随后又想到RTP还应用于语音电话上面,巧了,刚好我这里有一台IP电话交换机,通话使用的就是sip协议,就抓了下这个。

配置好交换机,在两台电脑上分别使用MicroSIP软件配置好通话账号,然后,拨打电话,抓包分析。

在这里插入图片描述

抓包结果如下:

在这里插入图片描述

RTP报文如下:

在这里插入图片描述

RTMP抓包分析

RTMP是流媒体传输协议。我使用软件VLC,播放rtmp网络流地址。

测试直播地址为rtmp://media3.scctv.net/live/scctv_800(是美国的一个电视台)

在这里插入图片描述

抓包结果如下:可以看到,dns查询完了之后,先tcp三次握手建立连接,然后才开始rtmp。

在这里插入图片描述

首先,客户端端发送C0+C1块,确认版本。

(本来客户端向服务器发送C0块,表示要和服务器握手,C0中包含版本号。服务器收到C0后,检查C0中的版本是否支持,如果支持发送S0作为响应,否则应该终止连接。客户端和服务器都分别等待C1和S1,等待版本确认。客户端收到S1后发送C2,服务器收到C1后发送S2(确认),握手完成。)

但是实际上客户端直接发了C0+C1,不等服务端了,自己给自己确认。

在这里插入图片描述

服务器应该回复确认包(发送S0+S1+S2)。但是我没抓到,只抓到了两个Unknown的包,我也不知道啥意思,可能是网络的问题。

在这里插入图片描述

不过不重要,反正他本来客户端也不让服务器确认版本号,自己给自己确认了。

直接看下一个,客户端发送C2,握手完成。

在这里插入图片描述

客户端发送connect,报文如下

在这里插入图片描述

服务器给客户端发送如下报文,主要是告诉客户端确认窗口大小,设置节点带宽。

在这里插入图片描述

客户端向服务器发送确认窗口大小,并请求创建流(createStream)。

在这里插入图片描述

服务器端给出响应。

在这里插入图片描述

客户端向服务器发送播放命令,请求播放stream,并设置Buffer Length 1,3000ms。(展开整个报文太长了)

在这里插入图片描述

服务端给出响应结果

在这里插入图片描述

服务器向客户端发送推流通知,并附带元数据信息(分辨率、帧率、音频采样率、音频码率等等)和视频、音频数据。

此时客户端就可以开始正常播放rtmp流了。
在这里插入图片描述

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-10-21 12:46:40  更:2021-10-21 12:47:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:40:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码