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

文章目录

  • 一、前言
  • 二、运输层的功能
      • 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.rhkb.cn/news/38703.html

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

相关文章

【中文翻译】第3章(1/3)-The Algorithmic Foundations of Differential Privacy

为方便阅读,故将《The Algorithmic Foundations of Differential Privacy》翻译项目内容搬运至此; 教材原文地址:https://www.cis.upenn.edu/~aaroth/Papers/privacybook.pdf 中文翻译版 Github 项目地址1:https://github.com/gu…

2.1词法分析任务

编译器结构 前端 词法分析器的任务 字符流到记号流 eg: 把这些单词就叫做记号 EOF结束符号!

Linux操作系统7- 线程同步与互斥5(POSIX条件变量生产者消费者模型的进一步使用)

上篇文章:Linux操作系统7- 线程同步与互斥4(基于POSIX条件变量的生产者消费者模型)-CSDN博客 本篇代码仓库: 支持处理简单任务的生产者消费者模型代码 生产者-消费者-保存者三线程两队列模型 多生产多消费的生产者消费者模型 进一…

【嵌入式学习2】C语言 - VScode环境搭建

目录 ## 语言分类 ## c语言编译器 ## VScode相关配置 ## 语言分类 编译型语言:C,C解释型语言:python,JS ## c语言编译器 分类GCC 系列MinGWCygwinMSVC系列一套编程语言编译器将GCC编译器和GNU Binutils移植到Win32平台下的产物…

使用Doris broker load导入数据到带Kerberos的HA HDFS的命令详解

以下是关于 Doris Broker Load 结合 Kerberos 认证的 HDFS 数据导入的详细解析: 一、Broker Load 核心原理 Broker Load 是 Doris 中用于从 HDFS/S3 等远程存储系统异步导入大数据的工具,其核心流程如下: 任务提交:用户通过 SQL…

数字化转型 2.0:AI、低代码与智能分析如何重塑企业竞争力?

引言:数字化转型进入2.0时代 在过去的十几年里,企业的数字化转型(1.0)主要围绕信息化和自动化展开,例如引入ERP、CRM等系统,提高办公效率,减少人为失误。然而,随着市场竞争加剧&…

指针,数组 易混题解析(一)

目录 一.相关知识点 1.数组名是什么? 两个例外: 2.strlen 3.sizeof 4. * ( ) 与 [ ] 的互换 二.一维数组 三.字符数组 1. 字符 (1)sizeof (2)strlen 2.字符串 (1)si…

ABC392题解

A 算法标签: 模拟 #include <iostream> #include <algorithm> #include <cstring>using namespace std;int main() {ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int w[3];for (int i 0; i < 3; i) cin >> w[i];sort(w, w 3);if (w[0]…

Quartus + VScode 实现模块化流水灯

文章目录 一、通过VScode编写Verilog代码二、模块化编程三、代码示例 一、通过VScode编写Verilog代码 1、下载Vscode 2、下载相关插件 搜索Verilog就会弹出有如图所示的插件&#xff0c;下载并安装 3、创建Quartus项目 4、创建完成后点击Tools&#xff0c;选择Options 然后在…

简单讲一下控制系统所用的PID公式

2025年3月23日电子电工实验室讲课大纲 哈喽&#xff0c;小伙伴们大家好&#xff0c;今天我们来讲一下PID&#xff01;首先我们的针对的场景是什么——循迹小车&#xff01; 就是我们刚入手STM32时&#xff0c;我们可能会制作一个循迹小车。我们想让那个小车走直线&#xff0c;但…

直观理解ECC椭圆曲线加密算法

数学还是挺有逻辑的&#xff0c;给出计算的操作步骤 就能得出想要结果 背景&#xff1a; ● ECC 是一种极其巧妙的 非对称加密算法 , 其完美利用了 椭圆曲线几何累加 不可逆的性质 ● 拥有 密钥体积小&#xff0c;计算速度快的优势&#xff0c;被广泛用于各种区块链&#xff0c…

深度解析 Android Matrix 变换(二):组合变换 pre、post

前言 在上一篇文章中&#xff0c;我们讲解了 Canvas 中单个变换的原理和效果&#xff0c;即缩放、旋转和平移。但是单个旋转仅仅是基础&#xff0c;Canvas 变换最重要的是能够随意组合各种变换以实现想要的效果。在这种情况下&#xff0c;就需要了解如何组合变换&#xff0c;以…

c++之迭代器

一.迭代器的基本概念 1.什么是迭代器 迭代器是一种对象&#xff0c;它提供了一种访问容器中各个元素的方法&#xff0c;同时隐藏了容器内部的实现细节。简单来说&#xff0c;迭代器就像是一个指针&#xff0c;它可以指向容器中的某个元素&#xff0c;并且能够通过一些操作&am…

在 .NET 9.0 Web API 中实现 Scalar 接口文档及JWT集成

示例代码&#xff1a;https://download.csdn.net/download/hefeng_aspnet/90408075 介绍 随着 .NET 9 的发布&#xff0c;微软宣布他们将不再为任何 .NET API 项目提供默认的 Swagger gen UI。以前&#xff0c;当我们创建 .NET API 项目时&#xff0c;微软会自动添加 Swagger…

【操作系统笔记】操作系统的功能

上节课,我们学习了《什么是操作系统》。接下来,我们来看看操作系统有哪些功能? 这里讲的内容有两部分,一个是操作系统的目标,另外一个就是操作系统的功能。这两个细节可能会在考试的时候考到,但是最近好些年很少考到了。为了理解,我们还是一起来看一下。 操作系统的目标…

C/C++蓝桥杯算法真题打卡(Day7)

一、P8723 [蓝桥杯 2020 省 AB3] 乘法表 - 洛谷 算法代码&#xff1a; #include<bits/stdc.h> // 包含标准库中的所有头文件&#xff0c;通常用于竞赛编程中简化代码 using namespace std; // 使用标准命名空间&#xff0c;避免每次调用标准库函数时都要加std:: ty…

数据结构5(初):排序

目录 1、排序的概念以及常见的排序算法 1.1、排序的概念 1.2、常见的排序算法 2、常见排序算法的实现 2.1、插入排序 2.1.1、直接插入排序 2.1.2、希尔排序 2.2、选择排序 2.2.1、直接选择排序 2.2.2、堆排序 2.3、交换排序 2.3.1、冒泡排序 2.3.2、快速排序 2.3.…

VS2022中通过VCPKG安装的ceres之后调试ceres的例程设置

1.采用C20. vcpkg中设置: 2.增加预处理宏: GLOG_USE_GLOG_EXPORT 3.屏蔽sdl错误 在 项目-属性-C/C -命令行中添加 /sdl /w34996 #include "ceres/ceres.h" //#include <iostream> //#include<glog/logging.h>using ceres::AutoDiffCostFunction; usi…

Pydantic字段级校验:解锁@validator的12种应用

title: Pydantic字段级校验:解锁@validator的12种应用 date: 2025/3/23 updated: 2025/3/23 author: cmdragon excerpt: Pydantic校验系统支持通过pre验证器实现原始数据预处理,在类型转换前完成字符清洗等操作。格式验证涵盖正则表达式匹配与枚举值约束,确保护照编号等字…

函数递归和迭代

1.什么是递归&#xff1f; 在C语言中递归就是自己调用自己。 看一下简单函数的递归&#xff1a; 上面的代码实现演示一下函数的递归&#xff0c;最终是会陷入死循环的&#xff0c;栈溢出 。 1.1递归的思想&#xff1a; 把一个大型的问题一步一步的转换成一个个小的子问题来解…