TCP连接
- TCP是面向连接的协议,它基于传输连接来传送TCP报文段
- TCP传输连接的建立和释放是每一次面向连接的通信中必不可少的部分。
- TCP传输连接有以下三个阶段:
- 建立连接
- 数据传输
- 释放TCP连接
-
TCP的传输连接管理就是使传输连接的建立和释放都能正常的进行。
image.png
TCP三次握手建立连接
image.png三次握手过程如上图所示,在开始连接之前,服务器的TCP连接打开,处于监听状态,也叫被动打开,客户端可以主动向服务器端申请TCP连接,也叫主动打开,连接步骤如下:
- 客户端向服务器端发送连接请求报文,该报文的SYN设为1,表示是一个连接请求报文,并不携带数据。(一次握手)
- 服务器接收到请求报文后发回一个确认报文,SYN为1,ACK也为1,表示是一个连接请求的确认报文,这个时候服务器端处于半连接状态(二次握手)
- 客户端收到服务器端的请求确认后,再次向服务器发送一个普通的确认报文,该报文ACK为1,SYN为0,该报文可以携带数据,发送报文后即处于连接已建立状态(三次握手)
- 服务器端收到客户端的连接确认报文后,处于连接已建立状态,
为什么要三次握手
假设只需要两次握手就可以建立连接,可能会出现如下图的情况:
image.png
图中红色部分是已失效的请求报文,若由于网络原因在服务器关闭连接后再次到达,则会再次处于连接已建立状态,然而此时客户端已经关闭了连接,则对应的服务器进程就会处于空闲状态,导致了资源的浪费。
网友评论