用Wireshark抓包实战解析HTTP/TCP协议:从三次握手到拥塞控制

Wireshark抓包实战:从一次网页访问,看懂TCP三次握手与四次挥手 本文通过Wireshark抓包实战,详细解析了TCP三次握手与四次挥手的完整过程。从网页访问的实际案例出发,结合Wireshark工具的使用技巧,深入剖析了TCP连接的建立、数据传输和终止机制,帮助开发者理解网络通信底层原理并优化应用性能。 阅读详情

用Wireshark抓包实战解析HTTP/TCP协议:从三次握手到拥塞控制

你是否曾对教科书上那些抽象的协议流程图感到困惑?TCP的三次握手、滑动窗口、拥塞控制,这些概念听起来像是网络工程师的专属术语,离日常开发很远。但当你真正面对一个接口响应缓慢、文件传输卡顿,或是线上服务偶发性超时的问题时,理解数据包在网络中究竟经历了什么,就成了定位问题的关键。理论学习提供了骨架,而抓包分析则是赋予其血肉、看清网络脉搏跳动的唯一途径。

这篇文章就是为你——那些不满足于纸上谈兵,渴望通过亲手操作来印证理论的实践者——准备的。我们将完全抛开枯燥的概念罗列,直接打开Wireshark,从一个真实的HTTP请求开始,像侦探一样追踪每一个数据包的足迹。你会亲眼看到连接如何建立、数据如何分段传输、流量如何被控制,以及当网络拥堵时协议如何自我调整。这不仅是一次技术探索,更是一次思维训练,让你获得一种透视网络通信本质的能力。

1. 实验环境搭建与第一个抓包

工欲善其事,必先利其器。我们的核心工具是Wireshark,但为了让实验更贴近真实且可控,我们需要搭建一个简单的本地实验环境。

1.1 工具准备与配置

首先,确保你已安装最新版的Wireshark。安装过程中,记得勾选安装WinPcap或Npcap(Windows平台)驱动,这是Wireshark捕获网络流量的基础。安装后,以管理员身份运行Wireshark,否则可能无法看到所有网络接口。

为了生成我们需要的HTTP流量,我推荐使用curl命令行工具,它简洁、可脚本化,且能产生非常“干净”的流量,便于分析。如果你使用Windows,可以从Git for Windows或直接下载curl for Windows获取。当然,你也可以使用浏览器,但浏览器会产生大量额外的流量(如favicon.ico请求、预连接、各种JS/CSS请求),干扰我们的分析。

一个更进阶的技巧是配合使用一个本地HTTP测试服务器。Python内置的http.server模块就非常完美:

# 在任意目录下启动一个简单的HTTP服务器,端口8080
python -m http.server 8080

这个命令会在当前目录启动一个服务器,将该目录下的文件通过HTTP提供服务。现在,我们有了明确的目标:向http://localhost:8080/发起请求。

1.2 首次捕获与过滤器应用

打开Wireshark,在接口列表中选择你正在使用的网络接口(对于本地回环通信,Windows上可能是Npcap Loopback Adapter,Linux/macOS上选择lo或loopback)。点击开始捕获。

立刻,你会看到数据包如瀑布般涌来,其中混杂了系统服务、后台应用等各种网络活动。这就是我们需要使用捕获过滤器和显示过滤器的原因。

  • 捕获过滤器:在开始捕获前设置,用于决定哪些流量能被抓取到内存中,语法遵循BPF格式。例如,port 8080只捕获源或目的端口为8080的流量。这能极大减少内存占用和干扰。
  • 显示过滤器:在捕获后使用,用于在已捕获的数据包中筛选出我们关心的部分,语法更强大灵活。例如,http或tcp.port == 8080。

提示:对于本次实验,我建议先在Wireshark主界面顶部的过滤栏输入 tcp.port == 8080,然后点击开始。这样能确保我们只看到与实验服务器相关的TCP流量,画面瞬间清爽。

现在,在命令行中执行:

curl http://localhost:8080/

如果你的目录下有一个index.html文件,服务器会返回它;如果没有,你会看到一个目录列表。无论如何,一次完整的HTTP交互已经发生。在Wireshark中点击停止捕获,我们的分析之旅正式启程。

2. 解剖一次完整的HTTP会话:请求与响应

捕获到的数据包列表中,你应该能看到短短几行记录。让我们从上到下,逐一解读这个微型网络故事。

2.1 TCP三次握手:连接的基石

故事的前三行,通常是这样的:

  1. [Client IP] -> [Server IP] TCP 74 49181 → 8080 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 WS=256 SACK_PERM=1
  2. [Server IP] -> [Client IP] TCP 74 8080 → 49181 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=1460 WS=256 SACK_PERM=1
  3. [Client IP] -> [Server IP] TCP 66 49181 → 8080 [ACK] Seq=1 Ack=1 Win=262656 Len=0

这就是著名的TCP三次握手。点击第一行,查看下方详情面板中的“Transmission Control Protocol”部分:

  • Flags: 这里明确标出了 [SYN]。SYN(Synchronize)标志位被置为1,表示这是一个连接发起请求。
  • Sequence number: 显示为0(实际是一个随机生成的初始序列号ISN,Wireshark为了方便阅读,显示为相对值0)。这是客户端选择的初始序号。
  • Window size: Win=64240,这是客户端声明的**接收窗口(rwnd)**大小,即客户端告诉服务器“我这边最多还能收64240字节的数据”。
  • Options: 包含了MSS=1460(最大报文段长度)、WS=256(窗口缩放因子)等信息,用于协商连接参数。

第二行是服务器的回应:

  • Flags: [SYN, ACK]。SYN表示服务器也同步自己的序列号,ACK表示确认收到了客户端的SYN。
  • Acknowledgment number: Ack=1。这个“1”是关键,它等于客户端初始序列号+1,意思是“我收到了你的SYN(序列号为0),期待你下一个发送序列号为1的数据”。这就是TCP的累计确认机制。
  • Sequence number: 服务器自己的初始序列号(相对值0)。

第三行是客户端的最终确认:

  • Flags: [ACK]。客户端对服务器的SYN进行确认。
  • Acknowledgment number: Ack=1。等于服务器初始序列号+1。

至此,连接建立。双方就初始序列号和窗口大小等参数达成一致,为可靠的数据传输铺平了道路。你可以把这三步想象成一次电话沟通的开启:“喂,听得到吗?”——“听得到,你呢?”——“我也听得到,开始说吧。”

2.2 HTTP请求报文:客户在“说”什么

紧接着第三次握手,通常是第四行,你会看到客户端发出的HTTP请求。在数据包列表的“Info”列,可能会显示“GET / HTTP/1.1”。选中这一行,在详情面板中展开“Hypertext Transfer Protocol”。

这里清晰地展示了HTTP请求报文的原始结构:

GET / HTTP/1.1\r\n
Host: localhost:8080\r\n
User-Agent: curl/7.81.0\r\n
Accept: */*\r\n
\r\n
  • 请求行: GET / HTTP/1.1 定义了方法、资源路径和协议版本。
  • 请求头: 每一行都是一个键值对,以\r\n结束。Host头在HTTP/1.1中必需;User-Agent表明了客户端身份;Accept说明了客户端能处理的媒体类型。
  • 空行: 连续的两个\r\n标志着请求头的结束。如果是POST请求,空行后面就是请求体。

在详情面板的“Transmission Control Protocol”部分,注意看Seq和Ack号。这个HTTP请求数据被封装在TCP报文段中发送,其序列号承接了握手后的值,长度(Len)就是HTTP报文的字节数。

2.3 HTTP响应报文:服务器如何“回答”

服务器在收到请求后,会返回响应。在Wireshark中,这通常表现为紧接着的一个或多个TCP包(如果响应体较大,可能会分多个报文段传输)。

找到标有“HTTP/1.1 200 OK”或类似状态码的数据包。展开其HTTP协议详情:

HTTP/1.1 200 OK\r\n
Server: SimpleHTTP/0.6 Python/3.10.12\r\n
Date: Tue, 07 Apr 2025 07:30:00 GMT\r\n
Content-Type: text/html; charset=utf-8\r\n
Content-Length: 417\r\n
\r\n
<!DOCTYPE html...(后续是HTML正文)
  • 状态行: HTTP/1.1 200 OK 给出了协议版本、状态码和原因短语。
  • 响应头: 包含了服务器信息、日期、内容类型和至关重要的Content-Length,它告诉客户端响应体有多少字节,这样客户端就知道需要接收多少数据才能完成这个响应。
  • 响应体: 空行之后,就是服务器返回的实际数据,例如HTML内容。

注意:如果响应没有Content-Length头,则可能使用Transfer-Encoding: chunked(分块传输编码),这是一种流式传输方式,在抓包中你会看到多个包含数据块的TCP段。

2.4 TCP四次挥手:优雅地说再见

HTTP事务完成后,TCP连接通常不会立即关闭,可能会为了后续请求而保持(HTTP/1.1的持久连接)。但在我们的简单curl请求中,服务器发送完数据后往往会主动关闭连接。

在抓包结果的末尾,寻找这样的序列:

  1. [Server IP] -> [Client IP] TCP 66 8080 → 49181 [FIN, ACK] Seq=xxx Ack=yyy Win=...
  2. [Client IP] -> [Server IP] TCP 66 49181 → 8080 [ACK] Seq=yyy Ack=xxx+1 Win=...
  3. (可能稍后)[Client IP] -> [Server IP] TCP 66 49181 → 8080 [FIN, ACK] Seq=yyy Ack=xxx+1 Win=...
  4. [Server IP] -> [Client IP] TCP 66 8080 → 49181 [ACK] Seq=xxx+1 Ack=yyy+1 Win=...

这就是TCP四次挥手。由于TCP是全双工的,每一方都必须独立地关闭自己方向的连接。

  • 第一步:服务器发送FIN(Finish)标志,表示“我这边没有数据要发送了”。
  • 第二步:客户端回应ACK,确认收到了服务器的FIN。
  • 第三步:客户端处理完所有数据后,也发送自己的FIN。
  • 第四步:服务器回应ACK。

至此,连接完全关闭。有时你可能会看到FIN和ACK在同一报文中(如[FIN, ACK]),这属于优化,但逻辑上仍然是四个步骤。

3. 深入TCP传输核心:序列号、确认与流量控制

理解了会话的始终,我们再把镜头拉近,聚焦于TCP传输数据的过程。这不仅仅是“发送-接收”,而是一套精密的协同机制。

3.1 序列号与确认号:给每个字节贴上标签

TCP将数据流视为一个连续的字节流。序列号(Sequence Number) 标识了本报文段所携带数据的第一个字节在整个数据流中的位置。确认号(Acknowledgment Number) 则代表了接收方期望收到的下一个字节的序列号,它隐式地确认了所有之前的数据都已正确接收。

在Wireshark中,你可以直观地跟踪这一过程。找一个携带数据的TCP包(Len > 0),查看其详情:

  • Sequence number: 123 (relative sequence number) 假设这个值是123。
  • Acknowledgment number: 456 假设这个值是456。
  • TCP segment data: 1460 bytes 假设数据长度是1460。

这意味着:

  • 发送方说:“我发送的数据从第123字节开始。”
  • 发送方同时说:“我这边已经确认收到了第456字节之前的所有数据。”
  • 接收方在回复的ACK包中,其确认号会是 123 + 1460 = 1379,表示“我已收到123至1378字节,期待你从1379字节开始发送”。

Wireshark的“Flow Graph”功能(菜单:统计 -> 流量图)可以图形化地展示这个交互过程,序列号和确认号的变化一目了然。

3.2 滑动窗口与流量控制:接收方的“接收能力”广播

流量控制是为了防止发送方发送数据过快,导致接收方缓冲区溢出。其核心是接收窗口(rwnd)。

在每个TCP报文的详情中,你都能找到一个 Window size value 字段。这个值就是接收方当前通告的可用缓冲区大小。发送方必须保证:已发送但未确认的数据量 <= 接收窗口大小。

让我们在Wireshark中观察动态变化:

  1. 在三次握手阶段,客户端和服务器会互相通告一个初始窗口大小(例如 Win=64240)。
  2. 随着服务器开始发送数据(HTTP响应),客户端在回复的ACK包中,其 Window size value 可能会逐渐减小,因为客户端的应用层(比如curl进程)可能没有及时读取Socket缓冲区中的数据,导致缓冲区被占用。
  3. 当 Window size value 变为0时,发送方必须停止发送数据(除了极少数例外,如探测报文)。这就是所谓的“零窗口”。
  4. 当接收方应用层读取了数据,缓冲区有空闲后,它会发送一个 窗口更新(Window Update) 报文,其中包含一个新的、更大的窗口值,通知发送方可以继续发送。

你可以使用显示过滤器 tcp.analysis.zero_window 来筛选出出现零窗口的数据包,这在分析性能瓶颈时非常有用。

3.3 重传机制:可靠性的保障

网络并不完美,数据包可能会丢失或损坏。TCP通过超时重传和快速重传来应对。

  • 超时重传(Retransmission due to Timeout): 发送方每发送一个报文段,都会启动一个重传定时器(RTO)。如果在这个时间内没有收到该数据的ACK,就会重传。在Wireshark中,重传的包会用红色或特殊的标记显示,并且在“Info”列通常会有 [TCP Retransmission] 的提示。你可以对比重传包和原始包的序列号,它们是一样的。
  • 快速重传(Fast Retransmit): 有时,数据包并未丢失,只是乱序到达。接收方会为按序到达的最后一个字节发送重复的ACK。当发送方连续收到3个相同的冗余ACK(Dup ACK)时,它就推断该ACK之后的数据包可能丢失了,于是立即重传那个数据包,而不必等待超时。这比重传超时更快。过滤器 tcp.analysis.duplicate_ack 可以帮助你找到重复的ACK。

Wireshark的“专家信息”(Expert Info)功能会汇总会话中的各种事件,包括重传、零窗口、乱序等,是快速诊断连接质量的神器。

4. 探索TCP拥塞控制:网络拥堵时的自动驾驶

如果说流量控制是接收方主导的“踩刹车”,那么拥塞控制就是发送方根据网络状况进行的“自适应巡航”。它的目标是避免网络因过载而瘫痪,同时尽可能利用可用带宽。

4.1 拥塞窗口与慢启动

发送方内部维护一个 拥塞窗口(cwnd) 变量,它代表了在不引起网络拥塞的前提下,发送方最多能向网络注入多少未被确认的数据。实际的发送窗口大小是 min(cwnd, rwnd)。

TCP拥塞控制算法主要包括几个阶段,我们可以通过分析数据包的发送节奏来间接感知:

  1. 慢启动(Slow Start): 连接开始时,cwnd从一个很小的值(如1个MSS)开始。每收到一个ACK,cwnd就增加1个MSS。这导致cwnd呈指数增长(1, 2, 4, 8...)。在抓包中,你会看到在连接建立后,数据包的发送间隔最初很短,然后ACK返回后,紧接着发送的数据包数量会明显增多,节奏加快。
  2. 拥塞避免(Congestion Avoidance): 当cwnd增长到一个阈值(ssthresh,慢启动阈值)时,进入拥塞避免阶段。此时,每收到一个ACK,cwnd只增加 1/cwnd 个MSS,这相当于每个往返时间(RTT)cwnd只增加1个MSS,变为线性增长。在抓包中,这个阶段的发送节奏趋于稳定。

4.2 拥塞状态的判断与响应

TCP如何知道网络拥塞了?它有两种判断方式:

  • 超时(Timeout): 这是最强烈的拥塞信号。一旦发生超时重传,TCP认为网络拥塞严重。它会将 ssthresh 设置为当前 cwnd 的一半,然后将 cwnd 重置为1个MSS,重新进入慢启动。在抓包中,你会看到在连续的数据流之后,出现了一个明显的停顿(等待超时),然后数据流又从一个很慢的节奏重新开始。
  • 收到3个重复ACK(Triple Duplicate ACK): 这被认为是轻度拥塞。TCP会触发 快速恢复(Fast Recovery) 算法。它会将 ssthresh 和 cwnd 都设置为当前 cwnd 的一半(具体算法变种有差异),然后进入拥塞避免阶段。由于数据还在流动(因为有Dup ACK回来),恢复速度比超时快得多。

4.3 在Wireshark中可视化拥塞控制

虽然Wireshark不直接显示cwnd的数值(因为这是发送方内部的状态),但我们可以通过观察数据流的模式来推断:

  • 查看I/O图表:菜单:统计 -> I/O图表。添加一个图形,Y轴设为“Bytes/Tick”,过滤条件为 tcp.stream eq <你的流编号>。这个图表展示了数据随时间发送的速率。慢启动阶段的指数增长会表现为曲线斜率逐渐增大;拥塞避免阶段则近似线性;发生超时重传时,你会看到速率骤降并重新爬升。
  • 分析往返时间:菜单:统计 -> TCP流图形 -> 往返时间。这个图显示了每个数据包的RTT变化。网络拥塞通常会导致RTT增大和不稳定。
  • 使用tcptrace或更专业的分析工具:对于深度分析,可以将Wireshark捕获的包保存为pcap文件,然后用tcptrace等工具生成更详细的拥塞窗口变化图。

为了让你对TCP不同阶段的发送行为有更直观的认识,下面这个表格对比了关键特征:

阶段触发条件cwnd增长方式在抓包中的表现对网络状况的假设
慢启动连接开始,或超时后指数增长 (每RTT翻倍)数据包发送间隔快速缩短,发送速率急剧上升网络空闲,可快速探测带宽
拥塞避免cwnd >= ssthresh线性增长 (每RTT增加1MSS)发送速率平稳上升,数据包发送间隔相对均匀接近网络容量,需谨慎试探
快速重传/恢复收到3个重复ACKcwnd减半后线性增长短暂停顿后,数据流以中等速率恢复,而非从零开始轻度丢包(如单包丢失),网络仍有容量
超时重传重传定时器到期cwnd重置为1,重新慢启动长时间无数据流,随后从极低速重新开始发送严重拥塞或路径中断

理解这些模式,当你再遇到文件传输中途变慢、视频卡顿缓冲时,就能通过抓包判断是接收方窗口满了(流量控制问题),还是网络路径上发生了拥塞,从而有针对性地进行优化,例如调整TCP内核参数、优化应用层接收逻辑,或者检查网络链路质量。这,就是抓包分析赋予你的真正力量——将抽象协议转化为可观测、可诊断、可优化的具体现象。

TCP三次握手原理与Wireshark实战分析 TCP协议作为网络通信的基石,其三次握手机制解决了分布式系统在不可靠网络中建立可靠连接的核心问题。通过序列号同步和双向确认机制,三次握手确保了通信双方的收发能力正常,同时避免了历史连接问题。在工程实践中,使用Wireshark抓包工具可以直观观察SYN、SYN-ACK、ACK的交互过程,分析网络延迟、重传等异常情况。该机制不仅影响连接建立效率,还与网络安全(如防御SYN洪泛攻击)、性能优化(如TCP Fast Open)密切相关,是网络编程和故障排查必须掌握的基础知识。 阅读详情

相关推荐

Scratch少儿编程软件全平台下载指南(Mac/Windows/离线版)

本文提供了一份安全可靠的Scratch少儿编程软件全平台下载指南。针对国内用户访问官网困难、第三方下载渠道风险高的问题,重点介绍了通过官方认可的国内镜像站(Scratch in China)下载Mac和Windows离线版的方法,并详细说明了安装步骤、常见问题解决以及离线版与在线版的对比选择,帮助家长和老师为孩子快速搭建纯净的编程学习环境。

k6l7m8n9的博客 1041

通过Wireshark分析HTTP协议

0x01 HTTP介绍 1. 什么是HTTP HTTP(HyperText Transfer Protocol,超文本传输协议)是Web系统最核心的内容,它是Web服务器和客户端直接进行数据传输的规则。Web服务器就是平时所说的网站,是信息内容的发布者。最常见的客户端就是浏览器,是信息内容的接受者。 HTTP(HyperText Transfer Protocol,超文本传输协议)协议是用于...

wz_cow的博客 5万+

408 计网协议栈实战:基于 Wireshark 抓包解析 TCP 3 次握手与 4 次挥手

本文通过 Wireshark 实战演示,详细解析 TCP 协议的三次握手与四次挥手过程,帮助计算机考研 408 考生直观理解计网核心概念。从环境配置到抓包分析,涵盖 TCP 连接建立与终止的全流程,并提供常见问题排查方法,是备考计网协议栈的实用指南。

469

Wireshark抓包(TCP/UDP/ARP/DNS/DHCP/HTTP)

ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。在任何时候,一台主机有IP数据报文发送给另一台主机,它都要知道接收方的逻辑(IP)地址。但是IP地址必须封装成帧才能通过物理网络。这就意味着发送方必须有接收方的物理(MAC)地址,因此需要完成逻辑地址到物理地址的映射。而ARP协议可以接收来自IP协议的逻辑地址,将其映射为相应的物理地址,然后把物理地址递交给数据链路层。

2302_80585579的博客 9641

从‘三次握手’到‘四次挥手’:用Wireshark抓包带你亲历TCP/IP协议栈的每一层

本文通过Wireshark抓包工具,详细解析了TCP/IP协议栈从三次握手到四次挥手的全流程。从实验环境准备到数据传输过程观察,再到高级协议分析技巧,帮助读者深入理解网络通信的底层机制。文章还涵盖了企业级网络排错、安全防护实践以及云环境和移动端的协议分析,是网络工程师和开发者的实用指南。

weixin_29215815的博客 436

别再死记硬背了!用Wireshark抓包实战,带你彻底搞懂TCP三次握手和UDP校验和

本文通过Wireshark抓包实战,详细解析了TCP三次握手和UDP校验和的核心机制。从安装配置到实际抓包分析,帮助读者直观理解计算机网络中运输层协议的工作原理,摆脱死记硬背的学习方式,掌握网络协议调试与优化的实用技巧。

俺是一个瓜娃!!! 320

TCP协议报文讲解,Wireshark抓包,细致分析三次握手和四次挥手

TCP(Transmission Control Protocol,传输控制协议)是面向连接、可靠的传输层协议。它在网络中通过三次握手建立连接,并确保数据包的可靠传输。TCP广泛应用于需要可靠数据传输的场景,例如HTTP、FTP、SMTP等协议的传输。

Michelangeshaw的博客 3555

TCP三次握手详解:从原理到Wireshark抓包实战

网络通信的可靠性建立在传输层协议之上,TCP作为互联网核心传输协议,通过面向连接的设计保障数据有序到达。连接建立时,三次握手机制确保通信双方收发能力正常,并同步初始序列号,是理解网络协议的基石。该机制在HTTP、数据库连接等场景广泛应用,掌握其原理有助于排查连接超时、端口占用等工程问题。Wireshark抓包实战可直观验证SYN、ACK报文交互过程,深化对TCP状态变化的理解。本文从概念到实践,系统拆解三次握手流程、关键字段与排错方法。

weixin_34133829的博客 338

基于抓包详解TCP协议

为保证tcp可靠传输的一个方案,其特点就是累计确认,例如 接受方受到连续按序的五个报文时候发送确认消息6,就代表前五个数据包都收到了,期待第六个数据包。

禅与计算机程序设计的艺术 8317

TCP 抓包分析:tcp抓包工具、 iOS/HTTPS 流量解析全流程

本文系统介绍 TCP 抓包分析流程,涵盖 tcpdump/Wireshark 常用命令与过滤、重传/拥塞/MTU/握手诊断、iOS/HTTPS 场景下的抓包技巧及实战排查步骤,帮助工程师快速定位网络问题。

2501_91380052的博客 1016

从抓包到实战:Wireshark图解HTTP三次握手+TCP流量控制(含实验文件)

本文通过Wireshark工具详细图解了HTTP三次握手与TCP流量控制的全过程,包含实验环境配置、握手流程解析、流量控制机制剖析及实战技巧。文章结合计算机网络核心概念,提供实验文件和高级过滤方法,帮助读者直观理解TCP协议运作机制,适合网络学习者和认证考试备考者参考。

weixin_30919429的博客 507

从一次失败的网页加载说起:手把手带你用Wireshark抓包,实战分析TCP三次握手、HTTP请求与DNS解析

本文通过一次网页加载失败的案例,详细介绍了如何使用Wireshark抓包工具分析TCP/IP协议栈的核心机制。从DNS解析、TCP三次握手到HTTP请求,逐步揭示网络通信的全过程,并提供优化建议,帮助开发者深入理解网络协议的工作原理。

weixin_33734785的博客 426

Halcon手眼标定实战:从九点标定到机械臂精准抓取(附完整代码)

本文详细介绍了Halcon手眼标定技术在实际工业场景中的应用,重点讲解了九点标定法在机械臂精准抓取中的实现步骤和优化技巧。通过对比Eye-to-Hand和Eye-in-Hand两种模式的特点,提供完整的代码示例和误差分析,帮助工程师快速掌握标定技术,提升自动化系统的精度和稳定性。

weixin_29100927的博客 460

网盘直链下载指南:LinkSwift 如何帮你快速获取九大网盘真实下载地址

LinkSwift 是一个基于 JavaScript 的网盘直链下载助手,它调用百度网盘、阿里云盘、夸克网盘、123云盘等九大网盘的官方接口,帮你在浏览器里把文件换成一串真实下载地址。适合不想装网盘客户端、经常要在网页上下载文件的学生和办公人群。 ## 🚧 网盘直链下载前,你可能也卡在这三处 **大文件下载卡在半途。** 你急需一个 3GB 的视频素材赶进度,点了网盘里的"下载",速度却只有

gitblog_00195的博客 819

AppleAccount注册之生成sign

根据日志发现:签名来自于AuthKit的-[AKAppleIDServerResourceLoadDelegate signRequest:withCompletionHandler:]的一个block,这个库是放在共享缓存库里的,找到提前准备好的IDA文件,先去找主方法,根据分析IDA,最后找到了实际生成签名的方法:t1。,接受五个参数,context(之前讲的获取到的客户端证书),bytes(待加密的body字节),length(字节长度),以及两个接受结果的参数,直接进这个方法看,

2503_90751938的博客 1008

【原理图PCB专题】Cadence 17.4版本导出excel版本坐标文件

Cadence 17.4版本导出坐标文件往往都是txt格式,并且无标题、导出时间、导出设计工程多名称等信息。那么怎么样才能导出有带这些信息的excel版本并格式好看的坐标文件呢?

一点硬件 2764

wireshark抓包来看下TCP协议

qq_28576837的博客 485

实例详解C++程序的五大内存分区

本文详细讲述C++程序在运行时的5大内存分区。 下面使用日常开发中的编程实例,详细介绍一下这5个分区,以便大家能更深刻的理解这5大内存分区。 1、栈内存区 栈内存区是我们用的最多的分区,只要有函数的地方都会使用到这个分区。栈分区是用来存放函数参数及函数局部变量值的内存区,是由编译器在编译时自动分配和释放的。 函数中的参数与函数中的局部变量占用的内存是代码执行到函数(进入函数)是分配的,在............

dvlinker的技术专栏 1万+

python tcp通信三次握手_使用抓包工具分析TCP三次握手过程

一、TCP/IP是一个协议族,每一层负责不通的通信功能,今天通过抓包分析一下传输层的TCP协议的三次握手过程。二、使用抓包软件是Wireshark,先看一下Wireshark抓到的TCP的包对应的协议层。WireShark数据包结构Frame:对应是物理层,主要是传输bit流。Ethernet:数据链路层,传输数据帧,二层通信主要是通过mac地址。Internet:网络层,传送数据包, 互联网层I...

weixin_39922642的博客 476

FortiWeb 相对路径遍历漏洞复现(CVE-2025-64446)

FortiWeb是Fortinet公司推出的企业级Web应用防火墙(WAF),专为保护Web应用和API抵御高级威胁设计。它集成人工智能与机器学习技术,通过双层检测引擎(HMM模型与SVM向量机)精准识别异常流量,可防御OWASP Top 10攻击、SQL 注入、XSS、DDoS及恶意机器人。其核心功能包括API自动化保护、虚拟补丁集成(兼容Acunetix等第三方扫描工具)及智能流量分析,支持HTTP/2、WebSocket等现代协议。(CVE-2025-64446)

iSee857的博客 468

uniapp:微信支付报错requestPayment:fail errors,uniAPP调用uni.requestPayment微信支付提示错误(安卓app、ios苹果app、微信小程序支付报错)

uniapp微信支付报错requestPayment:fail errors,uniApp APP端调起微信支付失败报错requestPayment:fail errors,uniapp微信小程序支付的坑 “errMsg“: “requestPayment:fail errors“,uni.requestPayment微信支付,UNI-APP支付报错“errMsg“: “requestPayment:fail errors“ app微信支付,uniapp 安卓app微信支付报错,uni.requestPay

✅ 精选推荐文章 3917

Wireshark 4.2 TCP/UDP 协议分析实战:从 3 次握手到 4 次挥手全流程解析

本文详细解析了Wireshark 4.2在TCP/UDP协议分析中的实战应用,从三次握手到四次挥手的全流程拆解,帮助读者深入理解网络通信机制。通过真实数据包示例和高级过滤技巧,提升网络问题诊断能力,适用于计算机网络实验和协议分析场景。

477

12S BMS 核心设计:基于 STM32H743+BQ34Z100 的 SOC/SOH 实现与全链路技术解析(上)

本文详细介绍了基于STM32H743和BQ34Z100的12串锂电池管理系统(BMS)设计。该系统采用主控制器+专用电量监测计架构,可实现高精度SOC(±1%)和SOH(±2%)估算,支持36V-50.4V电压范围。硬件设计包括电压/电流采样、温度测量、保护电路等模块,软件实现基于HAL库开发,采用DMA方式提高I2C通信效率。系统通过TI专利的ImpedanceTrack™算法实现三维融合估算,并具备完善的保护功能。该设计适用于电动工具、轻型电动车等中功率设备,具有精度高、响应快。

bother3000的博客 1394

别再死记硬背TCP三次握手了!用Wireshark抓包,5分钟带你亲眼看看数据包怎么‘打招呼’的

本文通过Wireshark抓包工具,详细解析TCP三次握手的数据包交互过程,帮助读者从实践角度深入理解网络通信原理。文章涵盖实验准备、数据包分析、异常排查及性能优化等内容,是计算机网络学习的实用指南。

weixin_30954265的博客 373

2020年大连理工大学《计算机控制技术》期末试卷

2020年大连理工大学《计算机控制技术》期末试卷 2020年大连理工大学《计算机控制技术》期末试卷 2020年大连理工大学《计算机控制技术》期末试卷 2020年大连理工大学《计算机控制技术》期末试卷 ...

无名何许人的博客 650

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

上一篇: 西电超算新手必看:从零开始配置GPU环境(RTX3090实战)
下一篇: Thymeleaf实战:th:if条件判断与th:each循环遍历的进阶技巧
Python
博客等级 码龄26年 1973粉丝 1567原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值