【计算机网络】第3章:传输层—面向连接的传输:TCP

目录

一、PPT

二、总结

TCP(传输控制协议)详解

[1. 概述](#1. 概述)

核心特性:

[2. TCP报文段结构](#2. TCP报文段结构)

关键字段说明:

[3. TCP连接管理](#3. TCP连接管理)

[3.1 三次握手(建立连接)](#3.1 三次握手(建立连接))

[3.2 四次挥手(终止连接)](#3.2 四次挥手(终止连接))

[4. 可靠传输机制](#4. 可靠传输机制)

[4.1 序列号与确认号](#4.1 序列号与确认号)

[4.2 重传机制](#4.2 重传机制)

[4.3 滑动窗口协议](#4.3 滑动窗口协议)

[5. 流量控制](#5. 流量控制)

接收窗口(rwnd)

零窗口探测

[6. 拥塞控制](#6. 拥塞控制)

核心算法:

关键参数:

[7. 高级特性](#7. 高级特性)

[7.1 选项字段](#7.1 选项字段)

[7.2 定时器管理](#7.2 定时器管理)

[8. TCP优缺点](#8. TCP优缺点)

优点:

缺点:

[9. 典型应用场景](#9. 典型应用场景)


一、PPT

二、总结

TCP(传输控制协议)详解

1. 概述

TCP(Transmission Control Protocol) 是计算机网络中面向连接的、可靠的、基于字节流的传输层协议。它在IP协议提供的不可靠数据报服务基础上,为应用程序提供可靠的端到端通信服务。

核心特性:
  • 面向连接:通信前需建立连接(三次握手)

  • 可靠传输:确保数据完整有序到达

  • 流量控制:防止接收方被数据淹没

  • 拥塞控制:避免网络过载

  • 全双工通信:双方可同时发送和接收数据

  • 字节流服务:无固定消息边界


2. TCP报文段结构

TypeScript 复制代码
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         源端口 (16位)         |       目的端口 (16位)          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       序列号 (32位)                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     确认号 (32位)                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 数据偏移 | 保留 |    控制位    |            窗口大小           |
| (4位)   | (6位)| (URG|ACK|PSH| (16位)                         |
|         |      | RST|SYN|FIN) |                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           校验和 (16位)       |        紧急指针 (16位)         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                   选项 (长度可变,最多40字节)                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            数据                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
关键字段说明:
  • 源/目的端口:标识发送/接收进程

  • 序列号:本报文段第一个字节的编号

  • 确认号:期望收到的下一个字节序号

  • 控制位

    • URG:紧急指针有效

    • ACK:确认字段有效

    • PSH:接收方应立即推送数据

    • RST:重置连接

    • SYN:同步序列号(建立连接)

    • FIN:发送方结束传输

  • 窗口大小:接收窗口大小(流量控制)

  • 校验和:首部和数据的校验值

  • 紧急指针:紧急数据结束位置


3. TCP连接管理

3.1 三次握手(建立连接)
  1. SYN:客户端发送SYN报文(随机序列号x)

  2. SYN+ACK:服务器响应SYN-ACK(随机序列号y,确认号x+1)

  3. ACK:客户端发送ACK确认(序列号x+1,确认号y+1)

3.2 四次挥手(终止连接)
  1. FIN:主动关闭方发送FIN报文

  2. ACK:被动方确认FIN

  3. FIN:被动方发送自己的FIN

  4. ACK:主动方确认FIN(等待2MSL后关闭)

TIME_WAIT状态:主动关闭方需等待2MSL(Maximum Segment Lifetime)时间,确保最后ACK到达

4. 可靠传输机制

4.1 序列号与确认号
  • 每个字节都有唯一序列号

  • 确认号采用累计确认:表示该序号之前的所有字节已正确接收

4.2 重传机制
  • 超时重传:为每个报文段设置计时器

  • 快速重传:收到3个重复ACK立即重传

4.3 滑动窗口协议
  • 发送窗口:包含已发送未确认和可发送的数据

  • 接收窗口:指示剩余缓冲区大小(流量控制)


5. 流量控制

接收窗口(rwnd)
  • 通过TCP首部"窗口大小"字段通告接收方缓冲区余量

  • 动态调整发送速率,防止接收方溢出

零窗口探测
  • 当接收窗口=0时,发送方周期性发送探测报文

6. 拥塞控制

核心算法:
阶段 拥塞窗口(cwnd)变化 触发条件
慢启动 指数增长(每RTT翻倍) 初始阶段
拥塞避免 线性增长(每RTT +1 MSS) cwnd > ssthresh
快速重传 cwnd = cwnd/2 + 3 收到3个重复ACK
快速恢复 线性增长 快速重传后
关键参数:
  • ssthresh(慢启动阈值):初始值较大,超时后设为当前cwnd一半

  • AIMD原则:加性增(Additive Increase),乘性减(Multiplicative Decrease)


7. 高级特性

7.1 选项字段
  • MSS(最大报文段大小):协商最大分段长度

  • 窗口缩放因子:扩展窗口大小(最高2^30字节)

  • 时间戳:精确RTT测量和防序列号回绕(PAWS)

7.2 定时器管理
  • 重传定时器:数据包丢失检测

  • 持续定时器:零窗口探测

  • 保活定时器:检测空闲连接状态

  • TIME_WAIT定时器:2MSL等待


8. TCP优缺点

优点:

✅ 数据可靠传输

✅ 保证数据顺序

✅ 动态流量控制

✅ 自适应拥塞控制

✅ 广泛兼容性

缺点:

❌ 连接建立开销(三次握手)

❌ 首部较大(最小20字节)

❌ 队头阻塞问题

❌ 高延迟网络效率低

❌ 缺乏多路复用原生支持


9. 典型应用场景

  • Web浏览(HTTP/HTTPS)

  • 文件传输(FTP)

  • 电子邮件(SMTP/POP3/IMAP)

  • 远程访问(SSH)

  • 数据库访问

对比UDP:TCP适合需要可靠传输的场景(如文件传输),UDP适合实时性要求高的场景(如视频流)

相关推荐
刘逸潇200533 分钟前
FastAPI(二)——请求与响应
网络·python·fastapi
软件技术员41 分钟前
使用ACME自动签发SSL 证书
服务器·网络协议·ssl
我也要当昏君1 小时前
6.4 电子邮件 (答案见原书 P284)
网络协议
Mongnewer1 小时前
通过虚拟串口和网络UDP进行数据收发的Delphi7, Lazarus, VB6和VisualFreeBasic实践
网络
我也要当昏君2 小时前
6.5 万维网(答案见原书P294)
网络
嶔某2 小时前
网络:传输层协议UDP和TCP
网络·tcp/ip·udp
元亓亓亓2 小时前
考研408--计算机网络--day1-概念&组成功能&三种交换技术&分类
服务器·计算机网络·考研
文火冰糖的硅基工坊2 小时前
[嵌入式系统-154]:各种工业现场总线比较
网络·自动驾驶·硬件架构
以己之2 小时前
详解TCP(详细版)
java·网络·tcp/ip
せいしゅん青春之我3 小时前
[JavaEE初阶]网络协议-状态码
java·网络协议·http