📑 题目:19. 什么是 TCP 三次握手?
参考解析
三次握手,简单来说,就是:
- 发送方:我要和你建立链接?
- 接收方:你真的要和我建立链接么?
- 发送方:我真的要和你建立链接,成功。
详细来说,步骤如下:

TCP 三次握手的干货
第一次握手:Client 将标志位
SYN=1,随机产生一个值seq=J,并将该数据包发送给 Server 。此时,Client 进入SYN_SENT 状态,等待 Server 确认。第二次握手:Server 收到数据包后由标志位
SYN=1知道Client请求建立连接,Server 将标志位SYN和ACK都置为 1 ,ack=J+1,随机产生一个值seq=K,并将该数据包发送给 Client 以确认连接请求,Server 进入SYN_RCVD状态。此时,Server 进入 SYC_RCVD 状态。第三次握手:Client 收到确认后,检查
ack
是否为
J+1
,
ACK
是否为 1 。
- 如果正确,则将标志位
ACK置为 1 ,ack=K+1,并将该数据包发送给 Server 。此时,Client 进入 ESTABLISHED 状态。 - Server 检查
ack是否为K+1,ACK是否为 1 ,如果正确则连接建立成功。此时 Server 进入 ESTABLISHED 状态,完成三次握手,随后 Client 与 Server 之间可以开始传输数据了。
仔细看来,Client 会发起两次数据包,分别是
SYNC和ACK;Server 会发起一次数据包,包含SYNC和ACK。也就是说,三次握手的过程中,Client 和 Server 互相做了一次SYNC和ACK。
