408真题解析-2009-38-网络-TCP累积确认

一 真题2009-38

2009-38题. 主机甲与主机乙之间已建立一个TCP连接,主机甲向主机乙发送了两个连续的TCP段,分别包含300B和500B的有效载荷,第一个段的序列号为200,主机乙正确接收到两个段后,发送给主机甲的确认序列号是()。

A. 500

B. 700

C. 800

D. 1000

二 题目要素解析

场景: TCP 连接的数据传输阶段。

已知条件:

  • 发送方:主机甲
  • 接收方:主机乙
  • 第一个段:序列号(Seq)= 200,数据长度 = 300B
  • 第二个段:紧接第一个段,数据长度 = 500B
  • 接收状态:主机乙正确接收了这两个段

求: 主机乙返回的确认序列号(ACK)。

核心考点: TCP 的确认机制 ------累积确认(Cumulative Acknowledgment)。

TCP 的 ACK 号表示 "期望收到的下一个字节的序列号"。

三 哔哔详解

这道题考察的是 TCP 最基础也最重要的序列号计算逻辑。

  1. 理解序列号(Seq)的含义:

    TCP 是面向字节流的协议。每个字节都有一个编号。

    • 第一个段的 Seq = 200,意味着这个段里的第 1 个字节编号是 200。
    • 该段有 300B,所以它覆盖的字节范围是:200 ~ 499(计算:200 + 300 - 1 = 499)。
  2. 推算第二个段的序列号:

    题目说是 "连续" 的 TCP 段。

    • 第二个段紧接着第一个段,所以它的起始序列号应该是第一个段的结束号 + 1。
    • 第二个段的 Seq = 500。
    • 该段有 500B,所以它覆盖的字节范围是:500 ~ 999(计算:500 + 500 - 1 = 999)。
  3. 理解确认号(ACK)的含义:

    TCP 使用累积确认 。接收方回复的 ACK 号,代表它已经正确接收了该序号之前的所有字节 ,并且期望接收该序号的字节作为下一个数据。

    • 公式:ACK=最后一个正确收到的字节序号+1。
  4. 计算 ACK 号:

    • 主机乙收到了两个段,最后一个正确收到的字节序号是 999。
    • 那么,它期望下一次收到的字节序号就是 999 + 1 = 1000。
    • 所以,确认号 ACK = 1000。

四 参考答案

参考答案 D

五 考点精析

5.1 TCP 序号与确认号基本规则

1. 序号(Sequence Number, SEQ)

  • 定义 :标识本报文段中第一个字节在发送方字节流中的位置。
  • 编号单位按字节编号(不是按报文段)。
  • 初始值:ISN(Initial Sequence Number),随机生成(防 SYN Flood 攻击)。
  • 递增规则:
    • 每发送 n 字节数据,下一段 SEQ = 当前 SEQ + n
    • SYN/FIN 标志位也消耗一个序号(即使无数据)

✅ 示例:

SEQ=100,载荷=200B → 字节范围 100, 299,下一段 SEQ=300

2. 确认号(Acknowledgment Number, ACK)

  • 定义 :表示期望收到的下一个字节的序号
  • 含义 :已成功接收 0, ACK−1 的所有字节(累积确认)。
  • 有效条件 :仅当 ACK 标志位 = 1 时,确认号字段有效。
  • 响应关系:
    • 对方发来 SEQ=x,载荷=L → 本端应回复 ACK = x + L
    • 若含 SYN 或 FIN,则 ACK = x + 1(因它们各占 1 个序号)

✅ 示例:

收到 SEQ=500,500B 数据 → 回复 ACK=1000

收到 SYN(SEQ=100)→ 回复 ACK=101

5.2 SYN/FIN 对序号的影响

关键规则

  • SYN 消耗 1 个序号(即使无数据)
  • FIN 消耗 1 个序号
  • 纯 ACK 段不消耗序号

5.3 三次握手 (3-Way Handshake) 过程

第一次握手 (Client *→* Server):

  • 标志位:SYN = 1
  • 序号:Seq = x (ISN, 初始序列号)
  • 注意:此时 Client 没有发送数据,但消耗了 1 个序号。

第二次握手 (Server *→* Client):

  • 标志位:SYN = 1, ACK = 1
  • 序号:Seq = y (Server 的 ISN)
  • 确认号:ACK = *x+1* (期望收到 Client 的第一个数据字节)
  • 注意:Server 回复了 SYN,所以自己的 Seq 也要 +1 供下次使用。

第三次握手 (Client *→* Server):

  • 标志位:ACK = 1
  • 序号:Seq = *x+1* (因为第一次握手的 SYN 消耗了 1)
  • 确认号:ACK = *y+1* (期望收到 Server 的第一个数据字节)

5.4 四次挥手 (4-Way Wavehand) 过程

注意 FIN 报文也消耗序号。

  • 第一次挥手 (Client *→* Server):
    • 标志位:FIN = 1
    • 序号:Seq = u
    • 状态:Client 进入 FIN_WAIT_1。
  • 第二次挥手 (Server *→* Client):
    • 标志位:ACK = 1 (仅仅是确认关闭请求,还没准备好关闭)
    • 序号:Seq = v
    • 确认号:ACK = *u+1* (FIN 消耗了 1)
    • 状态:Server 进入 CLOSE_WAIT;Client 进入 FIN_WAIT_2。
  • 第三次挥手 (Server *→* Client):
    • 标志位:FIN = 1, ACK = 1 (Server 数据发完了,准备关闭)
    • 序号:Seq = w (通常 w=v,除非中间发了数据)
    • 确认号:ACK = u+1 (重复确认)
    • 注意:FIN 消耗 1 个序号。
  • 第四次挥手 (Client *→* Server):
    • 标志位:ACK = 1
    • 序号:Seq = u+1
    • 确认号:ACK = *w+1* (确认 Server 的 FIN)

5.5 序号回绕 (Sequence Wraparound)

概念: TCP 序号是 32 位的。当序号达到 232−1 后,下一个序号变为 0。

考点: 计算序号回绕时间。

公式:T=232带宽T = \frac{2^{32}}{\text{带宽}}T=带宽232

例子: 1Gbps 链路的回绕时间约为 34 秒。为了防止旧报文干扰,TCP 规定了 PAWS(Protect Against Wrapped Sequences)机制。

5.6 窗口与确认的关系

滑动窗口: 接收方在 ACK 报文中会携带一个 Window Size 字段。

含义: 告诉发送方 "我现在的接收缓冲区还剩多少空间,请以此控制发送速率"。

考点: 发送方的发送窗口大小取决于 Min 拥塞窗口 cwnd, 接收窗口 rwnd

5.3 易错点总结

错误认知 正确认知
"确认号 = 最后收到的 SEQ" ❌ 应为 最后收到的 SEQ + 载荷
"SYN 不占序号" ❌ SYN/FIN 各占 1 个序号
"ACK 段会改变 SEQ" ❌ 纯 ACK 段 SEQ 不变(除非同时携带数据)
"序号按报文段编号" ❌ 按字节编号

六 考点跟踪

年份 题号 考查内容 CSDN 参考链接 VX参考链接
2009 第38题 TCP 序列号与确认号计算(基础累加)
2011 第39题 TCP三次握手中的 SEQ/ACK
2012 第47题 TCP三次握手中的 SEQ/ACK
2013 第39题 TCP 序列号与确认号计算
2016 第41题 TCP三次握手
2020 第39题 反推发送的字节数
2021 第41题 TCP 序列号与确认号计算
2023 第47题 TCP 序列号与确认号计算
2024 第38题 TCP 释放连接最少时间
2025 第38题 反向计算可发送的段数

说明 :本文内容基于公开资料整理,参考了包括但不限于《数据结构》(严蔚敏)、《计算机操作系统》(汤小丹)、《计算机网络》(谢希仁)、《计算机组成原理》(唐朔飞)等国内高校经典教材,以及其他国际权威著作。同时,借鉴了王道、天勤、启航等机构出版的计算机专业考研辅导系列丛书 中的知识体系框架与典型题型分析思路。文中所有观点、例题解析及文字表述均为作者结合自身理解进行的归纳与重述,未直接复制任何出版物原文。内容仅用于学习交流,若有引用不当或疏漏之处,敬请指正。

相关推荐
技术不好的崎鸣同学13 分钟前
[极客大挑战 2019]EasySQL 思路及解法
网络·安全·web安全
Web极客码21 分钟前
跨国网络抖动下的 AI 爬虫流调优:我如何用 Claude 打造“智能退避”资讯清洗管道
网络·人工智能·爬虫
念何架构之路1 小时前
moby-http-api-server
网络·网络协议·http
namexingyun1 小时前
Scaling Law bug实战启示:从“虚胖“到“精瘦“的算力效率革命
开发语言·网络·人工智能·bug·ai编程
KaMeidebaby1 小时前
卡梅德生物技术快报|纳米抗体技术全套实操流程:AFB1 全合成文库淘选 + 分子对接定点突变参数手册
人工智能·python·tcp/ip·算法·机器学习
云栖梦泽在2 小时前
原生 IP、机房 IP、住宅 IP、广播 IP 有何不同?从网络身份到 ASN 识别的技术科普
网络·网络协议·tcp/ip·性能优化
AI创界者2 小时前
【实战演练】基于 Kali Linux 的自动化漏洞扫描与安全加固指南
网络·安全·web安全
从零开始的代码生活_3 小时前
Linux epoll 多路转接详解
linux·运维·网络·后端·tcp/ip·计算机网络·php
小鹿软件办公3 小时前
通过调整编码参数使用 VLC 媒体播放器无损压缩视频方法
运维·网络·音视频
魔尔助理顾问3 小时前
HTTP Response中的CORS Headers
网络·网络协议·http