【八个月网安课程】第一周·周二:TCP 三次握手与四次挥手、UDP 特点及对比
第一周·周二TCP 三次握手与四次挥手、UDP 特点及对比 今日学习目标达成效果能在不看资料的情况下画出TCP 三次握手和四次挥手的完整时序图包含标志位SYN, ACK, FIN和状态变化能用自己的话解释TCP 为什么是可靠的序列号、确认应答、重传机制能对比TCP 与 UDP 的关键区别连接、可靠性、顺序、速度、应用场景能分析Wireshark 抓包中的三次握手数据包识别出每个包的 SYN/ACK 标志能回答“为什么握手是三次而不是两次”和“DNS 为什么使用 UDP”。 一、TCP 协议核心特点与可靠性来源TCP传输控制协议是面向连接的、可靠的字节流协议。它的可靠性建立在以下机制上序列号和确认应答每个发送的字节都有一个序列号接收方返回确认号下一个期望收到的字节序号确保数据无丢失、无重复、按序到达。校验和头部和数据都有校验和用于检测传输过程中的错误。超时重传发送方在一定时间内没有收到确认会自动重发数据段。流量控制滑动窗口接收方通过窗口大小告知发送方自己能接收多少数据防止发送过快导致接收方缓冲区溢出。拥塞控制根据网络拥塞状况动态调整发送速率慢启动、拥塞避免、快重传、快恢复避免网络瘫痪。理解这些机制不仅是为了应对面试更能让你在以后的安全测试中理解“如何通过拒绝服务攻击耗尽连接资源”如 SYN Flood、“如何利用序列号预测进行会话劫持”等。 二、TCP 三次握手连接建立三次握手的目标是同步双方的初始序列号ISN并确认双方的收发能力。过程如下客户端 服务器 | | |-------- SYN (seqx) -----------| ① 第一次握手 | SYN-SENT 状态 | LISTEN → SYN-RCVD | | |--- SYNACK (seqy, ackx1) ---| ② 第二次握手 | ESTABLISHED 状态 | |-------- ACK (acky1) ---------| ③ 第三次握手 | | SYN-RCVD → ESTABLISHED第一次客户端发送 SYN 包指明自己的初始序列号 x进入SYN-SENT状态。第二次服务器收到后回复 SYNACK包含自己的初始序列号 y并确认客户端的 x1服务器进入SYN-RCVD状态。第三次客户端发送 ACK确认服务器的 y1两端都进入ESTABLISHED状态连接建立成功。安全视角SYN Flood 攻击攻击者大量发送 SYN 包但不回复最后的 ACK让服务器留下大量半开连接SYN-RCVD消耗内存和连接表资源。正常三次握手对应防火墙规则很多防火墙只允许内部发起的连接靠状态检测Stateful Inspection实现。 三、TCP 四次挥手连接断开断开连接需要四次交互因为 TCP 是全双工的两个方向的连接需要独立关闭。客户端主动关闭 服务器 | | |------ FIN (sequ) ----------| ① 第一次挥手 | FIN-WAIT-1 | CLOSE-WAIT |----- ACK (acku1) ---------| ② 第二次挥手 | FIN-WAIT-2 | |----- FIN (seqv, acku1) --| ③ 第三次挥手 | TIME-WAIT | LAST-ACK |------ ACK (ackv1) ---------| ④ 第四次挥手 | 等待 2MSL 后 CLOSED | CLOSED第一次主动关闭方如客户端发送 FIN进入FIN-WAIT-1。第二次被动关闭方回复 ACK进入CLOSE-WAIT主动方收到后进入FIN-WAIT-2。此时仅关闭了主动方到被动方的数据流被动方仍可发送数据。第三次被动方数据发完后也发送 FIN进入LAST-ACK。第四次主动方收到 FIN 后回复 ACK并进入TIME-WAIT等待 2 倍最大段寿命2MSL后彻底关闭。被动方收到 ACK 进入 CLOSED。安全视角TIME-WAIT状态的存在可以防止旧连接的数据包被新连接错误接收也是缓解某些攻击的自然屏障比如避免序列号猜测。若大量连接停留在TIME-WAIT或CLOSE-WAIT可能是程序设计不当或攻击导致需要排查。 四、UDP 协议特点UDP用户数据报协议是无连接的、不可靠的传输协议特点如下无连接发送数据前不需要建立连接直接发送数据报。尽力而为交付不保证数据是否到达、不保证顺序、不保证不重复。低开销头部仅 8 字节TCP 头部 20-60 字节没有复杂的控制机制传输效率高。支持广播和多播TCP 只能一对一通信UDP 可一对多。典型应用场景DNS 查询、视频流、VoIP、在线游戏、TFTP 等它们能容忍少量丢包但对实时性要求高。安全视角UDP 因为无连接容易遭受 UDP Flood 攻击大量小包塞满带宽。DNS 使用 UDP 也导致 DNS 放大攻击攻击者伪造源 IP 发送小查询服务器回复大响应给受害者。 五、TCP 与 UDP 核心对比表对比维度TCPUDP连接方式面向连接三次握手无连接可靠性可靠确认、重传不可靠无确认机制顺序保障按序到达不保证顺序传输效率较低额外开销大高头部小适用场景文件传输、网页、邮件实时语音、视频、DNS流控与拥塞控制有滑动窗口、拥塞算法无头部大小20~60 字节8 字节广播/多播不支持支持✍️ 六、动手实践用 Wireshark 观察三次握手目标抓取一次访问网站的 TCP 三次握手包识别 SYN, SYNACK, ACK。步骤打开 Wireshark选择正在上网的网卡如 WLAN/以太网开始捕获。在浏览器地址栏输入一个HTTP 网站避免 HTTPS 加密干扰观察标志位如http://example.com回车后等待页面加载完停止捕获。在过滤栏中输入tcp.port 80 and ip.addr 你的目标网站IP先从 DNS 包中找到 IP或者直接用http过滤然后找到对应 TCP 流。右键某条 HTTP 包 → “追踪流” → “TCP 流”可以看到整个连接的握手和数据传输。在流图模式下观察前三个包。也可以用过滤器tcp.flags.syn1 and tcp.flags.ack0找出所有 SYN 包再手动分析。识别要点第一个包只有 SYN 标志SYN1, ACK0显示Seq0相对序号是一个握手请求。第二个包服务器回复SYN1, ACK1同时携带Seq0和Ack1。第三个包客户端回复SYN0, ACK1Ack1。如果你的 Wireshark 使用相对序号默认则第一次 SYN 的 Seq 显示为 0第二次 SYNACK 显示 Seq0, Ack1第三次 ACK 显示 Seq1, Ack1。注意在数据包详情中查看 Flags 区域。扩展可以自己搭建一个简单的 TCP 服务如 ncat -l 9999然后用 ncat 连接抓取本机 loopback 接口的包观察挥手。但本周可仅观察握手挥手留待后续。 七、课后测试题与解析测试题 1为什么 TCP 握手是三次而不是两次参考答案两次握手只允许服务器确认客户端的序列号但无法让客户端确认服务器的序列号。如果使用两次握手可能发生以下问题历史连接建立假设客户端第一次发送的 SYN 因为网络延迟滞留在网络中客户端超时后重新发起一个新的 SYN两次握手后连接建立并完成通信释放。随后那个延迟的旧 SYN 到达服务器服务器以为是新连接请求回复 SYNACK 并进入 ESTABLISHED 状态而客户端却不会理睬这个连接导致服务器资源被浪费半开连接。三次握手中客户端能识别出这是旧请求不会发送最后的 ACK服务器收不到确认就不会建立连接从而避免问题。更本质的原因TCP 是全双工通信需要双方各自确认对方的初始序列号。三次握手正好是最小的交互次数让双方都确认自己和对方都能正常收发客户端第一次发出 SYN 证明自己发送能力正常服务器回复 SYNACK 证明自己收和发都正常同时也能确认客户端发的能力客户端最后回复 ACK 证明自己能正常收并确认服务器的收发能力。所以三次是理论上建立可靠全双工通道的最少次数。测试题 2DNS 为什么通常使用 UDP 协议参考答案效率DNS 查询通常比较小一般请求不超过 512 字节且期望快速响应。UDP 没有连接建立的开销不需要三次握手直接发送查询报文延迟更低。简单性UDP 无连接状态管理适合大量客户端的短请求。应用层自行保证可靠性如果 UDP 报文丢失DNS 客户端可以简单地重试通常超时后重发。对于 DNS 这种请求-响应模式应用层重试比 TCP 的内置重传更轻量。避免 TCP 的额外问题TCP 连接建立需要携带更多状态对于大型 DNS 服务器若每个查询都建立 TCP 连接会迅速消耗系统资源可能引发性能瓶颈甚至 DoS 问题。补充当 DNS 响应超过 512 字节如 DNS 区域传送或需要可靠传输时会使用 TCP端口 53。现在也有 DNS over TLS/HTTPS但它们已经是应用层加密后的传输底层仍可能用 TCP。✅ 今日学习效果自检清单我能徒手画出 TCP 三次握手时序图写出每个包对应的标志位和序列号变化我能说出 TCP 可靠性的至少 4 种机制序列号与确认、重传、流量控制、拥塞控制我能描述四次挥手的步骤知道主动关闭方会进入 TIME_WAIT 状态我能用 Wireshark 过滤出 TCP 三次握手包并识别出 SYN 和 ACK 标志我能清晰对比 TCP 和 UDP 的 5 个以上不同点并说出各自典型应用我能从安全角度说出 SYN Flood 攻击利用了三次握手什么特性我能解释 DNS 用 UDP 的好处以及何时会使用 TCP⚠️ 阶段避坑重点不要只背流程图一定要配合抓包在 Wireshark 中亲手验证三次握手观察标志位和序列号这比看十遍教材都管用。不要把 UDP 等同于“不安全”UDP 只是不可靠安全与否取决于应用层设计很多重要服务如 QUIC、DNS使用 UDP 并叠加了自己的安全机制。不要混淆序列号和确认号ACK 包中的确认号是“期望对方下一次发送的字节序号”不是自己发送的序号在握手阶段序列号是各自 ISNACK 确认的是对方 ISN1。不要现在钻研 TCP 滑动窗口和拥塞控制的数学细节这是后话今日只需知道它们存在是可靠性的一部分以后学到 DoS 攻击时再深入。明天周三我们将学习 HTTP/HTTPS 协议详情届时你会用今天抓到的包来深入分析请求和响应请确保三次握手已彻底掌握它将是分析所有 Web 流量的基础。

相关新闻

BCB6实战指南:从环境搭建到项目开发,维护遗留系统的必备技能

BCB6实战指南:从环境搭建到项目开发,维护遗留系统的必备技能

1. 项目概述:为什么今天还要学BCB6? 看到这个标题,很多年轻开发者可能会一愣:Borland C Builder 6?这不是二十多年前的“古董”开发工具吗?现在不都是Visual Studio、CLion或者VSCode的天下了吗&#xff1f…

2026/10/13 22:49:43 阅读更多 →
告别风扇噪音!用FanControl打造你的专属静音散热系统

告别风扇噪音!用FanControl打造你的专属静音散热系统

告别风扇噪音!用FanControl打造你的专属静音散热系统 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/…

2026/10/15 2:27:31 阅读更多 →
Spring Security密码认证机制与安全实践

Spring Security密码认证机制与安全实践

1. Spring Security 用户密码认证机制解析Spring Security 作为 Java 生态中最主流的权限控制框架,其用户密码认证机制是每个开发者必须掌握的核心功能。这套认证体系看似简单,但实际包含了认证管理器、密码编码器、用户详情服务等多个组件的精密协作。1…

2026/10/11 7:16:05 阅读更多 →

最新新闻

程序员英语词汇宝典词条精讲:exclamation mark(感叹号 `!`)——发音、词义与编程实战用法

程序员英语词汇宝典词条精讲:exclamation mark(感叹号 `!`)——发音、词义与编程实战用法

教程 【免费下载链接】most-frequent-technology-english-words 程序员工作中常见的英语词汇 项目地址: https://gitcode.com/gh_mirrors/mo/most-frequent-technology-english-words 点击查看 免费下载 本文以开源仓库 most-frequent-technology-english-words&am…

2026/10/15 2:27:21 阅读更多 →
Mixed‑Content 混合内容坑,HTTPS 页面加载 HTTP 的 M3U8 资源排错

Mixed‑Content 混合内容坑,HTTPS 页面加载 HTTP 的 M3U8 资源排错

一、混合内容带来播放黑屏的业务现象 现在绝大多数业务网站都升级为 HTTPS 安全页面。很多同学会遇到一个很迷惑故障:网页本身是 HTTPS,M3U8 播放地址打开黑屏,但是复制 M3U8 链接新开标签页播放却完全正常。 这个问题很多新手不了解&#…

2026/10/15 2:27:21 阅读更多 →
手写SURF特征点检测器:C++从零实现与工程避坑指南

手写SURF特征点检测器:C++从零实现与工程避坑指南

简介:本资源是一份面向计算机视觉初学者与算法工程师的SURF特征检测技术学习包,聚焦于算法原理理解与C工程实现能力提升。内容涵盖2006年Pfister等人提出的SURF核心思想详解——包括基于积分图像的快速尺度空间构建、Hessian矩阵关键点定位、Haar小波描述…

2026/10/15 2:27:21 阅读更多 →
上下文模式实战:从ThreadLocal到AI对话的上下文管理

上下文模式实战:从ThreadLocal到AI对话的上下文管理

1. 从“上下文模式”说起:一个被低估的工程概念第一次听到“context-mode”这个词,很多人会下意识觉得它是个抽象得没边儿的概念,像是架构师在PPT里才会用的词。但如果你真正在项目里踩过坑,就会明白它其实是一个非常接地气的工程…

2026/10/15 2:27:21 阅读更多 →
Three.js入门指南:3D网页开发核心概念与实战技巧

Three.js入门指南:3D网页开发核心概念与实战技巧

1. Three.js入门:从实际问题出发的基础指南最近在项目中遇到一个需求:需要在网页中展示3D模型并实现交互操作。作为一个前端开发者,我首先想到的就是Three.js这个强大的JavaScript 3D库。但在实际使用过程中,我发现很多教程都是从…

2026/10/15 2:27:21 阅读更多 →
Qt6计算器开发全解析:信号槽、表达式解析与工程实战

Qt6计算器开发全解析:信号槽、表达式解析与工程实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 2:26:21 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →