传输层协议

17 Mar 2025 | 6 分钟阅读
  • 传输层由两个协议表示:TCP 和 UDP。
  • 网络层的 IP 协议将数据报从源主机传递到目标主机。
  • 如今,操作系统支持多用户和多进程环境,一个正在执行的程序称为进程。当一台主机向另一台主机发送消息时,意味着源进程正在向目标进程发送一个进程。传输层协议定义了一些连接到单个端口,称为协议端口。
  • IP 协议是主机到主机的协议,用于将数据包从源主机传递到目标主机,而传输层协议是端口到端口的协议,它们工作在 IP 协议的顶层,将数据包从起始端口传递到 IP 服务,再从 IP 服务传递到目标端口。
  • 每个端口由一个正整数地址定义,它有 16 位。
Transport Layer protocols

UDP

  • UDP 代表 用户数据报协议
  • UDP 是一个简单的协议,它提供非顺序的传输功能。
  • UDP 是一个无连接协议。
  • 当可靠性和安全性不如速度和大小重要时,则使用此类协议。
  • UDP 是一个端到端的传输层协议,它将传输层地址、校验和错误控制和长度信息添加到上层数据中。
  • UDP 协议产生的报文称为用户数据报。

用户数据报格式

用户数据报有一个 16 字节的头部,如下所示:

Transport Layer protocols

其中,

  • 源端口地址:它定义了发送消息的应用程序进程的地址。源端口地址是 16 位地址。
  • 目标端口地址:它定义了将接收消息的应用程序进程的地址。目标端口地址是 16 位地址。
  • 总长度:它以字节为单位定义用户数据报的总长度。这是一个 16 位字段。
  • 校验和:校验和是一个 16 位字段,用于错误检测。

UDP 协议的缺点

  • UDP 提供端到端传输所需的基本功能。
  • 它不提供任何排序或重排功能,并且在报告错误时不会指定损坏的数据包。
  • UDP 可以发现错误已发生,但它不指定哪个数据包丢失,因为它不包含特定数据段的 ID 或序列号。

TCP

  • TCP 代表传输控制协议。
  • 它为应用程序提供完整的传输层服务。
  • 它是一个面向连接的协议,意味着在传输的双方之间建立连接。为了创建连接,TCP 在传输期间在发送方和接收方之间生成一个虚拟电路。

TCP 协议的特点

  • 流式数据传输:TCP 协议以连续的字节流形式传输数据。TCP 将字节分组为 TCP 段,然后将其传递给 IP 层以传输到目标。TCP 本身对数据进行分段并转发给 IP。
  • 可靠性:TCP 为传输的每个字节分配一个序列号,并期望收到接收方 TCP 的肯定确认。如果在超时间隔内未收到 ACK,则数据将被重传到目标。
    接收方的 TCP 使用序列号来重新组装乱序到达的段,或消除重复的段。
  • 流量控制:当接收方的 TCP 发送一个确认回给发送方时,指示它可以在不溢出其内部缓冲区的情况下接收的字节数。字节数以 ACK 的形式发送,表示它可以无问题地接收的最高序列号。此机制也称为窗口机制。
  • 多路复用:多路复用是将来自不同应用程序的数据接受并转发到不同计算机上的不同应用程序的过程。在接收端,数据会被转发到正确的应用程序。这个过程称为解多路复用。TCP 使用称为端口的逻辑通道来将数据包传输到正确的应用程序。
  • 逻辑连接:套接字、序列号和窗口大小的组合称为逻辑连接。每个连接由发送和接收进程使用的套接字对标识。
  • 全双工:TCP 提供全双工服务,即数据可以同时在两个方向上传输。为了实现全双工服务,每个 TCP 都必须具有发送和接收缓冲区,以便段可以在两个方向上传输。TCP 是一个面向连接的协议。假设进程 A 想要发送和接收进程 B 的数据。将发生以下步骤:
    • 在两个 TCP 之间建立连接。
    • 数据在两个方向上传输。
    • 连接终止。

TCP 段格式

Transport Layer protocols

其中,

  • 源端口地址:它用于定义源计算机上应用程序的地址。这是一个 16 位字段。
  • 目标端口地址:它用于定义目标计算机上应用程序的地址。这是一个 16 位字段。
  • 序列号:数据流被分成两个或多个 TCP 段。32 位序列号字段表示数据在原始数据流中的位置。
  • 确认号:一个 32 位确认号字段用于确认来自其他通信设备的数据。如果 ACK 字段设置为 1,则表示接收方期望接收的序列号。
  • 头部长度(HLEN):它以 32 位字为单位指定 TCP 头的长度。头的最小长度是 5 个字,最大长度是 15 个字。因此,TCP 头的最大长度是 60 字节,最小长度是 20 字节。
  • 保留:这是一个 6 位字段,保留供将来使用。
  • 控制位:控制字段的每个位独立且单独工作。控制位定义了段的使用,或作为其他字段的有效性检查。

控制字段中总共有六种标志

  • URG:URG 字段指示段中的数据是紧急的。
  • ACK:当 ACK 字段设置时,它验证确认号。
  • PSH:PSH 字段用于通知发送方需要更高的吞吐量,因此如果可能,数据应以更高的吞吐量推送。
  • RST:当序列号出现任何混淆时,复位位用于复位 TCP 连接。
  • SYN:SYN 字段用于在三种类型的段中同步序列号:连接请求、连接确认(设置了 ACK 位)和确认应答。
  • FIN:FIN 字段用于通知接收方 TCP 模块发送方已完成数据发送。它用于三种类型的段中的连接终止:终止请求、终止确认和终止确认的应答。
    • 窗口大小:窗口是一个 16 位字段,定义了窗口的大小。
    • 校验和:校验和是一个 16 位字段,用于错误检测。
    • 紧急指针:如果 URG 标志设置为 1,则此 16 位字段是与序列号的偏移量,表示它是最后一个紧急数据字节。
    • 选项和填充:它定义了用于向接收方传达附加信息的可选字段。

TCP 与 UDP 的区别

比较基础TCPUDP
定义TCP 在传输数据之前建立虚拟电路。UDP 直接将数据传输到目标计算机,而无需验证接收方是否已准备好接收。
连接类型它是一个面向连接的协议它是一个无连接协议
速度缓慢high
可靠性它是一个可靠的协议。它是一个不可靠的协议。
头部大小20 字节8 字节
确认它等待数据确认,并具有重新发送丢失数据包的能力。它既不接受确认,也不重传损坏的帧。
下一主题应用层