MST

星途 面试题库

面试题:网络编程:TCP三次握手过程中,每一次握手携带的主要信息有哪些,以及这些信息的作用是什么

请详细阐述TCP三次握手过程中,第一次握手(客户端发送SYN包)、第二次握手(服务器端发送SYN + ACK包)、第三次握手(客户端发送ACK包),每个包所携带的主要信息,并且说明这些信息在建立连接过程中起到了怎样的作用。
26.7万 热度难度
后端开发网络编程

知识考点

AI 面试

面试题答案

一键面试

第一次握手(客户端发送SYN包)

  • 主要信息
    • SYN(同步序列号):这是一个标志位,表明此包用于同步连接。同时会携带一个随机生成的初始序列号(Initial Sequence Number,ISN),记为 seq=x
  • 作用
    • 客户端通过发送SYN包,向服务器表明自己想要建立连接的意愿。服务器接收到该包后,就知道客户端打算与它进行通信。随机生成的初始序列号 x 为后续数据传输的序列号计数提供了起始点,用于保证数据传输的有序性和准确性。

第二次握手(服务器端发送SYN + ACK包)

  • 主要信息
    • SYN:同样是同步标志位,携带服务器端随机生成的初始序列号,记为 seq=y
    • ACK:确认标志位,确认号 ack=x+1。表示服务器已经收到客户端的SYN包,并且期望下一次接收到序号为 x+1 的数据。
  • 作用
    • SYN 标志位及序列号 y,告知客户端服务器也准备好建立连接,并给出自己的初始序列号,用于后续数据传输的计数。ACK 及确认号 x+1,是对客户端第一次握手SYN包的确认,让客户端知道服务器已正确接收其连接请求,且为后续数据传输的确认提供基础。

第三次握手(客户端发送ACK包)

  • 主要信息
    • ACK:确认标志位,确认号 ack=y+1
    • 序列号seq=x+1(这里的序列号 x+1 是基于第一次握手中客户端的初始序列号 x 递增的)。
  • 作用
    • ACK 标志位及确认号 y+1,告知服务器客户端已收到服务器的SYN + ACK包,并且确认服务器的初始序列号 y。序列号 x+1 表明客户端开始使用从初始序列号递增后的序号进行数据传输,至此,TCP连接建立完成,双方都确认对方已准备好,可以开始正式的数据传输。