网站优化

网站优化

Products

当前位置:首页 > 网站优化 >

Wireshark的TCP包详解下篇,你掌握了吗?

GG网络技术分享 2026-04-16 14:19 2


宏哥又来了:Wireshark的TCP包详解下篇,你掌握了吗?

一言难尽。 大家好,我是宏哥。时间过得真快,转眼间又到了分享技术干货的时候了。在此之前,宏哥已经介绍和讲解过Wireshark的启动界面。但是很多初学者还会碰到一个难题,就是感觉wireshark抓包界面上也是同样的问题很多东西不懂怎么看。其实还是挺明了的宏哥今天就单独写一篇对其抓包界面进行详细地介绍和讲解一下。今天宏哥还是以度娘为例, 进行演示WireShark抓包实战,这篇文章是下篇,如果你还没看过上篇,建议先去补补课,当然宏哥也会在这里尽量把事情说清楚,毕竟宏哥就是这么一个贴心的人。

在开始之前,宏哥要啰嗦一句,网络抓包这事儿,说难也难,说简单也简单。就像谈恋爱一样,你看C和D是男女朋友,C有一天发现D是渣男,想跟D分手。这过程多复杂啊,但是用TCP包一分析,清清楚楚。好了言归正传,今天我们要讲的是TCP包详解下篇,你掌握了吗?如果没掌握,宏哥建议你多看几遍,毕竟技术这东西,不进则退。

《熬夜整理》保姆级系列教程-玩转Wireshark抓包神器教程(8)-Wireshark的TCP包详解-下篇

1. 准备工作:工欲善其事, 必先利其器

先说说我们需要打开Wireshark。WireShark的强大之处就在于不用你再做任何配置就可以抓取http或者https的包。今天宏哥主要是讲解和分享如何使用WireShark抓包。安装好 Wireshark 以后,就可以运行它来捕获数据包了。方法如下:在 Windows 的 开始 菜单中,单击 Wireshark 菜单,如下图所示:

层次低了。 这里宏哥就不放图了大家脑补一下那个鲨鱼图标。点击启动... 2.在捕获选项中:勾选WLAN网卡或者其他网卡。点击开始。启动抓包。如下图所示:

踩雷了。 点击开始后,wireshark处于抓包状态中。由于本地计算机在浏览网站等一系列操作时, 以太网 接口的数据将会被 Wiresh...

为了方便大家对比, 宏哥特意整理了一个市面上常见的网络抓包工具对比表,大家看看Wireshark是不是真的很强大:,栓Q!

工具名称 主要用途 优点 缺点 宏哥推荐指数
Wireshark 通用网络分析 开源、协议支持极其丰富、过滤器强大 界面稍显复杂,新手入门难 ★★★★★
Fiddler Web调试 轻量级,对Web开发友好,能改包 主要针对HTTP,底层TCP分析弱 ★★★★☆
Tcpdump Linux服务器抓包 命令行,服务器无图形界面也能用 没有图形界面分析需要导出 ★★★★☆
Sniffer 老牌网络分析 专业,曾经是行业标准 老旧,收费,不推荐新手 ★★☆☆☆

看到了吧,Wireshark绝对是当之无愧的老大。好了抓包开始了接下来我们要获取百度的IP。想必都知道如何获取吧! 就这样吧... 方法很多, 宏哥就要其中一种最简单的方法来看一下:通过ping命令即可: ping ,如下图所示:

从上图可以看出其中39.156.66.10就是度娘的IP地址,后面需要通过这个IP地址,作为wireshark的过滤条件,方便我们找到对应的报文。这一步很关键,不然你在茫茫数据包中找那个IP,就像大海捞针一样难,不靠谱。。

2. 开始抓包:实战演练

来一波... 接下来我们在命令行输入curl -I 来向百度发送一个HTTP请求。如下图所示:

当冤大头了。 然后停止wireshark抓包。在wireshark的过滤器中,输入ip.addr == 39.156.66.10来过滤发送给百度的请求。可以得到如下过滤后的报文。如下图所示:

薅羊毛。 4.从上图我们可以清楚地看到前三条是TCP三次握手建立连接的报文,中间三个是包括一个HTTP请求,一个TCP的确认报文和一个HTTP响应报文,响应报文的TCP确认报文和第一次挥手被放在了同一个报文里。后面的四条是TCP四次挥手断开连接的报文。 4.3三次握手 4.3.1第一次握手 三次握手的第一个报文:SYN报文,也就是第一次握手,如下图所示:

结果你猜怎么着? 这里宏哥要插一句, 很多童鞋看到这里就晕了别急,我们慢慢来。宏哥觉得说清楚了如果有想了解更清楚地,可以查一些资料。好了今天时间也不早了就到这里!感谢您耐心的阅读~~ 开个玩笑,我们继续。

3. TCP三次握手:像开会一样建立连接

TCP的三次握手有点像我们远程有会议;宏哥先说说来一个我们日常工作中比较常见的例子:远程会议、视频或者打 故事简述:A同事和B同事要开会。 1)A同事:喂!听得到我说话吗?; 2)B同事:听得到,你能听到我说话吗?; 3)A同事:听到了我们可以开会了。 是不是很形象?我们来看具体的报文。 3.1 第一次握手:SYN报文 三次握手的第一个报文:SYN报文,也就是第一次握手,如下图所示: 1.根据之前理论知识,我们趁热打铁:先说说 来看第一个报文,即三次握手的第一次握手。点击选中第一个TCP即可查看。如下图所示: 2.整个第一次握手的报文消息详细解析,都在上图中右边做了红色标注。 我始终觉得... 我们来看比较重要的几个部分。 ①开始是2字节的源端口号和2字节的目的端口号。 稳了! ②紧接着的四个字节, 表示的是客户端传送给服务端的初始序号,这是一个随机值,目的是维护平安。 ③注意, 再紧接着的四个字节是确认号, 不过在第一次握手的报文中,ACK标志bit位是0,所以其实吧在第一次握手时确认号是无意义的 ,主要原因是这时候也没有什么需要确认的。 ④再后面的4个bit,表示的是TCP头部长度,也可以理解为数据偏移量。 注意, 打脸。 这里是8,而该字段的单位是4字节,所以TCP头部是8*4 = 32字节 ; ⑤紧接着的是4个保留bit位,和8个特殊标志bit位。这些标志按顺序依次是CWR、 ECE、URG、ACK、PSH、RST、SYN、 搞一下... FIN,关注ACK、SYN、FIN即可。这里SYN为1,表示是一个建立连接的报文,ACK为0,表示本报文的确认号无意义。 ⑥后面2字节表示接收窗口大小,是用于流量控制的,我们都...。 ⑦再后面是2字节的校验和,2字节的紧急数据指针。 ⑧需要额外指出的是此报文指出TCP头部有32个字节,而不是一般报文是20字节。这里是主要原因是在选项部分,本报文携带了一些额外的数据,其中包括MSS: 1460 bytes 等信息。 为了让大家更清楚这些标志位, 宏哥做了一个表格,大家一定要记住了: 标志位 英文名称 中文名称 作用描述 SYN Synchronize 同步序号 发起一个新连接 ACK Acknowledgment 确认 确认序号有效 FIN Finish 结束 释放一个连接 RST Reset 重置 强制断开连接 PSH Push 推送 接收方应尽快将数据交付给应用层 URG Urgent 紧急 紧急指针有效 3.2 第二次握手:SYN+ACK报文 1.同样的方法:点击选中第二个TCP即可查看。如下图所示: 2.上图中右边红色部分标注了第二次握手的报文详细信息,其大部分都和第一次握手类似。来看比较重要的几个部分 ①源端口号和目的端口号正好和第一次握手相反, 说明这是服务端响应客户端的报文 ②服务端给出了一个自己的初始序号A1 7C 07 91,对应2709260177。 累并充实着。 ③服务端的ACK bit位是1, 说明该报文的确认号是有意义的,确认号对应的值是15 ec 6b df,恰好是第一次握手的报文的序号+1,表示在该数字之前的字节都已经收到,期望下一次收到的报文的序号是这个数 ④这里TCP头部也有32字节,选项部分同样说明了自己的MSS等信息,这里的MSS给的值是1412字节。 总体上 第二次握手的报文和第一次握手的报文的区别在ACK bit位是1,并且确认号是第一次握手报文的序号+1,还有啊,两个报文都包括了额外的选项部分,并且头部都有32个字节。 3.3 第三次握手:ACK报文 三次握手的第三个报文:ACK报文, 也就是第三次握手,如下图所示: 2.上图中右边红色部分标注了第三次握手的报文详细信息, 第三次握手的大部分内容也都是类似的,挑出重点部分,太硬核了。。 ①第三次握手的序号是第二次的确认号。确认号是第二次的序号+1。 ②该报文的确认号、序号都和第三次握手的一样,闹乌龙。。 ③SYN字段是0。这里是主要原因是 次握手实际连接已经成功建立。其实吧,第三次握手是可以携带应用数据的,不过没见过这样做的。 他破防了。 到这里TCP三次握手结束,连接成功建立。一旦完成三次握手, 双方都处于 ESTABLISHED 状态,此时连接就已建立完成,客户端和服务端就可以相互发送数据了。 4. 数据传输:HTTP请求与响应 连接建立好了就该干正事了。主要原因是HTTP是基于TCP的协议, 所以每一个HTTP请求,即使只有一个分组,也至少涉及到两个TCP报文的传输,主要原因是接收方会发送一个确认报文给发送方。下面来看这个http请求对应的TCP确认报文。 客户端向服务端发送第三次握手的报文之后连接建立成功后紧接着会发送数据传输的信息。在这里是HTTP请求。来看这个请求对应的报文的信息,我直接好家伙。。 2.先说说 跟随宏哥来看HTTP层协议,将该部分翻译过来就是图中的HTTP部分标注。包含了请求行、请求头、空行。 注意, 这里的HTTP部分有73个字节,也是就是说TCP数据部分有73个字节 。 可不是吗! 1.同样的方法:点击选中HTTP请求后TCP的确认报文即可查看。如下图所示: ①上一个HTTP请求的http部分有73个字节, 所以本确认报文的确认号,就应当是上一个请求的序号+73,精辟。。 ②主要原因是接收方直到目前没有传输数据给发送方,所以序号目前只是建立连接时确定的初始序号+1,我明白了。。 ③这里PSH标志位的值没有置1, 可以理解为只有携带了数据的报文的再说说一个分组,才会将PSH标志位置为1,说起来...。 接下来的,就轮到HTTP响应的报文了也就是服务端响应给客户端的HTTP报文。 2.这里和之前的没有太大区别, 不过这一次报文由服务端发送,并且携带了数据,这里携带了305字节的数据,所以客户端接收后发送的确认报文的确认号,将会是本报文的序号+305。 ①主要原因是响应携带了305字节的数据,所以本次确认报文的确认号是之前的确认号/接收到报文的序号+305,求锤得锤。。 ②首部长度是20字节,头部没有了选项部分。 ③其中PSH bit为是1。这里是主要原因是这个报文只有这一个分组, 整个报文传输完毕,无需等待其他分组, 试试水。 通知接收方应当马上将报文交给应用程序, 造起来。 而不需要缓存起来等待足够的数据再交付给上层。 也就是说 这个HTTP请求报文,涉及一次HTTP数据报文和一次TCP确认报文。如果数据量较大,需要分组传输的话,涉及的传输更多。 5. TCP四次挥手:像分手一样断开连接 宏哥先说说来一个我们日常工作中比较常见的例子:和渣男/女分手、离婚。先上图: 这东西... 故事简述:C和D是男女朋友,C有一天发现D是渣男,想跟D分手。 1)C向D提出分手请求; 2)D收到请求后 虽然D是渣男,但是D还是很礼貌的,告诉C, 我直接起飞。 我收到你的请求了;但是我现在忙着跟其他人谈恋爱昵; 太离谱了。 3)D终于空下来了告诉C,我接受你的分手请求了; 4)C收到D的回复后告诉D我终于解脱。 四次挥手的过程,还是先上图: 数据传输完毕后双方都可释放连接。最开始的时候,客户端和服务器都是处于ESTABLISHED状态,然后客户端主动关闭,服务器被动关闭。 5.1 第一次挥手:FIN报文 注意, 这里FIN是1,这是由服务端发出的FIN报文,表示服务端准备好断开连接。服务器发送该报文后进入LAST_ACK阶段。 等等, 宏哥这里要纠正一下刚才那个比喻里C是主动方,但在我们抓的包里有时候服务端也会主动断开。我们看图说话。 HTTP响应对应的TCP确认报文,其实吧,这个也是第一次挥手的报文。第一次挥手和HTTP响应的确认报文是同一个报文, 大胆一点... 和其他的报文相比,除了FIN bit位被置为1,并没有什么其他区别。如下图所示: ①该报文的头长度也是20字节 ②这里ACK为1, 表示确认号有意义,FIN为1,表示这是一个断开连接的报文,所以这也是第一次挥手的报文,太治愈了。。 5.2 第二次挥手:ACK报文 2.第二次挥手的报文,由服务端发出,对第一次挥手的报文进行了确认。并且其中FIN是0, 有啥说啥... 主要原因是该报文只是接收方对发送方的第一次挥手报文的确认。 5.3 第三次挥手:FIN报文 推倒重来。 服务端准备断开连接, 准备好后服务端发出FIN报文。也就是第三次挥手。 ④接收窗口的值一直在变化, 这是流量控制的一部分,报文发送方发送自己的窗口大小,接收方根据对方窗口大小,调节报文发送速率。 5.4 第四次挥手:ACK报文 总的来说... 当客户端接收到此报文时会返回再说说一条确认报文给服务端。也就是第四次挥手。 2.服务端接收到这条确认消息后 并不会再发送报文,而是将连接关闭,进入CLOSED状态。 其实吧,程序数据长度。 6. 反思一下。 前边理论加后边的实践, 想必小伙伴或者童鞋们对TCP包有了进一步的认识了吧,宏哥觉得说清楚了如果有想了解更清楚地,可以查一些资料。好了今天时间也不早了就到这里!感谢您耐心的阅读~~ Wireshark网络抓包工具使用WinPCAP作为接口,直接与网卡进行数据报文交换,可以实时检测网络通讯数据,检测其抓取的网络通讯数据快照文件,通过图形界面浏览这些数据,可以查看网络通讯数据包中每一层的详细内容。它的强大特性:比方说包含有强显示过滤器语言和查看TCP会话重构流的能... 网络中不论传输什么,到头来通过物理介质发送的都是二进制,类似于0101的Bit流。纯文本中文通常采用UTF-8编码,英文用ASCII编码;非纯文本音频、 视频、图片、压缩包等按不同编码封装好,转换成二进制传输。在IP网络中,通过Wireshark抓包,获取的原始数据都是二进制。 哪种网络情况... 为了方便大家在移动端也能看到我分享的博文,现已注册个人微信公众号,扫描左下方二维码即可,欢迎大家关注,有时间会及时分享相关技术博文。 为了方便大家互动讨论相关技术问题,现已组建专门的微信群,由于微信群满100,请您扫描右下方宏哥个人微信二维码拉你进群平时上班忙,所以加好友不及时,请稍安勿躁~,欢迎大家加入这个大家庭,我... 再说说 宏哥再给大家推荐几款学习网络协议的好书,毕竟光看文章是不够的,系统的学习才能成才: 排名 书籍名称 作者 宏哥点评 1 《TCP/IP详解 卷1:协议》 W. Richard Stevens 圣经级别的书,虽然老了但原理永不过时。 2 《图解TCP/IP》 日] 井口信和 入门必看, 大量图示,适合小白。 3 《Wireshark网络分析就这么简单》 林沛满 国内作者写的, 非常接地气,实战性强。 4 《网络是怎样连接的》 日] 户根勤 从浏览器输入URL开始讲起,通俗易懂。 文章浏览阅读2.5k次,点赞46次,收藏34次。本文介绍了Wireshark,一款免费开源的网络抓包工具,其功能包括协议分析、 网络故障排查和平安监控,以及与Fiddler、Sniffer等工具的比较。文章详细讲述了Wireshark的历史、原理、抓包方法和适用场景。 保姆级系列教程-玩转Wireshark抓包神器教程-初识Wireshark 最新推荐文章于 2026-01-10 17:00:17 发布 原创最新推荐文章于 2026-01-10 17:00:17 发布·2.5k 阅读·46 · ·CC 4.0 BY-SA版权版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。 文章标签: #wireshark#测试工... 此文介绍了几种有趣的AI算法及其应用, 涵盖了视频生成、代码生成和游戏AI等领域,领略到了最新的AI技术的魅力与未来的无限潜力。 按照计划今天就要讲解和分享TCP协议的三次握手和四次挥手以及使用Wireshark抓取TCP/IP协议数据包的技能,能够深入分析TCP帧格式及“TCP三次握手”。通过抓包和分析数据包来理解TCP/IP协议,进一步加深对TCP包的理解和认识。 从上面的过程可以发现 第三次握手是可以携带数据的, 前两次握手是不可以携带数据的 ,这也是面试常问的题。大家一定要记住了面试官问起来你就把宏哥这篇文章背给他听。 好了今天主要是关于Wireshark抓包界面详解。到此宏哥就将Wireshark抓包讲解和分享完了,是不是很简单了。今天时间也不早了,就到这里!感谢您耐心的阅读~~ 为了方便大家在移动端也能看到我分享的博文,现已注册个人微信公众号,扫描左下方二维码即可,欢迎大家关注,有时间会及时分...


提交需求或反馈

Demand feedback