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

news2025/6/6 14:35:43

目录

 一、PPT

二、总结

TCP(传输控制协议)详解

1. 概述

核心特性:

2. TCP报文段结构

关键字段说明:

3. TCP连接管理

3.1 三次握手(建立连接)

3.2 四次挥手(终止连接)

4. 可靠传输机制

4.1 序列号与确认号

4.2 重传机制

4.3 滑动窗口协议

5. 流量控制

接收窗口(rwnd)

零窗口探测

6. 拥塞控制

核心算法:

关键参数:

7. 高级特性

7.1 选项字段

7.2 定时器管理

8. TCP优缺点

优点:

缺点:

9. 典型应用场景


 一、PPT

二、总结

TCP(传输控制协议)详解

1. 概述

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

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

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

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

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

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

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


2. TCP报文段结构

 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适合实时性要求高的场景(如视频流)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2396603.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《信号与系统》--期末总结V1.0

《信号与系统》–期末总结V1.0 学习链接 入门:【拯救期末】期末必备!8小时速成信号与系统!【拯救期末】期末必备!8小时速成信号与系统!_哔哩哔哩_bilibili 精通:2022浙江大学信号与系统(含配…

mac笔记本如何快捷键截图后自动复制到粘贴板

前提:之前只会进行部分区域截图操作(commandshift4)操作,截图后发现未自动保存在剪贴板,还要进行一步手动复制到剪贴板的操作。 mac笔记本如何快捷键截图后自动复制到粘贴板 截取 Mac 屏幕的一部分并将其自动复制到剪…

高考加油!UI界面生成器!

这个高考助力标语生成器具有以下特点: 视觉设计:采用了蓝色为主色调,搭配渐变背景和圆形装饰元素,营造出宁静而充满希望的氛围,非常适合高考主题。 标语生成:内置了超过 100 条精心挑选的高考加油标语&a…

window ollama部署模型

注意去官网下载ollama,这个win和linux差别不大,win下载exe,linux用官网提供的curl命令 模型下载表:deepseek-r1 使用命令:Ollama API 交互 | 菜鸟教程 示例: 1.查看已加载模型: 2.文本生成接口 curl -X POST http://localhost:11434/v1/completions -H "Conte…

用mediamtx搭建简易rtmp,rtsp视频服务器

简述: 平常测试的时候搭建rtmp服务器很麻烦,这个mediamtx服务器,只要下载就能运行,不用安装、编译、配置等,简单易用、ffmpeg推流、vlc拉流 基础环境: vmware17,centos10 64位,wi…

ubuntu安装devkitPro

建议开个魔法 wget https://apt.devkitpro.org/install-devkitpro-pacman chmod x ./install-devkitpro-pacman sudo ./install-devkitpro-pacman(下面这句如果报错也没事) sudo ln -s /proc/self/mounts /etc/mtab往~.bashrc添加 export DEVKITPRO/o…

Linux(10)——第二个小程序(自制shell)

目录 ​编辑 一、引言与动机 📝背景 📝主要内容概括 二、全局数据 三、环境变量的初始化 ✅ 代码实现 四、构造动态提示符 ✅ 打印提示符函数 ✅ 提示符生成函数 ✅获取用户名函数 ✅获取主机名函数 ✅获取当前目录名函数 五、命令的读取与…

代码随想录算法训练营 Day59 图论Ⅸ dijkstra优化版 bellman_ford

图论 题目 47. 参加科学大会(第六期模拟笔试) 改进版本的 dijkstra 算法(堆优化版本) 朴素版本的 dijkstra 算法解法的时间复杂度为 O ( n 2 ) O(n^2) O(n2) 时间复杂度与 n 有关系,与边无关系 类似于 prim 对应点多…

【HW系列】—安全设备介绍(开源蜜罐的安装以及使用指南)

文章目录 蜜罐1. 什么是蜜罐?2. 开源蜜罐搭建与使用3. HFish 开源蜜罐详解安装步骤使用指南关闭方法 总结 蜜罐 1. 什么是蜜罐? 蜜罐(Honeypot)是一种主动防御技术,通过模拟存在漏洞的系统或服务(如数据库…

汽车总线分析总结(CAN、LIN、FlexRay、MOST、车载以太网)

目录 一、汽车总线技术概述 二、主流汽车总线技术对比分析 1. CAN总线(Controller Area Network) 2. LIN总线(Local Interconnect Network) 3. FlexRay总线 4. MOST总线(Media Oriented Systems Transport&#x…

MyBatisPlus--条件构造器及自定义SQL详解

条件构造器 在前面学习快速入门的时候,练习的增删改查都是基于id去执行的,但是在实际开发业务中,增删改查的条件往往是比较复杂的,因此MyBatisPlus就提供了一个条件构造器来帮助构造复杂的条件。 MyBatisPlus支持各种复杂的wher…

OVD开放词汇检测 Detic 训练COCO数据集实践

0、引言 纯视觉检测当前研究基本比较饱和,继续创新提升空间很小,除非在CNN和transformer上提出更强基础建模方式。和文本结合是当前的一大趋势,也是计算机视觉和自然语言处理结合的未来趋势,目前和文本结合的目标检测工作还是有很…

docker、ctr、crictl命令简介与使用

概述 在使用k3s过程中,经常需要使用ctr和crictl两个命令,本文记录一下。 ctr 类似docker命令是docker-shim容器运行时的客户端工具,ctr是Containerd的客户端工具。一个简单的CLI接口,用作Containerd本身的一些调试用途&#xf…

WEB3——什么是ABI

怎么获得ABI? 在编译完合约后,可以在左边下面点击复制ABI ABI(Application Binary Interface,应用二进制接口)是用来让前端或服务端 JavaScript 代码与智能合约进行交互的桥梁,它描述了合约的函数、事件和…

嵌入式软件--stm32 DAY 8.5 基础复习总结

1.时钟树 在数据手册里面,有一张密密麻麻的图,正是时钟系统里的时钟树。 对于时钟,我们注意有两点。一个是系统时钟SYSCLK,一个是依赖外部晶振生成的RTC. RTC以外部低速晶振作为时钟源或者外部高速晶振128分频后作为时钟源,又或者…

MMRL: Multi-Modal Representation Learning for Vision-Language Models(多模态表示学习)

摘要 预训练的VLMs,对于跨任务的迁移学习至关重要,然而,在few-shot数据集上微调会导致过拟合,降低在新任务上的性能。为解决这个问题,提出一种新的多模态表征学习框架(MMRL),该框架引入了一个共享、可学习…

rsync服务的搭建

目录 一、rsync介绍 rsync的安装 二、rsync的语法 三、rsync命令使用 1. 本机同步 2. 远程同步 四、rsync作为服务使用 1、尝试启动rsync程序 2、rsync的配置文件介绍 注意事项: 3. rsyncinotify实时同步 3.依赖服务托管xinetd(CentOS 6中rs…

vscode 配置 QtCreat Cmake项目

1.vscode安装CmakeTool插件并配置QT中cmake的路径,不止这一处 2.cmake生成器使用Ninja(Ninja在安装QT时需要勾选),可以解决[build] cc1plus.exe: error: too many filenames given; type ‘cc1plus.exe --help’ for usage 编译时…

HTML实现端午节主题网站:龙舟争渡,凭吊祭江诵君赋。

名人说:龙舟争渡,助威呐喊,凭吊祭江诵君赋。——苏轼《六幺令天中节》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、项目概览:传统与现代的技术碰撞1. 核心特…

uniapp uni-id 如果是正式项目,需自行实现发送邮件的相关功能

(3) 使用云对象sendEmailCode 发送邮箱验证码,报错送邮箱验证码失败 Error: 已启动测试模式,直接使用:123456作为邮箱验证码即可。 如果是正式项目,需自行实现发送邮件的相关功能 - DCloud问答 uni-id 没有实现邮箱验证码逻辑&am…