WireShark对tcp通信数据的抓包

一、抓包准备工作

安装wireshark

sudo apt update

sudo apt install wireshark

运行

二、WireShark工具面板分析

上图中所显示的信息从上到下分布在 3 个面板中,每个面板包含的信息含义如下:

Packet List 面板:显示 Wireshark 捕获到的所有数据包,这些数据包从 1 进行顺序编号。

Packet Details 面板:显示一个数据包的详细内容信息,并且以层次结构进行显示。这些层次结构默认是折叠起来的,用户可以展开查看详细的内容信息。

Packet Bytes 面板:显示一个数据包未经处理的原始样子,数据是以十六进制和 ASCII 格式进行显示。

在Packet Details面板中:

Frame:物理层的数据帧概况。
Ethernet II:数据链路层以太网帧头部信息。
Internet Protocol Version 4:互联网层IP包头部信息。
Transmission Control Protocol:传输层的数据段头部信息,此处是TCP协议。

2.1面板数据解析

双击packet list面板数据包

Frame 6: 87 bytes on wire (696 bits), 87 bytes captured (696 bits) on interface lo, id 0 (第6帧数据,线路87字节,实际捕获87字节)

Section number: 1

Interface id: 0 (lo)(接口id)

Encapsulation type: Ethernet (1)(封装类型)

Arrival Time: Jan 9, 2024 09:07:39.315583109 CST(捕获日期和时间)

[Time shift for this packet: 0.000000000 seconds]

Epoch Time: 1704762459.315583109 seconds

[Time delta from previous captured frame: 0.000184924 seconds]

(此包与前一个包的时间间隔)

[Time delta from previous displayed frame: 0.000184924 seconds]

[Time since reference or first frame: 1.000935456 seconds]

(此包与第一帧的时间间隔)

Frame Number: 6 (帧序号)

Frame Length: 87 bytes (696 bits) (帧长度)

Capture Length: 87 bytes (696 bits)(捕获长度)

[Frame is marked: False] (此帧是否做了标记,false否)

[Frame is ignored: False](此帧是否做了标记,false否)

[Protocols in frame: eth:ethertype:ip:tcp:data](帧内封装层次协议结构,eth:ethertype:ip:tcp,以太网,以太网协议,ip,tcp)

[Coloring Rule Name: TCP](着色标记的协议名称)

[Coloring Rule String: tcp](着色显示的字符串)

Ethernet II, Src: 00:00:00_00:00:00 (00:00:00:00:00:00), Dst: 00:00:00_00:00:00 (00:00:00:00:00:00)

Destination: 00:00:00_00:00:00 (00:00:00:00:00:00)(目标地址)

Source: 00:00:00_00:00:00 (00:00:00:00:00:00)(源mac地址)

Type: IPv4 (0x0800)

Internet Protocol Version 4, Src: 127.0.0.1, Dst: 127.0.0.1(ipv4协议)

Transmission Control Protocol, Src Port: 8877, Dst Port: 60856, Seq: 1, Ack: 17, Len: 21

Data (21 bytes)(tcp协议)

三、TCP三次握手抓取

1.第一次握手
第一次握手建立连接时,客户端向服务器发送SYN报文(Seq=x,SYN=1),并进入SYN_SENT状态,等待服务器确认。
2.第二次握手
第二次握手实际上是分两部分来完成的,即SYN+ACK(请求和确认)报文。

(1)服务器收到了客户端的请求,向客户端回复一个确认信息(Ack=x+1)。
(2)服务器再向客户端发送一个SYN包(Seq=y)建立连接的请求,此时服务器进入SYN_RECV状态。

3.第三次握手
第三次握手客户端收到服务器的回复(SYN+ACK报文)。此时,客户端也要向服务器发送确认包(ACK)。此包发送完毕客户端和服务器进入ESTABLISHED 状态,完成三次握手。此时就可以进行数据传输了。

右键追踪流,点击tcp

右边为服务端发送给客户端数据,左边为客户端发送给服务端数据

以下为完整的三次握手数据:

第一次握手抓包分析

Frame 1: 74 bytes on wire (592 bits), 74 bytes captured (592 bits) on interface lo, id 0

Ethernet II, Src: 00:00:00_00:00:00 (00:00:00:00:00:00), Dst: 00:00:00_00:00:00 (00:00:00:00:00:00)

Internet Protocol Version 4, Src: 127.0.0.1, Dst: 127.0.0.1

Transmission Control Protocol, Src Port: 47544, Dst Port: 8887, Seq: 0, Len: 0

Source Port: 47544(源端口号)

Destination Port: 8887(目标端口号)

[Stream index: 0](流节点号)

[Conversation completeness: Complete, WITH_DATA (31)]

[TCP Segment Len: 0]

Sequence Number: 0 (relative sequence number)(序列号)

Sequence Number (raw): 98905648

[Next Sequence Number: 1 (relative sequence number)]

Acknowledgment Number: 0

Acknowledgment number (raw): 0

1010 .... = Header Length: 40 bytes (10)(标头长度)

Flags: 0x002 (SYN)(标志syn)

000. .... .... = Reserved: Not set

...0 .... .... = Accurate ECN: Not set

.... 0... .... = Congestion Window Reduced: Not set

.... .0.. .... = ECN-Echo: Not set

.... ..0. .... = Urgent: Not set(紧急指针)

.... ...0 .... = Acknowledgment: Not set(确认编号)

.... .... 0... = Push: Not set(紧急位)

.... .... .0.. = Reset: Not set(重置)

.... .... ..1. = Syn: Set(设置syn为一)

[Expert Info (Chat/Sequence): Connection establish request (SYN): server port 8887]

[Connection establish request (SYN): server port 8887](专家信息)

[Severity level: Chat](安全级别)

[Group: Sequence]

.... .... ...0 = Fin: Not set(fin标志位)

[TCP Flags: ··········S·]

Window: 65495(窗口大小)

[Calculated window size: 65495](估计的窗口大小)

Checksum: 0xfe30 [unverified]

[Checksum Status: Unverified](校验和)

Urgent Pointer: 0

Options: (20 bytes), Maximum segment size, SACK permitted, Timestamps, No-Operation (NOP), Window scale

TCP Option - Maximum segment size: 65495 bytes(最大段大小)

TCP Option - SACK permitted(tcp sack允许选项)

TCP Option - Timestamps(时间戳)

TCP Option - No-Operation (NOP)(无操作指令)

TCP Option - Window scale: 7 (multiply by 128)(窗口比例)

[Timestamps]

第二次握手抓包分析

Frame 2: 74 bytes on wire (592 bits), 74 bytes captured (592 bits) on interface lo, id 0

Ethernet II, Src: 00:00:00_00:00:00 (00:00:00:00:00:00), Dst: 00:00:00_00:00:00 (00:00:00:00:00:00)

Internet Protocol Version 4, Src: 127.0.0.1, Dst: 127.0.0.1

Transmission Control Protocol, Src Port: 8887, Dst Port: 47544, Seq: 0, Ack: 1, Len: 0

Source Port: 8887(源端口)

Destination Port: 47544(目标端口)

[Stream index: 0]

[Conversation completeness: Complete, WITH_DATA (31)]

[TCP Segment Len: 0]

Sequence Number: 0 (relative sequence number)(序列号seq=0)

Sequence Number (raw): 1715005940

[Next Sequence Number: 1 (relative sequence number)]

Acknowledgment Number: 1 (relative ack number)(确认编号ack1((seq)0+1))

Acknowledgment number (raw): 98905649

1010 .... = Header Length: 40 bytes (10)

Flags: 0x012 (SYN, ACK)(标志位)

000. .... .... = Reserved: Not set

...0 .... .... = Accurate ECN: Not set

.... 0... .... = Congestion Window Reduced: Not set

.... .0.. .... = ECN-Echo: Not set

.... ..0. .... = Urgent: Not set

.... ...1 .... = Acknowledgment: Set(ack确认设置)

.... .... 0... = Push: Not set

.... .... .0.. = Reset: Not set

.... .... ..1. = Syn: Set(请求位)

第三次握手抓包分析

Frame 3: 66 bytes on wire (528 bits), 66 bytes captured (528 bits) on interface lo, id 0

Ethernet II, Src: 00:00:00_00:00:00 (00:00:00:00:00:00), Dst: 00:00:00_00:00:00 (00:00:00:00:00:00)

Internet Protocol Version 4, Src: 127.0.0.1, Dst: 127.0.0.1

Transmission Control Protocol, Src Port: 47544, Dst Port: 8887, Seq: 1, Ack: 1, Len: 0

Source Port: 47544(源端口号)

Destination Port: 8887(目标端口号)

[Stream index: 0]

[Conversation completeness: Complete, WITH_DATA (31)]

[TCP Segment Len: 0]

Sequence Number: 1 (relative sequence number)(序列号seq1(sck))

Sequence Number (raw): 98905649

[Next Sequence Number: 1 (relative sequence number)]

Acknowledgment Number: 1 (relative ack number)(确认编号ack1((seq)0+1))

Acknowledgment number (raw): 1715005941

1000 .... = Header Length: 32 bytes (8)

Flags: 0x010 (ACK)(标志位)

000. .... .... = Reserved: Not set

...0 .... .... = Accurate ECN: Not set

.... 0... .... = Congestion Window Reduced: Not set

.... .0.. .... = ECN-Echo: Not set

.... ..0. .... = Urgent: Not set

.... ...1 .... = Acknowledgment: Set(确认编号已经设置)

.... .... 0... = Push: Not set

.... .... .0.. = Reset: Not set

.... .... ..0. = Syn: Not set

四、TCP四次挥手抓取

(1)客户端通过发送一个设置了 FIN和ACK标志的TCP数据包,告诉服务器通信已经完成。

(2)服务器收到客户端发送的数据包后,发送一个 ACK 数据包来响应客户端

(3)服务器再向客户端传输一个自己的 FIN/ACK 数据包。

(4)客户端收到服务器的FIN/ACK 包时,响应服务器一个ACK数据包。然后结束通信过程。

第一次挥手抓包分析

Frame 8: 66 bytes on wire (528 bits), 66 bytes captured (528 bits) on interface lo, id 0

Ethernet II, Src: 00:00:00_00:00:00 (00:00:00:00:00:00), Dst: 00:00:00_00:00:00 (00:00:00:00:00:00)

Internet Protocol Version 4, Src: 127.0.0.1, Dst: 127.0.0.1

Transmission Control Protocol, Src Port: 47544, Dst Port: 8887, Seq: 17, Ack: 22, Len: 0

Source Port: 47544(源端口号)

Destination Port: 8887(目标端口号)

[Stream index: 0]

[Conversation completeness: Complete, WITH_DATA (31)]

[TCP Segment Len: 0]

Sequence Number: 17 (relative sequence number)(序列号seq17)

Sequence Number (raw): 98905665

[Next Sequence Number: 18 (relative sequence number)](下一个序列号18)

Acknowledgment Number: 22 (relative ack number)(确认编号ack22)

Acknowledgment number (raw): 1715005962

1000 .... = Header Length: 32 bytes (8)

Flags: 0x011 (FIN, ACK)(标志位)

000. .... .... = Reserved: Not set

...0 .... .... = Accurate ECN: Not set

.... 0... .... = Congestion Window Reduced: Not set

.... .0.. .... = ECN-Echo: Not set

.... ..0. .... = Urgent: Not set

.... ...1 .... = Acknowledgment: Set(确认编号已设置)确认收到上次数据

.... .... 0... = Push: Not set

.... .... .0.. = Reset: Not set

.... .... ..0. = Syn: Not set

.... .... ...1 = Fin: Set(确认编号已设置)报文发送完毕,要求释放连接

[TCP Flags: ·······A···F]

第二次挥手抓包分析

Frame 9: 66 bytes on wire (528 bits), 66 bytes captured (528 bits) on interface lo, id 0

Ethernet II, Src: 00:00:00_00:00:00 (00:00:00:00:00:00), Dst: 00:00:00_00:00:00 (00:00:00:00:00:00)

Internet Protocol Version 4, Src: 127.0.0.1, Dst: 127.0.0.1

Transmission Control Protocol, Src Port: 8887, Dst Port: 47544, Seq: 22, Ack: 18, Len: 0

Source Port: 8887(源端口号)

Destination Port: 47544(目标端口号)

[Stream index: 0]

[Conversation completeness: Complete, WITH_DATA (31)]

[TCP Segment Len: 0]

Sequence Number: 22 (relative sequence number)(序列号seq2)

Sequence Number (raw): 1715005962

[Next Sequence Number: 22 (relative sequence number)]

Acknowledgment Number: 18 (relative ack number)(确认编号ack18)

Acknowledgment number (raw): 98905666

1000 .... = Header Length: 32 bytes (8)

Flags: 0x010 (ACK)(标志位)

000. .... .... = Reserved: Not set

...0 .... .... = Accurate ECN: Not set

.... 0... .... = Congestion Window Reduced: Not set

.... .0.. .... = ECN-Echo: Not set

.... ..0. .... = Urgent: Not set

.... ...1 .... = Acknowledgment: Set(确认编号已设置)

.... .... 0... = Push: Not set

.... .... .0.. = Reset: Not set

.... .... ..0. = Syn: Not set

.... .... ...0 = Fin: Not set

第三次挥手抓包分析

Frame 10: 66 bytes on wire (528 bits), 66 bytes captured (528 bits) on interface lo, id 0

Ethernet II, Src: 00:00:00_00:00:00 (00:00:00:00:00:00), Dst: 00:00:00_00:00:00 (00:00:00:00:00:00)

Internet Protocol Version 4, Src: 127.0.0.1, Dst: 127.0.0.1

Transmission Control Protocol, Src Port: 8887, Dst Port: 47544, Seq: 22, Ack: 18, Len: 0

Source Port: 8887(源端口号)

Destination Port: 47544(目标端口号)

[Stream index: 0]

[Conversation completeness: Complete, WITH_DATA (31)]

[TCP Segment Len: 0]

Sequence Number: 22 (relative sequence number)(序列号seq22)

Sequence Number (raw): 1715005962

[Next Sequence Number: 23 (relative sequence number)](下一个序列号23)

Acknowledgment Number: 18 (relative ack number)(确认编号ack18)

Acknowledgment number (raw): 98905666

1000 .... = Header Length: 32 bytes (8)

Flags: 0x011 (FIN, ACK)(标志位)

000. .... .... = Reserved: Not set

...0 .... .... = Accurate ECN: Not set

.... 0... .... = Congestion Window Reduced: Not set

.... .0.. .... = ECN-Echo: Not set

.... ..0. .... = Urgent: Not set

.... ...1 .... = Acknowledgment: Set(确认编号已设置)

.... .... 0... = Push: Not set

.... .... .0.. = Reset: Not set

.... .... ..0. = Syn: Not set

.... .... ...1 = Fin: Set(确认编号已设置)

第四次挥手抓包分析

Frame 11: 66 bytes on wire (528 bits), 66 bytes captured (528 bits) on interface lo, id 0

Ethernet II, Src: 00:00:00_00:00:00 (00:00:00:00:00:00), Dst: 00:00:00_00:00:00 (00:00:00:00:00:00)

Internet Protocol Version 4, Src: 127.0.0.1, Dst: 127.0.0.1

Transmission Control Protocol, Src Port: 47544, Dst Port: 8887, Seq: 18, Ack: 23, Len: 0

Source Port: 47544(源端口号)

Destination Port: 8887(目标端口号)

[Stream index: 0]

[Conversation completeness: Complete, WITH_DATA (31)]

[TCP Segment Len: 0]

Sequence Number: 18 (relative sequence number)(序列号seq18)

Sequence Number (raw): 98905666

[Next Sequence Number: 18 (relative sequence number)]

Acknowledgment Number: 23 (relative ack number)(确认编号ack23)

Acknowledgment number (raw): 1715005963

1000 .... = Header Length: 32 bytes (8)

Flags: 0x010 (ACK)(标志位)

000. .... .... = Reserved: Not set

...0 .... .... = Accurate ECN: Not set

.... 0... .... = Congestion Window Reduced: Not set

.... .0.. .... = ECN-Echo: Not set

.... ..0. .... = Urgent: Not set

.... ...1 .... = Acknowledgment: Set(确认编号已设置)

.... .... 0... = Push: Not set

.... .... .0.. = Reset: Not set

.... .... ..0. = Syn: Not set

.... .... ...0 = Fin: Not set

在使用软件对四次挥手抓包过程中,会出现只抓到三个包的情况,第二个包和第三个包出现了合并,这种情况通常是由于TCP的优化机制——捎带确认(piggybacking ACKs)。当服务器准备好关闭连接并发送FIN报文时,如果发现上一次接收到的客户端数据还没有发出ACK确认,则可以在同一个报文中同时设置FIN和ACK标志,即合并了第二个和第三个挥手动作。这样,原本的第二次挥手(ACK)和第三次挥手(FIN)就合并在了一个TCP报文中,因此抓包工具只会抓取到这个合并后的FIN+ACK报文以及后续的客户端ACK报文,总共是三个包。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/7258.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt QImageReader类介绍

1.简介 QImageReader 是用于读取图像文件的类。它提供了读取不同图像格式的功能,包括但不限于 PNG、JPEG、BMP 等。QImageReader 可以用于文件,也可以用于任何 QIODevice,如 QByteArray ,这使得它非常灵活。 QImageReader 是一个…

【Docker】docker compose服务编排

docker compose 简介 Dockerfile模板文件可以定义一个单独的应用容器,如果需要定义多个容器就需要服务编排。 docker swarm(管理跨节点) Dockerfile可以让用户管理一个单独的应用容器;而Compose则允许用户在一个模板&#xff08…

商城数据库88张表结构完整示意图51~60(十三)

五十一: 五十二: 五十三: 五十四: 五十五: 五十六: 五十七: 五十八: 五十九: 六十:

GEE案例分析——2019年3月30日,四川省凉山州木里县雅砻江镇立尔村火灾面积分析(Sentinel-2和NBR)

简介 2019年3月30日18时许,四川省凉山州木里县雅砻江镇立尔村发生森林火灾,着火点在海拔3800米左右,地形复杂、坡陡谷深,交通、通讯不便。 1212据凉山州人民政府新闻办公室消息,火场在雅砻江边上,距木里县车程6到7个小时,火场平均海拔4000米,多个火点均位于悬崖上。森…

如何进行音频压缩大小?6个软件教你快速的压缩音频

如何进行音频压缩大小?6个软件教你快速的压缩音频 以下是六款常用的音频压缩软件,它们可以帮助您快速压缩音频文件大小: 迅捷视频剪辑软件: 这是一款非常实用的音频编辑软件,除了编辑音频外,它还提供了音…

C++使用json11开源库快速生成JSON格式的数据

在程序开发中,JSON格式的接口数据应用很广泛,C生态中有许多高效的JSON库,如nlohmann/json、RapidJSON、jsoncpp等,这些库提供了便捷的API来实现JSON数据的解析、生成、序列化和反序列化,简化了C程序对JSON数据的操作&a…

文件加密软件排行榜前四名(2024年4大好用的加密软件推荐)

说到文件加密,想必大家都很熟悉,文件加密已经普遍应用,文件加密是一种重要的安全措施,可以确保数据的机密性、完整性和可用性,降低因数据泄露或丢失带来的风险 。 下面小编给大家分享几款常用的加密软件,…

STM32单片机中C语言的一些隐藏bug

必须类型一致的判断才能正常 double a-0.4; if(a < -0.2){print("低电平"); }这段代码可能未必如你所愿的运行. < 小于号的判断一定要类型一致, 尤其是牵扯到双精度类型的判断… 一定要保证符号 两边的数据类型一致才有可能得到你想要的结果. 代码里 -0.4 默认…

贪心算法、Dijkstra和A*类路径搜索算法

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言系列文章目录前言1.贪心算法、Dijkstra和A*类路径搜索算法(1)greedy best frist search贪心算法(仅仅考虑启发式代价)1.核心思想2.构造启发式猜…

权益商城系统源码 现支持多种支付方式

简介&#xff1a; 权益商城系统源码&#xff0c;支持多种支付方式&#xff0c;后台商品管理&#xff0c;订单管理&#xff0c;串货管理&#xff0c;分站管理&#xff0c;会员列表&#xff0c;分销日志&#xff0c;应用配置。 上传到服务器&#xff0c;修改数据库信息&#xff…

C++例题:大数运算---字符串相加(使用数字字符串来模拟竖式计算)

1.代码速览 class Solution2 { public:string addStrings(string num1, string num2){//end1和end1是下标int end1 num1.size() - 1;int end2 num2.size() - 1;string str;//下标(指针)从后向前走,走到头才可以结束,所以是end>0int next 0;while (end1 > 0 || end2 &…

2024icpc武汉站邀请赛F.Custom-Made Clothes(交互题)

2024 i c p c 武汉站邀请赛 F . C u s t o m − M a d e C l o t h e s \Huge{2024icpc武汉站邀请赛F.Custom-Made Clothes} 2024icpc武汉站邀请赛F.Custom−MadeClothes 文章目录 题意思路标程 题目链接&#xff1a;F. Custom-Made Clothes 题意 本题是一道交互题。 给出一个…

百日训练(第四周 , 第一天)

放了一个五一假期&#xff0c;玩了五天&#xff0c;没有刷任何题&#xff0c;今天做一个恢复训练 洛谷 —— 奶酪 P3958 [NOIP2017 提高组] 奶酪 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 不难发现&#xff0c;这题可以用并查集&#xff0c;那么就有两个问题需要解决 …

拓扑是什么意思

拓扑学&#xff0c;有时候被称为“橡胶片几何学”&#xff0c;它是研究空间形状在连续变形下的性质的数学分支。这种变形包括拉伸、压缩、扭曲&#xff0c;但不包括撕裂或粘合。 一个经典的拓扑问题就是“环面和咖啡杯”的问题。在拓扑学中&#xff0c;一个环面&#xff08;就…

Swift 周报 第五十期

文章目录 前言新闻和社区WWDC24&#xff1a;6 月 10 日至 14 日 (太平洋时间)苹果“内忧外患”&#xff0c;库克中国求援苹果被起诉&#xff01;市值一夜蒸发8000亿元 提案通过的提案正在审查的提案拒绝的提案 Swift论坛推荐博文话题讨论关于我们 前言 本期是 Swift 编辑组自主…

unity车辆碰撞检测

在Unity中根据车辆碰撞检测去调度车辆集群行驶可以通过以下方法实现&#xff1a; 添加碰撞检测组件&#xff1a;在每辆车辆上添加Collider组件和Rigidbody组件&#xff0c;以便进行碰撞检测和物理模拟。 设定车辆行驶轨迹&#xff1a;为每辆车辆设定行驶轨迹或目标点&#xff…

八股spring+springboot+springMVC+Mybatis(一)

目录 1、面试官&#xff1a;Spring框架中的单例bean是线程安全的吗&#xff1f; 2、面试官&#xff1a;什么是AOP 3、面试官&#xff1a;你们项目中有没有使用到AOP 4、面试官&#xff1a;Spring中的事务是如何实现的 5、面试官&#xff1a;Spring中事务失效的场景有哪些 6、面…

行业推荐:数据防泄漏软件首先解决方案

随着信息时代的快速发展&#xff0c;数据安全已成为企业经营的关键之一。然而&#xff0c;数据泄漏事件时有发生&#xff0c;不仅可能导致巨大的经济损失&#xff0c;更会损害企业的声誉和客户信任。 为了帮助企业有效地保护数据安全&#xff0c;Ping32 数据防泄漏系统应运而生…

【C++】-QT多线程-006

1【QT】多线程 #ifndef MYWIDGET_H #define MYWIDGET_H#include <QWidget>namespace Ui { class MyWidget; }class MyWidget : public QWidget {Q_OBJECTpublic:explicit MyWidget(QWidget *parent 0);~MyWidget();/* 5 自定义信号*/ /*所有的信号函数只声明不定义&…

SpringSecurity6配置requestMatchers().permitAll() 无效问题

版本 <spring-boot.version>3.0.2</spring-boot.version> <jjwt.version>0.12.5</jjwt.version>问题描述 题主在写 SpringSecurity6 JWT 做登录认证开发。一路跟着教程叭叭的敲。等到接口验证的时候&#xff0c;发现我的登录接口虽然在SecurityConf…