【计算机网络运输层详解】

文章目录

  • 一、前言
  • 二、运输层的功能
      • 1. 端到端通信
      • 2. 复用与分用
      • 3. 差错检测
      • 4. 流量控制
      • 5. 拥塞控制
  • 三、运输层协议:TCP 和 UDP
    • 1. TCP:面向连接的可靠传输协议
    • 2. UDP:无连接的传输协议
  • 四、端口号与进程通信
      • 1. 端口号分类
      • 2. 端口通信模型
  • 五、流量控制与拥塞控制
      • 1. 流量控制
      • 2. 拥塞控制
  • 六、总结


一、前言

计算机网络运输层(Transport Layer)位于网络层之上、应用层之下,在整个网络协议栈中起着承上启下的作用。它为应用进程提供端到端的数据传输服务,并确保数据能够可靠或高效地传送到目标主机。


二、运输层的功能

1. 端到端通信

  • 网络层负责主机之间的数据传输,但无法区分主机上的具体应用进程。
  • 运输层通过端口号标识不同的进程,实现主机到主机之间的端到端通信。

2. 复用与分用

  • 复用:多个应用程序可以同时使用运输层协议进行数据传输。
  • 分用:接收方将运输层数据解析并分发到对应的应用程序。

3. 差错检测

  • 运输层对数据进行校验,保证数据在传输过程中没有损坏。
  • 校验和用于检测数据在传输过程中是否出错。

4. 流量控制

  • 防止发送方发送过多的数据,超过接收方的处理能力。
  • 避免数据溢出或丢失。

5. 拥塞控制

  • 防止网络拥塞,确保网络资源被合理利用。
  • 通过调整发送速率来适应当前网络状态。

三、运输层协议:TCP 和 UDP

运输层的两大核心协议分别是:

  • TCP(Transmission Control Protocol):传输控制协议
  • UDP(User Datagram Protocol):用户数据报协议

1. TCP:面向连接的可靠传输协议

TCP 提供可靠的数据传输服务,具有以下特性:

  • 面向连接:在数据传输前需要先建立连接(3次握手),数据传输结束后释放连接(4次挥手)。
  • 可靠传输:数据包按序到达、无差错、不丢失、不重复。
  • 流量控制:通过滑动窗口机制控制发送方的数据发送速率。
  • 拥塞控制:通过慢启动、拥塞避免、快重传等算法控制数据流量,防止网络拥塞。

TCP 报文格式

  0          4          8         16         24         32--------------------------------------------------------| 源端口号    | 目的端口号      | 序号(32位)                 |--------------------------------------------------------| 确认号(32位)                      |--------------------------------------------------------| 数据偏移(4位) | 保留(6位) | 标志位(6位)  | 窗口大小      |--------------------------------------------------------| 校验和         | 紧急指针                      |--------------------------------------------------------| 可选字段(0-320位)                  |--------------------------------------------------------| 数据部分                              |--------------------------------------------------------
  • 源端口号和目的端口号:标识通信双方进程。
  • 序号和确认号:保证数据的可靠性和有序性。
  • 标志位
    • ACK:确认标志。
    • SYN:同步标志,用于建立连接。
    • FIN:终止标志,用于断开连接。
  • 窗口大小:用于流量控制。
  • 校验和:检测数据传输是否出错。

TCP 连接过程

  • 三次握手(建立连接)
    1. 客户端发送 SYN 报文。
    2. 服务端返回 SYN + ACK 报文。
    3. 客户端返回 ACK 报文,连接建立。
  • 四次挥手(释放连接)
    1. 客户端发送 FIN 请求断开连接。
    2. 服务端返回 ACK 确认。
    3. 服务端发送 FIN 请求断开。
    4. 客户端返回 ACK,连接断开。

2. UDP:无连接的传输协议

UDP 提供无连接的数据传输服务,具有以下特性:

  • 无连接:无需建立连接即可传输数据。
  • 不可靠传输:不保证数据有序、不丢失。
  • 速度快:开销小,适合对实时性要求高的应用(如视频会议、语音通话)。

UDP 报文格式

  0          4          8         16         24         32--------------------------------------------------------| 源端口号    | 目的端口号      | 数据长度         | 校验和      |--------------------------------------------------------| 数据部分(可变长)                                  |--------------------------------------------------------
  • 源端口号和目的端口号:标识通信进程。
  • 数据长度:数据部分的长度。
  • 校验和:检测数据是否损坏。
  • 数据部分:实际传输的数据。

UDP 应用场景

  • 实时音视频:如 VoIP、视频通话。
  • 在线游戏:数据传输需要速度,不需要可靠性。
  • 广播和多播:如 DHCP 协议。

四、端口号与进程通信

1. 端口号分类

  • 0~1023:系统端口(知名端口)
    • 80:HTTP
    • 443:HTTPS
    • 22:SSH
  • 1024~49151:注册端口
    • 分配给用户程序或进程。
  • 49152~65535:动态或私有端口
    • 临时端口号,供客户机程序使用。

2. 端口通信模型

  • 服务器监听指定端口,等待客户端连接。
  • 客户端通过指定端口向服务器发送数据。
  • 服务器和客户端进行数据交互。

五、流量控制与拥塞控制

1. 流量控制

  • 滑动窗口机制
    • 发送方和接收方维护窗口。
    • 窗口大小决定发送方可发送的数据量。
    • 通过调整窗口大小实现流量控制。

示例

  • 发送方窗口大小为 4。
  • 每次发送 4 个数据包。
  • 接收方确认收到数据后,滑动窗口前移。

2. 拥塞控制

  • 慢启动:初始发送速率较低,逐步增加。
  • 拥塞避免:防止发送速率增长过快。
  • 快重传:在接收方连续接收到 3 个重复的 ACK 时,立即重传数据。
  • 快恢复:在拥塞时减少窗口大小,不重置。

六、总结

运输层在计算机网络中负责主机之间的数据传输。它通过 TCP 和 UDP 提供可靠或高速的传输服务,同时通过流量控制与拥塞控制保障网络稳定性。

TCP 适合可靠性要求高的场景

  • 如文件传输、邮件、Web 浏览。

UDP 适合实时性要求高的场景

  • 如视频会议、语音通话、在线游戏。

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

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

相关文章

51单片机和STM32 入门分析

51单片机和STM32是嵌入式开发中两种主流的微控制器,它们在架构、性能、应用场景等方面存在显著差异。以下是两者的对比分析及选择建议: 1. 51单片机与STM32的定义与特点 51单片机 定义:基于Intel 8051内核的8位微控制器,结构简单…

开源视觉语言模型MiniMax-VL-01:动态分辨率+4M超长文本,性能比肩GPT-4o

在人工智能领域,构建能够像人类一样理解、思考和行动的智能体(AI Agent)一直是研究人员的终极目标之一。而实现这一目标的关键在于模型是否具备足够强大的感知能力、记忆能力和推理能力。近期,国内人工智能公司MiniMax重磅开源了其…

excel 列单元格合并(合并列相同行)

代码 首先自定义注解CellMerge,用于标记哪些属性需要合并,哪个是主键**(这里做了一个优化,可以标记多个主键)** import org.dromara.common.excel.core.CellMergeStrategy;import java.lang.annotation.*;/*** excel…

flowable适配达梦7 (2.1)

经过第一版的问题解决,后端项目可以启动,前端页面也集成进去。 前端在流程设计页面报错 之后发现主要是组件中modelerStore这个值没有 解决方法:在data增加对象 给component/process/designer.vue 中涉及到的每个子组件传入 :modelerStore“modeler…

Prometheus Exporter系列-Mysql_Exporter一键部署

新项目旧项目都需要给研发配置mysql监控,这里mysql监控对应aws 阿里云 腾讯云 华为云的云mysql产品或开源自建mysql。 exporter安装虽然简单,经常手动操作不免让人心烦,一键完成省去繁琐的常规操作。 配置信息对的情况下测试多次都可以正常安…

2025年移动端开发性能优化实践与趋势分析

启动速度优化 本质:缩短首次可见帧渲染时间。 方法: iOS:利用Core ML本地模型轻量化部署,减少云端等待。Android:强制启用SplashScreen API,通过setKeepOnScreenCondition控制动画时长。冷启动需将耗时操…

【MySQL篇】DEPENDENT SUBQUERY(依赖性子查询)优化:从百秒到秒级响应的四种优化办法

💫《博主介绍》:✨又是一天没白过,我是奈斯,从事IT领域✨ 💫《擅长领域》:✌️擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控;并对SQLserver、NoSQL(…

全文 - MLIR Toy Tutorial Chapter 1: Toy Language and AST

Toy 语言 本教程,将会借助一个玩具语言来讲解,这个语言我们称其为 Toy。Toy 是一个基于张量的语言,它允许你定义函数,执行一些数学计算,并且打印结果。做这样的设定,是因为我们希望让教程保持简明&#xff…

排序复习_代码纯享

头文件 #pragma once #include<iostream> #include<vector> #include<utility> using std::vector; using std::cout; using std::cin; using std::endl; using std::swap;//插入排序 //1、直接插入排序&#xff08;稳定&#xff09; void InsertSort(vecto…

CSS语言的双向链表

CSS语言的双向链表 引言 在计算机科学中&#xff0c;数据结构是一个极为重要的概念&#xff0c;而链表则是最常见的数据结构之一。链表可以分为单向链表和双向链表&#xff0c;其中双向链表因其灵活性和高效性而受到广泛应用。在前端开发的领域&#xff0c;尤其是CSS&#xf…

简单理解机器学习中top_k、top_p、temperature三个参数的作用

AI系列文章&#xff1a; AWS AI认证考试中经常提及几个重要的工具介绍 简单理解机器学习中top_k、top_p、temperature三个参数的作用 用Deepseek Kimi 快速生成高质量的ppt 在机器学习中&#xff0c;top_k、top_p 和 temperature 是用于控制生成模型&#xff08;如语言模型…

红宝书第十三讲:详解JavaScript核心对象:Array、Object、Date、RegExp

红宝书第十三讲&#xff1a;详解JavaScript核心对象&#xff1a;Array、Object、Date、RegExp 资料取自《JavaScript高级程序设计&#xff08;第5版&#xff09;》。 查看总目录&#xff1a;红宝书学习大纲 一、Object&#xff1a;万物皆对象的“盒子” Object是JavaScript中…

昆仑技术重构AI大模型落地范式,长期作“加法”迎来国产生态化“拐点”

作者 | 曾响铃 文 | 响铃说 DeepSeek的爆火&#xff0c;在业内迅速掀起了一场国产化的变革。“国产大模型国产算力”软硬协同的范式正在被重构&#xff0c;AI产业国产化的含金量持续提升&#xff0c;越来越多的企业在这一趋势下加速走上数智化转型路径。 其中&#xff0c;以…

原开源鸿蒙仓库停止更新

2月24日&#xff0c;gitee 上的开源鸿蒙组织&#xff0c;所有代码停止更新&#xff0c;查看代码仓显示已关闭&#xff0c;不少小伙伴以为停止更新了&#xff0c;发生了什么&#xff1f; 原因很简单&#xff0c;所有代码仓迁移至 Gitcode&#xff0c;至于为什么改用 Gitcode&…

Spring Boot框架中常用注解

以下是Spring Boot框架中常用注解的详细说明&#xff0c;包括名称、用途、用法、使用位置及扩展示例&#xff0c;按功能模块分类整理&#xff1a; 一、核心启动与配置注解 1. SpringBootApplication 用途&#xff1a;主启动类注解&#xff0c;整合了 Configuration、EnableAu…

Azure Delta Lake、Databricks和Event Hubs实现实时欺诈检测

设计Azure云架构方案实现Azure Delta Lake和Azure Databricks&#xff0c;结合 Azure Event Hubs/Kafka 摄入实时数据&#xff0c;通过 Delta Lake 实现 Exactly-Once 语义&#xff0c;实时欺诈检测&#xff08;流数据写入 Delta Lake&#xff0c;批处理模型实时更新&#xff0…

车载以太网网络测试 -23【TCPUDP通信示例】

1 摘要 在车载通信场景中&#xff0c;TCP以及UDP的通信可以用于多种应用&#xff0c;例如车辆状态监控、远程控制、数据采集等。以下是详细的代码示例&#xff0c;展示了如何使用Python实现简单的TCP客户端与服务端通信以及简单的UDP客户端与服务端通信&#xff0c;并模拟了车…

SpringBoot大学生竞赛管理系统设计与实现

一个用于管理大学生竞赛报名、信息查询与竞赛管理的系统&#xff0c;采用了现代化的SpringBoot框架进行开发。该系统的主要功能包括学生信息管理、教师信息管理、竞赛报名审核、竞赛信息管理等模块&#xff0c;适用于学校或教育机构进行竞赛活动的组织与管理。系统界面简洁&…

深入解析libsunrpc:构建分布式系统的核心RPC库

深入解析libsunrpc&#xff1a;构建分布式系统的核心RPC库 引言 在分布式系统开发中&#xff0c;远程过程调用&#xff08;Remote Procedure Call, RPC&#xff09; 是连接不同节点、实现跨网络服务调用的关键技术。作为SUN公司开源的经典RPC实现&#xff0c;libsunrpc 凭借其…

MinIO搭建部署

1、命令行安装 访问monio官网下载应用程序 # wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio-20250228095516.0.0-1.x86_64.rpm -O minio.rpm # sudo dnf install minio.rpm # mkdir ~/minio # minio server ~/minio --console-address :90012、dock…