【计算机网络】第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适合实时性要求高的场景(如视频流)

相关推荐
笑衬人心。30 分钟前
HTTPS详解:原理 + 加解密过程 + 面试问答
java·网络协议·http·面试·https
bing_1581 小时前
MQTT 和 HTTP 有什么本质区别?
网络·网络协议·http
杨浦老苏2 小时前
Docker端口映射查看工具Dockpeek
网络·docker·群晖
未来之窗软件服务3 小时前
通过网页调用身份证阅读器http websocket方法-华视电子————仙盟创梦IDE
网络·网络协议·http·仙盟创梦ide·东方仙盟·硬件接入
醉方休3 小时前
TCP、HTTP/1.1 和HTTP/2 协议
网络协议·tcp/ip·http
创小匠3 小时前
创客匠人解析创始人 IP 定位:从专业度到用户心智的占领之道
网络·网络协议·tcp/ip
车载测试工程师4 小时前
车载以太网网络测试-29【SOME/IP-SD】-SD状态机
网络·网络协议·tcp/ip·车载系统·php
高兴达4 小时前
RPC--自定义注解注册发布服务
网络·网络协议·rpc
lang201509285 小时前
Reactor ConnectableFlux支持多订阅者
java·网络
在下Z.5 小时前
利用TCP协议,创建一个多人聊天室
网络·网络协议·tcp/ip