MST

星途 面试题库

面试题:网络编程之TCP连接管理基础

在Socket编程的TCP连接管理中,简述三次握手和四次挥手的过程,并说明每一步的作用。
14.0万 热度难度
后端开发网络编程

知识考点

AI 面试

面试题答案

一键面试

三次握手过程及作用

  1. 第一次握手:客户端向服务器发送一个 SYN (同步序列号)报文段,其中包含客户端初始序列号( seq=x )。
    • 作用:客户端告诉服务器它想要建立连接,并告知自己的初始序列号,以便后续进行数据传输的序号管理。
  2. 第二次握手:服务器收到客户端的 SYN 报文后,向客户端发送一个 SYN + ACK 报文段。该报文段中, SYN 部分包含服务器的初始序列号( seq=y ), ACK 部分是对客户端 SYN 的确认,确认号为客户端的序列号加1( ack=x+1 )。
    • 作用:服务器向客户端确认收到了连接请求,同时也告知客户端自己的初始序列号,为后续通信做准备。
  3. 第三次握手:客户端收到服务器的 SYN + ACK 报文后,向服务器发送一个 ACK 报文段,确认号为服务器的序列号加1( ack=y+1 ),序列号为客户端第一次发送的序列号加1( seq=x+1 )。
    • 作用:客户端告知服务器它已收到服务器的确认,连接正式建立,可以开始传输数据。

四次挥手过程及作用

  1. 第一次挥手:主动关闭方(通常是客户端)发送一个 FIN (结束标志)报文段,其中序列号为 seq=u ,表示主动关闭方没有数据要发送了,请求关闭连接。
    • 作用:主动关闭方向对方表明自己的数据发送完毕,准备关闭连接。
  2. 第二次挥手:被动关闭方(通常是服务器)收到 FIN 报文后,发送一个 ACK 报文段,确认号为主动关闭方的序列号加1( ack=u+1 ),序列号为被动关闭方当前的序列号 seq=v 。
    • 作用:被动关闭方确认收到主动关闭方的关闭请求,此时连接处于半关闭状态,被动关闭方仍可继续向主动关闭方发送数据。
  3. 第三次挥手:当被动关闭方数据发送完毕后,也会发送一个 FIN 报文段,序列号为 seq=w ( w 通常是 v+之前发送字节数 ),表示被动关闭方也没有数据要发送了,请求关闭连接。
    • 作用:被动关闭方向主动关闭方表明自己的数据也发送完毕,准备彻底关闭连接。
  4. 第四次挥手:主动关闭方收到被动关闭方的 FIN 报文后,发送一个 ACK 报文段,确认号为被动关闭方的序列号加1( ack=w+1 ),序列号为主动关闭方之前发送 FIN 时的序列号加1( seq=u+1 )。然后经过 2MSL (最长报文段寿命)时间后,主动关闭方才真正关闭连接。
    • 作用:主动关闭方确认收到被动关闭方的关闭请求,此时双方都同意关闭连接,经过 2MSL 时间确保所有报文都已传输完毕,连接彻底关闭。