什么是传输控制协议(TCP)?
传输控制协议(TCP)是一种通信协议,在网络上的设备、服务和应用程序之间建立可靠的连接。
什么是传输控制协议(TCP)?
传输控制协议(TCP)是一种网络通信协议,侧重于设备、服务和应用程序之间的连接阶段。TCP 在数据发送者和数据接收者之间建立连接,并将数据转换为数据包序列,从而确保接收者能够验证序列。TCP 是 TCP/IP 栈的一部分,互联网协议(IP)通过网络路由数据。TCP 是互联网和云端日常联网中必不可少的协议。
TCP 是如何运作的?
传输控制协议(TCP)是一种在互联网协议套件的传输层中运行的数据传输方法。TCP 由互联网工程任务组维护,被许多应用程序广泛使用,例如电子邮件服务、点对点数据流、文件传输和物联网。这些应用程序在 TCP 之上使用高级协议,例如安全超文本传输协议(HTTPS)、文件传输协议(FTP)以及安全套接字层和传输层安全性(SSL/TLS)。

以下是 TCP 的主要组成部分。
三向握手

在 TCP 设置中,服务器和客户端可以发送和接收数据。服务器主动侦听客户端发起的传入连接。以下是客户端或发送者连接到 TCP 服务器的方式。
- 发送者向接收者发送一个 SYN 数据包。
- 接收者向发送者发回一个 SYN-ACK 数据包。
- 发送者发送一个 ACK 数据包以完成连接。
建立连接后,两台设备都可以通过网络(包括互联网或云网络)交换数据。
数据传输
TCP 将原始消息分成多个较小的段,为每个段分配序列号,然后通过网络进行传输。当发送者传输数据时,会开始倒数计时器。在传输过程中,某些 TCP 段可能使用不同的路径到达目的地。
当数据包到达目的地时,接收者根据编号的段进行组装。然后,接收者向发送者发送一个 ACK 数据包,表明它已成功按顺序收到消息。如果发送者在传输计时器到期后未能收到 ACK,则会重新传输。
TCP 使用多种功能来减少数据包丢失、网络拥塞和数据损坏。
流量控制
交换数据时,接收者通过 TCP 标头提供其在窗口大小中可以接受的字节数。TCP 标头是一个特殊字段,其中包含有关如何处理 TCP 数据包的说明。这样,发送者可以调整后续传输的消息大小,帮助防止接收者不堪重负。
拥塞控制
TCP 通过跟踪 ACK 响应、数据包丢失和传输超时来检测网络拥塞。如果接收者在特定持续时间内没有响应,发送者会假定网络拥塞并限制其发送的数据量。然后,监控网络状况并相应地增加发送的数据量。
错误检测
TCP 使用校验和来检测数据传输期间的数据包损坏。校验和是根据发送者传输的数据计算出的数字。在接收传入数据时,接收者计算校验和并将其与接收到的数据包中的校验和进行比较。如果校验和不匹配,接收者会丢弃数据包。然后,发送者重新传输相同的数据包。
连接结束
发送者和接收者都可以关闭 TCP 连接。我们介绍一下发送者发起的连接终止序列。
- 发送者向接收者发送一个 FIN 数据包。
- 接收者先发送一个 ACK,然后发送一个 FIN 数据包。
- 发送者发送一个 ACK 数据包以关闭连接。
TCP 与 UDP 之间有什么区别?
传输控制协议(TCP)和用户数据报协议(UDP)都是允许应用程序交换数据的传输层协议。UDP 是一种无连接协议,不支持有序的数据传输。而 TCP 是一种面向连接的协议,通过有序排列的数据包提供可靠的数据传输。UDP 速度更快,但不能确认交付或可靠的网络连接。而 TCP 数据包需要更多时间才能传输,而且更准确。
什么是 TCP 端口?
TCP 端口与 IP 地址结合使用来路由互联网流量。TCP 端口是一种标识符,网络设备使用该标识符将 TCP 流量传送到正确的应用程序。TCP 端口的范围从 0 到 65535。
每个端口号对应一个特定的应用程序或服务。TCP 数据包包括源端口和目标端口。处理 TCP 数据包时,设备会检查目标端口,进而确定哪个应用程序应接收数据。
TCP 最佳实践有哪些?
TCP 实施通常需要调整以平衡可靠性、吞吐量和延迟。以下是 TCP 实施中的一些最佳实践。
超时配置
设置 TCP 重传超时时,考虑网络延迟和往返时间。有时,流量峰值可能会导致 TCP 响应延迟。根据不断变化的流量状况(例如重传尝试、TCP 延迟和资源用量)调整超时时间。
缓冲区大小
缓冲区是设备可用于发送和接收 TCP 数据包的临时存储器。传输数据时,设备从缓冲区读取。如果发送者未能及时收到 ACK 并移除已发送的数据,则缓冲区可能会变满。同样,如果应用程序检索存储的信息不够快,则接收缓冲区可能会变满。分配足够的缓冲区大小,帮助防止传输瓶颈。
连接池
即使不使用 TCP 连接,连接池也能保持 TCP 连接处于打开状态。应用程序可以重用 TCP 连接,而不是创建新连接。对于那些在创建和关闭连接时,对握手造成的延迟容忍度较低的应用程序,这很有用。
选择性确认
选择性确认是一种帮助设备更有效地处理丢失数据包的方法。默认情况下,在接收者不发送 ACK 时,发送者会重新传输假定丢失的数据包。
在某些情况下,发送者可能会等待整个往返行程,然后才能设法识别特定的丢失数据包。通过选择性确认,接收者通过在 TCP 标头上添加一个选项字段,将之前收到的数据包通知发送者。这样,发送者就可以识别和重新传输丢失的数据包,而不是整个消息。
AWS 如何支持您的 TCP 需求?
许多 AWS 服务都支持 TCP 连接,或者可以帮助管理联网云环境中的 TCP 连接。以下是一些可以帮助进行 TCP 管理的服务:
- Amazon CloudWatch 可以监控跨云资源的 TCP 指标,例如当前 TCP 连接的数量、流量计数和 TCP 连接中的错误。
- 弹性负载均衡可以在一个或多个可用区中均衡多个目标和虚拟设备之间的传入应用程序 TCP 流量。
- AWS PrivateLink 可在虚拟私有云(VPC)、受支持的服务和资源以及您的本地网络之间提供专用连接,不会将您的流量公开暴露到公共互联网。AWS PrivateLink 支持 TCP 连接。
- 使用 Amazon VPC Lattice 的 Amazon Virtual Private Cloud(VPC)允许您简化并自动化服务和资源连接。使用 VPC Lattice 发现并安全连接各个 VPC 和账户中的服务和资源,包括与 TCP 的连接。
立即创建免费账户,开始在 AWS 上使用 TCP 联网功能。
Browse all cloud computing concepts
Browse all cloud computing concepts content here:
Did you find what you were looking for today?
Let us know so we can improve the quality of the content on our pages