一、TCP 与 UDP 基础对比★★★★
1 核心特性总览
| 维度 | TCP(传输控制协议) | UDP(用户数据报协议) |
|---|---|---|
| 连接属性 | 面向连接,传输前建立连接 | 无连接,直接发送报文 |
| 可靠性 | 可靠传输,重传、确认、有序 | 不可靠尽力交付,无确认重传 |
| 头部长度 | 可变 20~60 字节(偏移 4bit,单位 4B) | 固定 8 字节,无复杂控制字段 |
| 控制机制 | 序列号、ACK、滑动窗口、拥塞控制 | 无流量 / 拥塞控制,仅端口 + 校验和 |
| 适用业务 | 文件、网页、邮件、远程登录 | 直播、语音、DNS、TFTP、游戏 |
| 优缺点 | 稳定可靠,开销大、延迟高 | 低延迟、开销小,存在丢包风险 |
2 分层可靠区分(高频选择题)
- 数据链路层:点到点单段链路可靠;
- 传输层 TCP:端到端全程可靠(源主机→目标主机)。
二、UDP 报文结构与计算考点★★★
1 UDP 固定 8 字节头部组成
16 位源端口 + 16 位目的端口 + 16 位总长度 + 16 位校验和
2 必考数值计算
- 总长度字段 16bit,最大值 65535 字节;
- UDP 最大有效负载 = 65535 - 8 头部 = 65527 字节;
- 易错坑:题目问总长度选 65535,问数据负载选 65527。
3 UDP 典型应用(UDP 口诀:扔石头蛋蛋)
RIP(520)、SNMP(161)、TFTP(69)、DNS(53)、DHCP(67/68)
三、TCP 报文完整头部字段★★★★★

- 源端口、目的端口(各 16bit,0~65535)
- 32 位序列号 seq:每个数据字节独立编号,32 位最大可标识\(2^{32}\)字节(4GB)
- 32 位确认号 ack:ack = 对方 seq + 已接收数据字节数,表示 ack 之前全部收到
- 4 位数据偏移(IHL):单位 4 字节,最小值 5(20B),最大值 15(60B)
- 6 位保留位,后续 6 个控制标志位(必考)
- URG:紧急数据,搭配紧急指针使用;URG 标志 = 存在带外数据,指针标记紧急数据末尾
- ACK:除第一次 SYN 报文外,所有 TCP 报文 ACK=1
- PSH:推送,接收端不缓存,立即上交应用层
- RST:重置,连接异常强制断开
- SYN:同步,三次握手建立连接
- FIN:结束,四次挥手释放连接
- 16 位窗口字段:流量控制滑动窗口,通告接收缓冲区剩余容量
- 16 位校验和:校验 TCP 头部 + 数据
- 16 位紧急指针:仅 URG 置 1 时有意义,标记紧急数据位置
- 可变选项字段:MSS、时间戳等,最长 40 字节
配套计算题
MSS 最大分段大小 = 以太网 MTU1500 - IP 头 20 - TCP 头 20 = 1460 字节
四、TCP 三次握手(建立连接)★★★★★

1 三步报文标志与 seq/ack 规则
- 客户端→服务端:SYN=1,ACK=0,随机初始 seq=x;状态:CLOSED→SYN_SENT
- 服务端→客户端:SYN=1,ACK=1,seq=y,ack=x+1;状态:LISTEN→SYN_RCVD
- 客户端→服务端:SYN=0,ACK=1,seq=x+1,ack=y+1;双方进入 ESTABLISHED,可携带业务数据
2 核心规则
ack 永远等于对方上一条 seq + 本条数据长度;SYN/FIN 控制报文单独占用 1 个序列号。
3 异常状态考点
SYN_SENT 长时间无响应,超时后回到 CLOSED。
五、TCP 四次挥手(断开连接)
- 客户端发 FIN=1:主动关闭发送通道,仍可接收数据(FIN_WAIT1)
- 服务端回 ACK=1:确认关闭请求(FIN_WAIT2)
- 服务端发 FIN=1:服务端无数据发送
- 客户端回 ACK=1,进入 TIME_WAIT(等待 2MSL 防止残留报文),服务端直接 CLOSED
六、TCP 序列号与确认号计算真题题型
- 示例:客户端 seq=42,发送 1 字节字符 "C"
- 客户端 seq=42,数据长度 1
- 服务端回复 ack=42+1=43,自身 seq 取对方 ack
- 三次握手 seq=2000,FIN 报文 seq=8001 有效数据范围 2001~8000,总字节 = 8000-2000=6000 字节
七、TCP 流量控制(滑动窗口)★★★★
1 作用
防止发送方发送速率过快,超出接收缓冲区处理能力,造成丢包重传。
2 实现机制
接收端通过 TCP 头部窗口字段通告剩余缓存容量;发送方每次发送数据总量不能超过通告窗口。
3 规则
发送窗口 = min (接收通告滑动窗口,本地拥塞窗口) 窗口值为 0 时,发送方暂停发送,等待新 ACK 更新窗口。
八、TCP 拥塞控制(全网链路管控)★★★★★
流量控制 vs 拥塞控制区分
- 流量控制:两端主机缓冲区匹配(接收方限制)
- 拥塞控制:整条网络链路负载(发送方本地 cwnd 控制)
四大核心阶段
- 慢启动 初始拥塞窗口 cwnd=1;每收到一组 ACK,cwnd×2,指数增长,直到达到慢启动阈值 ssthresh。
- 拥塞避免 cwnd≥ssthresh 后,每个 RTT 往返时间 cwnd+1,线性缓慢增长。
- 超时丢包处理 ssthresh = 当前 cwnd / 2;cwnd 重置为 1,重新慢启动。
- 快重传 + 快恢复(3 个重复 ACK 触发)
- 快重传:无需等待超时计时器,直接重传丢失报文;
- 快恢复:ssthresh = cwnd/2,cwnd=ssthresh,直接进入拥塞避免,不重置为 1。
真题计算公式
收到 3 个冗余 ACK:新 cwnd = 原 cwnd ÷ 2
例:原 cwnd=4000 字节,快恢复 cwnd=2000 字节
九、知名端口与应用层协议速记★★★
TCP 可靠协议(需要完整数据)
- 21 FTP 控制、20 FTP 数据
- 22 SSH、23 Telnet
- 25 SMTP 发邮件、110 POP3 收、143 IMAP
- 80 HTTP、443 HTTPS
- 179 BGP
UDP 实时协议(口诀:扔石头蛋蛋)
- 53 DNS、67/68 DHCP
- 69 TFTP、161 SNMP、520 RIP
端口通用规则
客户端源端口:随机大于 1024;
服务器目的端口:0~1023 知名端口。
端口扫描考点
FIN 扫描:目标端口开放无应答;端口关闭返回 RST 报文。
十、本章综合重难点速查表
| 知识点模块 | 核心结论 | 高频易错点 | 考试星级 |
|---|---|---|---|
| UDP 头部 | 固定 8B,最大负载 65527 | 把总长度 65535 当作数据长度 | ★★ |
| TCP 头部 | 20~60B,偏移单位 4 字节 | 偏移单位 1 字节 | ★★★★ |
| TCP 标志 | SYN 建、FIN 断、URG 紧急 | ACK 握手第一帧置 1 | ★★★★ |
| 三次握手 | SYN→SYN+ACK→ACK,ack=seq+1 | SYN 报文 ack=1 | ★★★★★ |
| 序列号计算 | SYN/FIN 占 1 字节序号 | 控制报文不计序号 | ★★★ |
| 流量控制 | 滑动窗口,接收端通告 | 窗口字段是拥塞窗口 | ★★★ |
| 拥塞控制 | 慢启动指数、拥塞避免线性 | 丢包直接 cwnd 减半 | ★★★★ |
| 快重传 | 3 个重复 ACK 触发 | 超时才重传 | ★★★ |
| 端口规则 | 客户端源 > 1024 | 客户端使用 80 作源端口 | ★★★ |

5万+

被折叠的 条评论
为什么被折叠?



