什么是传输控制协议 (TCP)?

17 Mar 2025 | 5 分钟阅读

TCP 代表传输控制协议 (Transmission Control Protocol)。它是一种传输层协议,用于促进数据包从源头到目的地的传输。它是一种面向连接的协议,这意味着在网络中的计算设备之间进行通信之前,它会先建立连接。该协议与 IP 协议一起使用,因此它们合称为 TCP/IP

TCP 的主要功能是从应用层获取数据。然后,它将数据分成若干个数据包,为这些数据包编号,最后将这些数据包传输到目的地。在另一端,TCP 将重新组装数据包,并将它们传输到应用层。正如我们所知,TCP 是一种面向连接的协议,因此在发送方和接收方之间的通信完成之前,连接将一直保持建立状态。

TCP 协议的特点

以下是 TCP 协议的特点:

  • 传输层协议

TCP 是一种传输层协议,因为它用于将数据从发送方传输到接收方。

  • 可靠

TCP 是一种可靠的协议,因为它遵循流量控制和错误控制机制。它还支持确认机制,用于检查数据的状态和是否完好到达。在确认机制中,接收方向发送方发送肯定或否定确认,以便发送方可以知道数据包是否已收到或需要重发。

  • 保持数据顺序

该协议确保数据以发送时的相同顺序到达预定接收方。它对每个分段进行排序和编号,以便目标端的 TCP 层可以根据它们的顺序重新组装它们。

  • 面向连接

它是一种面向连接的服务,这意味着数据交换仅在连接建立后发生。当数据传输完成后,连接将被终止。

  • 全双工

它是全双工的,意味着数据可以同时在两个方向上传输。

  • 面向流

TCP 是一种面向流的协议,因为它允许发送方以字节流的形式发送数据,也允许接收方以字节流的形式接收数据。TCP 创建了一个环境,其中发送方和接收方通过一个称为虚拟电路的虚构管道连接。这个虚拟电路在互联网上传输字节流。

传输控制协议的需求

在网络模型的分层架构中,整个任务被分解为更小的任务。每个任务都分配给一个特定的层来处理。在 TCP/IP 模型中,有五个层次:应用层传输层网络层数据链路层和物理层。传输层在为应用程序进程提供端到端通信方面扮演着关键角色。它创建了 65,000 个端口,以便可以同时访问多个应用程序。它从上层获取数据,将其分成更小的数据包,然后传输到网络层。

TCP

TCP 的工作原理

在 TCP 中,连接是通过三次握手建立的。客户端发送带有其序列号的段。服务器作为回应,发送带有其自己的序列号以及确认序列号的段,确认序列号比客户端序列号大一。当客户端收到其段的确认后,它会向服务器发送确认。通过这种方式,客户端和服务器之间建立了连接。

TCP

TCP 的优点

  • 它提供面向连接的可靠服务,这意味着它保证数据包的交付。如果数据包在网络中丢失,TCP 将重发丢失的数据包。
  • 它使用滑动窗口协议提供流量控制机制。
  • 它通过使用校验和提供错误检测,并通过使用“返回 N 帧” (Go Back N) 或 ARQ 协议提供错误控制。
  • 它通过使用网络拥塞避免算法来消除拥塞,该算法包括多种方案,如加性增/乘性减 (AIMD)、慢启动和拥塞窗口。

TCP 的缺点

它增加了大量的开销,因为每个段都有自己的 TCP 头部,所以路由器的分片会增加开销。

TCP 头部格式

TCP
  • 源端口 (Source port): 它定义了发送数据的应用程序的端口。因此,该字段包含 16 位的源端口地址。
  • 目的端口 (Destination port): 它定义了接收端应用程序的端口。因此,该字段包含 16 位的目的端口地址。
  • 序列号 (Sequence number): 该字段包含特定会话中数据字节的序列号。
  • 确认号 (Acknowledgment number): 当 ACK 标志位被设置时,该字段包含下一个数据字节的序列号,并作为对先前接收数据的确认。例如,如果接收方收到了序列号为 'x' 的段,它会响应 'x+1' 作为确认号。
  • 头部长度 (HLEN): 它指定了头部的长度,以 4 字节为单位。头部的大小在 20 到 60 字节之间。因此,该字段的值将在 5 到 15 之间。
  • 保留 (Reserved): 这是一个 4 位的字段,为将来使用而保留,默认情况下全设置为零。
  • 标志
    有六个控制位或标志位
    1. URG: 它代表紧急指针。如果设置为 1,则数据将被紧急处理。
    2. ACK: 如果 ACK 设置为 0,则表示数据包不包含确认。
    3. PSH: 如果该字段被设置,它会请求接收设备将数据推送到接收应用程序,而无需缓冲。
    4. RST: 如果设置了该位,则请求重新启动连接。
    5. SYN: 它用于在主机之间建立连接。
    6. FIN: 它用于释放连接,之后将不再进行数据交换。
  • 窗口大小
    这是一个 16 位的字段。它包含接收方可以接受的数据大小。该字段用于发送方和接收方之间的流量控制,并确定接收方为段分配的缓冲区大小。该字段的值由接收方确定。
  • 校验和
    这是一个 16 位的字段。该字段在 UDP 中是可选的,但在 TCP/IP 中是强制性的。
  • 紧急指针 (Urgent pointer)
    如果 URG 标志位设置为 1,这是一个指向紧急数据字节的指针。它定义了一个值,该值将与序列号相加,以获得最后一个紧急字节的序列号。
  • 选项
    它提供额外的选项。可选字段以 32 位表示。如果该字段包含的数据少于 32 位,则需要填充以补足剩余的位。

下一个主题计算机网络教程