计算机网络——TCP三次握手和四次挥手

一、前言

TCP的三次握手和四次挥手是面试被高频问到的一个知识点。其中有较多的细节问题,本篇文章全部会详细讲解!

TCP使用三次握手和四次挥手来建立和终止连接。为什么建立和终止连接还需要这么麻烦呢?TCP设置三次握手和四次挥手是为了确保可靠的连接建立和终止,在网络通信中保护数据的完整性和可靠性。

二、三个标记位

在学习TCP的三次握手和四次挥手之前,我们先来了解一下三个标记位。

  1. SYN(Synchronize):用于建立连接的初始握手。发送方发送一个SYN报文段给接收方,请求建立连接

  2. ACK(Acknowledgement)用于确认数据的传输。当成功接收到数据后,接收方发送一个带有ACK标记的报文段回复发送方,确认已经收到了数据

  3. FIN(Finish)用于关闭连接。当发送方发送完所有数据后,会发送一个带有FIN标记的报文段,请求关闭连接。接收方在收到FIN报文段后,发送一个带有ACK标记的报文段进行确认,并使用一个定时器在一段时间后关闭连接。

这三个表记为会在TCP的三次握手和四次挥手频繁被用到,我们这里先了解一下其概念和用户,后续会结合实际的三次握手和四次挥手进行再次补充讲解。

三、过程详解

3.1 三次握手

我们在编写网络代码时,所用到的 connect 函数,就是在建立连接。而这个连接是怎么被建立起来的呢?具体可看下图:

计算机网络——TCP三次握手和四次挥手_第1张图片

  1. 第一次握手,是客户端向服务器发送了一个SYN请求也就是客户端在向服务器请求连接。此时客户端处于SYN_SENT状态
  2. 第二次握手,是服务器向客户端发送了一个ACK+SYN的回应表明服务器收到了客户端的请求,并且同意了客户端的请求建立连接。此时服务器处于SYN_RCVD状态
  3. 第三次握手,也是最后一次握手,是客户端回应服务器一个ACK报文表明客户端收到服务器的同意建立连接,并告诉服务器我收到了你的确认。同时也会根据此时客户端处于ESTABLISHED状态

你可能感兴趣的:(linux,计算机网络,计算机网络,tcp/ip,网络)