TCP/IP协议--TCP三次握手建立连接

TCP连接

  • TCP是面向连接的协议,它基于传输连接来传送TCP报文段
  • TCP传输连接的建立和释放是每一次面向连接的通信中必不可少的部分。
  • TCP传输连接有以下三个阶段:
    • 建立连接
    • 数据传输
    • 释放TCP连接
  • TCP的传输连接管理就是使传输连接的建立和释放都能正常的进行。


    image.png

TCP三次握手建立连接

image.png

三次握手过程如上图所示,在开始连接之前,服务器的TCP连接打开,处于监听状态,也叫被动打开,客户端可以主动向服务器端申请TCP连接,也叫主动打开,连接步骤如下:

  1. 客户端向服务器端发送连接请求报文,该报文的SYN设为1,表示是一个连接请求报文,并不携带数据。(一次握手)
  2. 服务器接收到请求报文后发回一个确认报文,SYN为1,ACK也为1,表示是一个连接请求的确认报文,这个时候服务器端处于半连接状态(二次握手)
  3. 客户端收到服务器端的请求确认后,再次向服务器发送一个普通的确认报文,该报文ACK为1,SYN为0,该报文可以携带数据,发送报文后即处于连接已建立状态(三次握手)
  4. 服务器端收到客户端的连接确认报文后,处于连接已建立状态

为什么要三次握手

假设只需要两次握手就可以建立连接,可能会出现如下图的情况:


image.png

图中红色部分是已失效的请求报文,若由于网络原因在服务器关闭连接后再次到达,则会再次处于连接已建立状态,然而此时客户端已经关闭了连接,则对应的服务器进程就会处于空闲状态,导致了资源的浪费。

源自:
https://www.bilibili.com/video/av64605483?p=64

你可能感兴趣的:(TCP/IP协议--TCP三次握手建立连接)