返回

TCP 学习笔记(三):打造可靠传输的秘密武器

后端

从理论到实践:构建可靠传输的基础

提起 TCP,我们总能听到一个词:可靠传输。什么是可靠传输?它意味着数据在发送和接收过程中不会丢失、不会重复,并且按照发送的顺序到达。

在 TCP/IP 协议栈中,TCP 位于传输层。在这一层,TCP 为应用层提供可靠的数据传输服务。为了实现可靠传输,TCP 采用了多种机制,包括滑动窗口、拥塞控制、流量控制、校验和、超时重传等。

滑动窗口:合理控制数据流

滑动窗口是一种流量控制机制,用于控制发送端和接收端之间的数据流。它允许发送端在未收到接收端确认的情况下发送多个数据包,从而提高了网络的吞吐量。同时,滑动窗口还限制了发送端发送的数据包数量,避免网络拥塞。

拥塞控制:避免网络堵塞

拥塞控制是防止网络堵塞的一种机制。当网络中数据包过多时,可能会导致网络拥塞,从而降低网络性能。为了防止网络拥塞,TCP 使用了多种拥塞控制算法,如慢启动、拥塞避免、快速重传、快速恢复等。这些算法可以动态调整发送端的发送速率,从而避免网络拥塞的发生。

流量控制:保持数据流的平稳

流量控制是一种端到端机制,用于控制发送端和接收端之间的数据流。它通过接收端向发送端发送窗口通告来实现。窗口通告告诉发送端接收端可以接收的最大数据量。发送端根据窗口通告来调整自己的发送速率,从而避免接收端的数据缓冲区溢出。

校验和:确保数据传输的准确性

校验和是一种差错检测机制,用于确保数据在传输过程中不被损坏。在发送数据包时,发送端会计算数据包的校验和并将其添加到数据包中。接收端收到数据包后,会重新计算校验和并将其与数据包中的校验和进行比较。如果两个校验和不一致,则说明数据包在传输过程中被损坏,接收端会丢弃该数据包。

超时重传:及时补救数据丢失

超时重传是一种重传机制,用于解决数据包丢失的问题。当发送端在一定时间内没有收到接收端的确认时,它会认为数据包丢失,并重新发送该数据包。超时重传可以确保数据包最终能够被接收端收到。

三次握手和四次挥手:可靠连接的建立与终止

TCP 采用三次握手来建立可靠的连接,三次握手包括:

  1. SYN(同步): 客户端向服务器发送一个 SYN 分组,其中包含客户端的初始序号。
  2. SYN-ACK(同步确认): 服务器向客户端发送一个 SYN-ACK 分组,其中包含服务器的初始序号和对客户端 SYN 分组的确认。
  3. ACK(确认): 客户端向服务器发送一个 ACK 分组,其中包含对服务器 SYN-ACK 分组的确认。

TCP 采用四次挥手来终止可靠的连接,四次挥手包括:

  1. FIN(结束): 客户端向服务器发送一个 FIN 分组,表示客户端准备关闭连接。
  2. ACK(确认): 服务器向客户端发送一个 ACK 分组,确认收到客户端的 FIN 分组。
  3. FIN(结束): 服务器向客户端发送一个 FIN 分组,表示服务器准备关闭连接。
  4. ACK(确认): 客户端向服务器发送一个 ACK 分组,确认收到服务器的 FIN 分组。

结语

TCP 协议通过滑动窗口、拥塞控制、流量控制、校验和、超时重传、三次握手和四次挥手等机制,确保了数据的可靠传输。这些机制共同作用,为我们提供了稳定、高效的数据传输服务。