TCP介绍和TCP三次握手与四次挥手

TCP介绍和TCP三次握手与四次挥手

介绍

TCP (Transmission Control Protocol) 是一种面向连接的协议,它提供了可靠的、有序的、基于字节流的传输。TCP 协议在网络层次结构中处于传输层,它可以在不可靠的 IP 网络上提供可靠的数据传输。

TCP 协议的特点包括:

  1. 面向连接:在传输数据前,需要先建立连接,数据传输完成后再释放连接。

  2. 可靠性:TCP 协议提供可靠的数据传输,通过校验和、确认和重传机制来保证数据的完整性和准确性。

  3. 有序性:TCP 协议可以保证数据按照发送的顺序到达接收端,不会出现乱序的情况。

  4. 流量控制:TCP 协议通过滑动窗口机制来实现流量控制,避免发送方发送过多的数据导致接收方无法处理。

  5. 拥塞控制:TCP 协议通过拥塞窗口控制机制来避免网络拥塞,确保网络资源的合理利用。

  6. 面向字节流:TCP 协议把应用层传下来的数据看成是一连串无结构的字节流,而不是消息或者数据块。

TCP 协议广泛应用于互联网中,如 HTTP、FTP、SMTP 等应用协议都是基于 TCP 协议实现的。

TCP连接介绍

tcp是双通道的通信模式,因此tcp的连接(逻辑连接)其实是两条物理连接,即客户端-->服务端服务端--->客户端的连接。所以才要通过三次握手与四次挥手来建立或者关闭连接。

三次握手与四次挥手

tcp是双通道的通信模式,因此连接和断开的过程中基于一问一答的方式来完成的,具体流程如下:

连接建立过程(三次握手)

  1. 客户端向服务器发送一个 SYN 报文,进入 SYN-SENT 状态。
  2. 服务器收到 SYN 报文,向客户端回复一个 SYN-ACK 报文,确认收到,并同时自己也发送一个 SYN 报文,进入 SYN-RCVD 状态。
  3. 客户端收到 SYN-ACK 报文,向服务器发送一个 ACK 报文,确认收到,并进入 ESTABLISHED 状态,服务器也进入 ESTABLISHED 状态。

流程图

file

参考

连接断开过程(四次挥手)

  1. 客户端向服务器发送一个 FIN 报文,请求断开连接,进入 FIN-WAIT-1 状态。
  2. 服务器收到 FIN 报文,向客户端回复一个 ACK 报文,确认收到,进入 CLOSE-WAIT 状态。
  3. 服务器向客户端发送一个 FIN 报文,请求断开连接,进入 LAST-ACK 状态。
  4. 客户端收到 FIN 报文,向服务器回复一个 ACK 报文,确认收到,进入 TIME-WAIT 状态,等待 2MSL 后进入 CLOSED 状态,服务器收到 ACK 报文后也进入 CLOSED 状态。

流程图

file

参考

总结

在整个连接的过程中,因为 TCP 通信是双通道的,所以一个 TCP 逻辑连接实际上是两条成对的客户端和服务器端的物理连接。无论是连接还是断开,都需要把这两个连接都处理完毕才能完成。因此,这两个过程会衍生出很多状态,这些状态在连接建立时有客户端和服务器端的区分,在断开连接时则没有特别区别,只有主动断开和被动断开的差别。