用Wireshark抓包分析协议 计算机网络

article/2025/10/7 6:06:32

此篇博客记录使用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流了。

 

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

 

 

 

 


http://chatgpt.dhexx.cn/article/7kJ98bFo.shtml

相关文章

TCP/IP协议抓包分析

目录 一、TCP/IP协议在协议中分层的位置 二、TCP三次握手流程 三、打开wireshark抓包 四、TCP三次握手分析 1、TCP第一次握手 五、四次挥手流程 六、四次挥手抓包分析 一、TCP/IP协议在协议中分层的位置 二、TCP三次握手流程 1、客户端向服务端发送⼀个SYN1&#xff08;…

使用Wireshark抓包分析TCP协议

wireshark数据包详细栏每个字段对应的分层。 1、分层介绍 1.1、数据链路层 我们点开这个字段&#xff0c;从该字段中可以看到相邻两个设备的MAC地址 1.2、网络层 本层主要负责将TCP层传输下来的数据加上目标地址和源地址。 1.3、传输层 这一层用到了TCP协议 tcp包头 每个字…

wireshark抓包分析——TCP/IP协议

本文来自网易云社区 当我们需要跟踪网络有关的信息时&#xff0c;经常会说“抓包”。这里抓包究竟是什么&#xff1f;抓到的包又能分析出什么&#xff1f;在本文中以TCP/IP协议为例&#xff0c;简单介绍TCP/IP协议以及如何通过wireshark抓包分析。 Wireshark 是最著名的网络通…

使用wireshark抓包分析实战

今天继续给大家介绍渗透测试相关知识&#xff0c;本文主要内容是使用wireshark抓包分析实战。 免责声明&#xff1a; 本文所介绍的内容仅做学习交流使用&#xff0c;严禁利用文中技术进行非法行为&#xff0c;否则造成一切严重后果自负&#xff01; 一、wireshark分析ARP协议 …

Wireshark抓包及分析——HTTP

1、首先我们打开 Wireshark&#xff0c;可以看到有很多的网络&#xff0c;选择自己正在使用的网络&#xff0c;比如我现在就是使用 WLAN&#xff0c;双击点开就可以了。 2、然后开始抓包分析&#xff0c;在浏览器中输入网址 3、可以看到 Wireshark 已经抓到很多数据包&…

Http实战之Wireshark抓包分析

Http相关的文章网上一搜一大把&#xff0c;所以笔者这一系列的文章不会只陈述一些概念&#xff0c;更多的是通过实战&#xff08;抓包代码实现&#xff09;的方式来跟大家讨论Http协议中的各种细节&#xff0c;帮助大家理解那些反反复复记不住的的概念&#xff01; 搭建测试项目…

Wireshark抓包详细分析

wireshark抓包介绍 这里选了wifi网卡&#xff0c;开始抓包 上方的文本框可以输入一些规则&#xff0c;对抓到的包进行过滤。 过滤策略&#xff1a; 只看 TCP 协议的包&#xff0c;可以输入 tcp 然后回车&#xff1b;如果想看使用 UDP 协议的某个端口&#xff0c;输入 udp.p…

TCP 实战抓包分析

提纲 正文 显形“不可见”的网络包 网络世界中的数据包交互我们肉眼是看不见的&#xff0c;它们就好像隐形了一样&#xff0c;我们对着课本学习计算机网络的时候就会觉得非常的抽象&#xff0c;加大了学习的难度。 还别说&#xff0c;我自己在大学的时候&#xff0c;也是如…

计算机网络【wireshark抓包分析】

一个完整的三次握手就是&#xff1a;请求&#xff08;SYN&#xff09; — 应答&#xff08;SYNACK&#xff09; — 再次确认&#xff08;SYN&#xff09;。完成三次握手&#xff0c;客户端与服务器开始传送数据。 实验流程&#xff1a; 1、首先我们打开wireshark软件的主界面&a…

wireshark抓包分析(ARP,IP,ICMP)

ARP 介绍&#xff1a; 地址解析协议&#xff0c;即ARP&#xff08;Address Resolution Protocol&#xff09;&#xff0c;是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机&#xff0c;并接收返回消息&#xf…

HTTP协议抓包分析

文章目录 HTTP请求报文和响应报文的结构示意图请求报文分析响应报文分析参考资料 本次使用的测试的网站是&#xff1a;http://www.people.com.cn 15 Agu 2019记下&#xff1a;最好是就使用http的网站来分析。因为现在很多网站都是支持的https协议。但是因为我现在也是一个小白&…

html将字符串转为数值,JavaScript字符串转数字的5种方法及其陷阱

JavaScript 是一个神奇的语言,字符串转数字有 5 种方法,各有各的坑法!下面本篇文章就来介绍一下JavaScript字符串转数字的5种方法及其陷阱,希望对大家有所帮助。 String 转换为 Number 有很多种方式,我可以想到的有 5 种!parseInt(num); // 默认方式 (没有基数) parseInt…

CenterNet代码解析

CenterNet代码解析 CenterNet网络 代码解析 代码网址&#xff1a;https://github.com/xingyizhou/CenterNet

【计算机视觉】PnP算法简介与代码解析-柴政(solvepnp理论篇)

PnP算法简介与代码解析-柴政 PnP求解算法是指通过多对3D与2D匹配点&#xff0c;在已知或者未知相机内参的情况下&#xff0c;利用最小化重投影误差来求解相机外参的算法。PnP求解算法是SLAM前端位姿跟踪部分中常用的算法之一&#xff0c;本次公开课&#xff0c;将详细讲述P3P、…

Polygon zkEVM节点代码解析

1. 引言 前序博客&#xff1a; Polygon zkEVM网络节点 相关代码&#xff1a; https://github.com/0xPolygonHermez/zkevm-node&#xff08;Go语言&#xff09; Polygon zkEVM节点提供的主要服务模块有&#xff1a; 1&#xff09;JSON-RPC服务2&#xff09;Sequencer服务3&…

ICCV2017跟踪算法BACF原理及代码解析

文章和代码下载地址&#xff1a; Galoogahi H K, Fagg A, Lucey S. Learning Background-Aware Correlation Filters for Visual Tracking. 代码下载地址&#xff1a;http://www.hamedkiani.com/bacf.html BACF就是将MCCF多通道特征应用到CFLB上&#xff0c;然后通过ADMM求解…

【深度学习2】基于Pytorch的WGAN理论和代码解析

目录 1 原始GAN存在问题 2 WGAN原理 3 代码理解 GitHub源码 参考文章&#xff1a;令人拍案叫绝的Wasserstein GAN - 知乎 (zhihu.com) 1 原始GAN存在问题 实际训练中&#xff0c;GAN存在着训练困难、生成器和判别器的loss无法指示训练进程、生成样本缺乏多样性等问题。这…

YOLOv3:Darknet代码解析(四)结构更改与训练

背景&#xff1a;我们需要降低YOLOv2-tiny的参数量和存储量&#xff0c;以便硬件实现。 目的&#xff1a;更改YOLO结构&#xff0c;去掉后面的两层卷积层&#xff0c;降低参数量和运算量。 相关文章&#xff1a; YOLOv3&#xff1a;Darknet代码解析&#xff08;一&#xff0…

StrongSORT(deepsort强化版)浅实战+代码解析

1.实战部分 1.1 具体操作 其实和之前的deepsort没差 到github上下载Yolov5_StrongSORT_OSNet下载对应的yolov5去替代原文件中yolov5下载yolov5权重&#xff08;可以自动下载&#xff09;和ReID权重&#xff08;可能要科学上网&#xff09;放到weight里面 ReID权重有点神秘&a…

对比学习 ——simsiam 代码解析。:

目录 1 &#xff1a; 事先准备 。 2 &#xff1a; 代码阅读。 2.1: 数据读取 2.2&#xff1a; 模型载入 3 训练过程&#xff1a; 4 测试过程&#xff1a; 5 &#xff1a;线性验证 6 &#xff1a; 用自己数据集进行对比学习。 第一&#xff1a; 改数据集 &#x…