此篇博客记录使用Wireshark抓包分析协议。

目录

一、DNS

二、分析TCP握手过程

三、TLS报文

四、HTTP协议

五、SMTP

六、ARP

七、RTP

八、RTMP


一、DNS

DNS是域名系统,Domain Name System的缩写,是基于TCP/IP的一个服务。DNS是将主机名到IP地址转换的目录服务。DNS是:①一个由分层的DNS服务器实现的分布式数据库②一个使得主机能够查询分布式数据库的应用层协议,使用53号端口。如图中的221.11.1.67是西安联通提供的DNS服务器。

域名解析总体可分为两大步骤,第一个步骤是本机向本地域名服务器发出一个DNS响应报文(图中所给的是向221.11.1.67发送一个DNS请求报文),报文里携带需要查询的域名;第二步骤是本地域名服务器向本机回应一个DNS响应报文,里面包含域名对应的IP地址。(本例中的华为官网IP为113.142.160.4)

请求报文如下:

响应报文如下:

这是回答结构,共有四个答案。

可以看到,经过DNS查询,得到IP地址为113.142.160.4。接下来建立TCP连接。

二、分析TCP握手过程

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

建立连接可以分为三部分,当三次握手完成,TCP客户端和服务器成功地建立连接,可以传输数据了。

1.客户端发送一个带SYN标志的TCP报文到服务器,这是三次握手中报文1。

2.服务器端回应客户端,发送一个带ACK标志和SYN标志的报文,这是三次握手中的第2个报文。因此,它表示对刚才客户端SYN报文的回应;同时又标志SYN给客户端,询问客户端是否准备好进行连接。

3.客户端必须再次回应服务端一个ACK报文,这是报文3。

如下图所示,本机(10.94.49.169)和华为(113.142.160.4)进行了三次握手。

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

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

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

三、TLS报文

TLS(Transport Layer Security,传输层安全协议)用于两个应用程序之间提供保密性和数据完整性。

建立握手连接的目的:(1)身份的验证,client与server确认对方是它相连接的。(2)client与server交换session key,用于连接后数据的传输加密和hash校验。

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

下图是TLS协议Client Hello。

下图是服务端发出的Server Hello。

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

四、HTTP协议

HTTP协议(HyperText Transfer Protocol)一般指HTTP(超文本传输协议),它是Web的核心。超文本传输协议是一种用于分布式、协作式和超媒体信息系统的应用层协议,是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件需遵守这个标准。HTTP由两个程序实现:一个客户程序和一个服务器程序。客户程序和服务器程序运行在不同的端系统中,通过交换HTTP报文进行会话。HTTP定义了这些报文的结构以及客户和服务器进行报文交换的方式。

HTTP请求/响应步骤:

1.客户端连接web服务器:HTTP客户端与web服务器建立一个TCP连接。

2.客户端向服务器发起HTTP请求:通过已经建立的TCP连接,客户端向服务器发送一个请求报文。

3.服务器接收HTTP请求并返回HTTP响应:服务器解析请求,定位请求资源,服务器将资源副本写到TCP连接,有客户端读取。

4.释放TCP连接:若connection模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection模式为

HTTP报文三部分组成,行、首部行和实体主体,如下图。在请求报文中,开始行就是请求行。本例中所访问的为www.cctv.com。

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

下图为响应报文,可以看到我们的请求被重定向到www.cctv.com。

五、SMTP

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,是一种提供可靠且有效的电子邮件传输的协议,是因特网电子邮件的核心。SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知。SMTP独立于特定的传输子系统,且只需要可靠有序的数据流信道支持,SMTP的重要特征之一是其能跨越网络传输邮件,即“SMTP邮件中继”。

本例中,所使用的为QQ邮箱,进行抓包,所以查询到的是QQ的邮件服务器,但要注意抓取SMTP数据包需要关闭邮件客户端的SSL加密选项。首先可以看到本机向(211.11.1.67)DNS服务器发送了DNS查询。

DNS查询结束后,需要进行TCP握手,建立TCP连接,然后才开始SMTP报文。第一条SMTP报文由服务器发给客户端,响应代码220表示连接建立成功。

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

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

客户端使用AUTH命令进行身份验证。

身份验证成功后,服务器端向客户端返回235的成功代码。

到这里就完成了和SMTP服务器建立连接和身份验证的步骤。随后客户端发送MAIL FROM命令,声明邮件的发件人。

服务器返回250代码确定操作成功。

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

服务器返回250代码确定操作成功。

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

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

客户端接收到354代码后,会给服务端发送一个确认数据包,并开始传输邮件内容。

邮件正文。我们可以看到在上面的数据包中包含了SMTP和IMF两个部分,因为抓包发送的邮件内容都是文本,所以直接使用IMF协议就可以传输,而SMTP协议中的报文内容则是DATA命令的终止标志。由于关闭了SSL加密,所以可以直接在这里面提取到邮件内容。在客户端发送完邮件内容之后,还会接着发送一个QUIT命令来表示结束这次的SMTP传输。

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

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

六、ARP

地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议,将网络层地址(IP地址)和链路层地址(MAC地址)之间进行转换。

ARP报文格式如下

实验环境,一台电脑和一部手机处在同一个局域网下,电脑IP为172.20.10.4,手机的IP为172.20.10.2。使用电脑来ping手机,使用wireshark抓包。

请求报文如下:

响应报文如下:

七、RTP

RTP(Real-time Transport Protocol,实时传输协议),通常运行在UDP上。它用来为IP网上的语音、图像、传真等多种需要实时传输的多媒体数据提供端到端的实时传输服务。RTP用于在单播或多播网络中传送实时数据,一般音频、视频会议,视频监控,语音电话和翻译器、混合器等都会使用到RTP协议。

RTP分组首部字段

有效载荷类型字段的长度为7比特。对于音频流,有效载荷类型字段用于指示所使用的音频编码类型。对于一个视频流,有效载荷类型用于指示视频编码类型。

序号字段长为16比特。每发送一个RTP分组则该序号增加1,而且接收方可以用该序号来检测丢包和恢复分组序列。

时间戳字段长为32比特。它反映了RTP数据分组中的第一个字节的采样时刻。

同步源标识符(SSRC)长为32比特。它标识了RTP流的源。通常在RTP会话中的每个流都有一个不同的SSRC。

下图为两台电脑进行语音通话所抓取的部分RTP包。

RTP报文如下:

八、RTMP

RTMP(Real-Time Messaging Protocol实时消息传送协议)的缩写,RTMP是流媒体传输协议,本次实验使用的为VLC,播放RTMP网络流地址,使用wireshark进行抓包分析。(测试直播地址为rtmp://media3.scctv.net/live/scctv_800)

Wireshark抓包结果如下,可以看到首先进行DNS查询,然后为TCP三次握手建立连接,之后才进行RTMP。

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

客户端向服务端发送C0块,表示和服务器握手,C0中包含版本号。服务器收到C0之后,检查C0版本支持,返回发送一个S0,若不支持则应终止连接。客户端和服务端都分别等待C1和S1,等待版本确认。客户端收到S1后发送C2,服务器收到C1后发送S2,握手完成。下图为服务器回复的确认包(S0+S1+S2)。

客户端发送C2,握手完成。

下图为客户端发送Connect,报文如下:

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

服务器端给出响应。

客户端向服务器发送播放命令,请求播放stream,并设置Buffer Length 1,3000ms。

服务端给出响应结果。

服务器向客户端发送推流通知,并附带元数据信息(分辨率、帧率、音频采样率等等)和视频、音频数据。此时客户端就可以开始正常播放RTMP流了。

大概的实验流程就如上所示了,大家一定要自己动手实践一下才能更好地掌握知识。

用Wireshark抓包分析协议 计算机网络相关推荐

  1. Wireshark抓包分析之ICMP协议包

    Wireshark抓包分析之ICMP协议包 一. Wireshark简介:(前身为Ethereal,2006年改名为wireshark) Wireshark 是一个网络封包分析软件.网络封包分析软件的 ...

  2. 用wireshark抓包分析TCP协议的三次握手连接、四次握手断开

    用wireshark抓包分析TCP协议的三次握手连接.四次握手断开 一.TCP三次握手图解 二.TCP得四次挥手过程 三.用Fiddler抓包,分析验证一个HTTPS网站的TCP连接过程 一.TCP三 ...

  3. PXE+VMware主机模式+KickStart脚本 自动安装ESXi 并试用WireShark抓包分析其中的协议TFTP,DHCP

    1 安装 1.1 实验环境: Windows 10 (主机) VMWare workstation 15  (运行于主机上) Tiny PXE Server 1.0.0.21   (官网地址,下载地址 ...

  4. Wireshark抓包分析TCP建立/释放链接的过程以及状态变迁分析

    Wireshark抓包分析TCP建立/释放链接的过程以及状态变迁分析 一.介绍计算机网络体系结构 1.计算机的网络体系结构 在抓包分析TCP建立链接之前首先了解下计算机的网络通信的模型,我相信学习过计 ...

  5. Wireshark抓包分析微信功能----tcp/ip选修课期末大作业

    分析相关功能所抓取的数据包和完整大作业报告(word版)均已上传至Wireshark抓包分析微信功能----tcp/ip选修课期末大作业-网络监控文档类资源-CSDN文库 适合Wireshark入门的 ...

  6. Wireshark 抓包分析 RTSP/RTP/RTCP 基本工作过程

    整体而言,RTSP 通常工作于可靠的传输协议 TCP 之上,就像 HTTP 那样,用于发起/结束流媒体传输,交换流媒体元信息.RTP 通常工作于 UDP 之上,用于传输实际的流媒体数据,其中的载荷格式 ...

  7. TCP/IP详解卷1 - wireshark抓包分析

    TCP/IP详解卷1 - 系列文 TCP/IP详解卷1 - 思维导图(1) TCP/IP详解卷1 - wireshark抓包分析 引言 在初学TCP/IP协议时,会觉得协议是一种很抽象的东西,通过wi ...

  8. wireshark抓包分析数据怎么看 wireshark使用教程

    大家都知道Wireshark是非常流行且知名的网络抓包数据分析工具,可以截取各种网络数据包,并显示数据包详细信息,常用于开发测试过程各种问题定位.网络故障排查等情况.但是很多网友不清楚如何使用Wire ...

  9. Wireshark抓包分析交换机工作原理

    [实验名称] 交换机工作原理 [实验目的] 1.熟悉Linux虚拟网络环境: 2.熟悉Linux中network namespace的基本操作: 3.熟悉Linux中虚拟以太网设备Tap和veth p ...

最新文章

  1. SAP S/4HANA销售订单创建时,会自动触发生产订单的创建
  2. 为什么Python类语法应该不同?
  3. 电脑 你离我有多远!
  4. CTF工具(1)--- ARCHPR--含安装/使用过程
  5. 巧用Java8中的Stream,让集合操作6到飞起!!!
  6. php获取数据库的表名和字段名
  7. html5 页面答题算分,JavaScript实现答题评分功能页面
  8. mysql 存储引擎文件夹_4种常用MySQL存储引擎
  9. 用vim写python代码的两个关键设置
  10. iOS 集成友盟分享图片链接为http时无法加载问题解决
  11. 【百度网盘】电脑版百度网盘二维码无法加载的问题
  12. JetPack之DataStore源码笔记
  13. 与阿里合伙人合影,两年净赚一百万,这个草根姑娘有什么魔力?
  14. jquery UI 隐藏关闭按钮
  15. 嵌入式设备交叉编译perf性能分析工具
  16. 12306python源码抢票(亲测可用)
  17. InDesign 教程如何制作明信片?
  18. 磨砺数年,高效PERC技术终迎好时光
  19. 在html文件中以下使用绝对路径表示的是,JavaWeb——HTML5常用知识点
  20. ubuntu18.04 安装Adobe Flash Player

热门文章

  1. c语言中x=y=100合法吗,【单选题】已知:int x; int y[10]; 下列合法的选项是( )。 A. x B. (x+3) C. 5 D. y...
  2. linux vim 编辑 保存 退出
  3. spoolsv病毒的清除
  4. 关于spoolsv.exe程序问题
  5. apache2 docker 无法访问_Docker 安装 Apache
  6. usleep()和sleep()的区别
  7. 搞深度学习需掌握的基础数学知识
  8. PINN深度学习求解微分方程系列一:求解框架
  9. Elemrnt UI DatePicker日期选择器(格式、限定日期),周选择器
  10. 语法分析器(c++)