TCP连接

138 阅读2分钟

TCP连接(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP连接的建立和维护是确保数据正确传输的关键。

建立连接(三次握手)

  • SYN:客户端发送一个带有SYN(同步序列编号,Synchronize Sequence Number)标志的数据包到服务器,请求建立一个连接,这个数据包包含一个初始得序列号,表示客户端希望与服务器建立连接。
  • SYN-ACK:服务器收到请求后,同意建立连接,发送一个带有SYN和ACK(同步-确认,Synchronize-Acknowledgment)标志的TCP段作为响应,确认客户端的序列号,并指定服务器的初始序列号。
  • ACK:客户端收到服务器的SYN-ACK响应后,发送一个带有ACK标志的TCP段作为确认,确认服务器的序列号。
  • 完成这三次握手后,TCP连接就建立成功了,客户端和服务器可以开始数据传输。

示意图

客户端                                               服务器
 |                                                     |
 |            SYN (seq=x)                             |
 |------------------------------------------------->|
 |                                                     |
 |            SYN+ACK (seq=y, ack=x+1)                |
 |<-------------------------------------------------|
 |                                                     |
 |            ACK (seq=x+1, ack=y+1)                 |
 |------------------------------------------------->|
 |                                                     |
 |                   连接建立成功                    |
 |                                                    |

数据传输

  • 在TCP连接建立之后,客户端和服务器就可以开始发送数据。
  • TCP通过序列号对数据包进行排序,确保数据按正确的顺序到达。
  • TCP还提供了数据包的确认机制,如果发送方没有及时收到确认,它会重新发送数据包。
  • TCP通过流量控制和拥塞控制来调整数据的发送速率,确保网络不会因为过多数据而拥塞。

断开连接(四次挥手)

  • FIN:当客户端或服务器想要关闭连接时,它会发送一个带有FIN(结束)标志的TCP段,表示已经没有更多的数据要发送了。
  • ACK:接收方收到FIN后,发送一个ACK确认,表示理解了对方想要关闭连接的请求。
  • FIN:然后接收方等待所有的数据传输完成,发送一个带有FIN标志的TCP段,请求关闭它的一侧连接。
  • ACK:发送方收到这个FIN后,发送一个ACK确认,然后双方的连接就完全关闭了。 完成这四次挥手后,TCP连接就完全关闭了。