MST

星途 面试题库

面试题:网络编程之TCP连接建立三次握手过程简述

请详细描述TCP连接建立过程中三次握手的每一步骤,包括客户端和服务器端各自的状态变化以及传输的信息。
36.9万 热度难度
后端开发网络编程

知识考点

AI 面试

面试题答案

一键面试
  1. 第一次握手
    • 客户端:客户端处于CLOSED状态,它主动向服务器发送一个SYN(同步序列号)报文段,此时客户端进入SYN_SENT状态。这个SYN报文段包含客户端随机生成的初始序列号(seq=x),SYN标志位被置为1。
    • 服务器端:服务器处于LISTEN状态,等待客户端的连接请求。当服务器接收到客户端的SYN报文段后,进入SYN_RCVD状态。
  2. 第二次握手
    • 服务器端:服务器收到客户端的SYN报文段后,向客户端发送一个SYN + ACK报文段。其中SYN标志位为1,表示这也是一个同步报文,同时ACK标志位也为1,表示确认收到了客户端的SYN。该报文段的序列号为服务器随机生成的初始序列号(seq = y),确认号为客户端的序列号加1(ack = x + 1)。发送完这个报文段后,服务器进入ESTABLISHED状态。
    • 客户端:客户端接收到服务器的SYN + ACK报文段后,从SYN_SENT状态进入ESTABLISHED状态。
  3. 第三次握手
    • 客户端:客户端收到服务器的SYN + ACK报文段后,向服务器发送一个ACK确认报文段。ACK标志位为1,确认号为服务器的序列号加1(ack = y + 1),序列号为客户端在第一次握手中的序列号加1(seq = x + 1)。发送完这个ACK报文段后,客户端就已经建立起与服务器的可靠连接,可以开始传输数据。
    • 服务器端:服务器接收到客户端的ACK报文段后,确认连接建立成功,服务器也处于ESTABLISHED状态,双方可以开始进行数据传输。