当前位置: 首页 > article >正文

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

文章目录

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

相关文章:

  • 常见框架漏洞—Spring
  • 深度学习篇---PaddleDetectionPaddleOCR
  • 《AI大模型趣味实战 》第7集:多端适配 个人新闻头条 基于大模型和RSS聚合打造个人新闻电台(Flask WEB版) 1
  • Spring Boot - 动态编译 Java 类并实现热加载
  • 自动驾驶背后的数学:ReLU,Sigmoid, Leaky ReLU, PReLU,Swish等激活函数解析
  • 深度强化学习中的深度神经网络优化策略:挑战与解决方案
  • Spring Boot 一个接口实现任意表的 Excel 导入导出
  • Unity图形学Shader快速回顾
  • 如何从后端实现页面跳转?
  • 【区块链通用服务平台及组件】绿信链 | FISCO BCOS 应用案例
  • Python(4)Python函数编程性能优化全指南:从基础语法到并发调优
  • 数据结构---最小生成树
  • 3.23学习总结
  • C#基础学习(四)笑谈C#函数:从“Hello World”到“千变万化”的奇幻之旅
  • Delta Lake 解析:架构、数据处理流程与最佳实践
  • Flink 自定义数据源:从理论到实践的全方位指南
  • 【C++】继承机制:从基础到避坑详细解说
  • Leetcode 3493. Properties Graph
  • Vue 表单输入绑定,双向绑定
  • 蓝桥杯2022年第十三届决赛真题-最大数字