前端面试网络

2次阅读

共计 616 个字符,预计需要花费 2 分钟才能阅读完成。

2.TCP 三次握手

2.1 为什么要进行三次握手

  1. 在第一次通信过程中,A 向 B 发送信息之后,B 收到信息后可以确认自己的收信能力和 A 的发信能力没有问题。
  2. 在第二次通信中,B 向 A 发送信息之后,A 可以确认自己的发信能力和 B 的收信能力没有问题,但是 B 不知道自己的发信能力到底如何,所以就需要第三次通信。
  3. 在第三次通信中,A 向 B 发送信息之后,B 就可以确认自己的发信能力没有问题。

2.2 第一次握手

client 发送一个 SYN(J)包给 server,然后等待 server 的 ACK 回复,进入 SYN-SENT 状态(syn 已发送状态)。p.s: SYN 为 synchronize 的缩写,理解为序列号,其实就是一个随机数,ACK 为 acknowledgment 的缩写,理解为确认号。

2.3 第二次握手

server 接收到 SYN(seq=J)包后就返回一个 ACK(J+1),随机数 +1,包以及一个自己的 SYN(K) 包,然后等待 client 的 ACK 回复,server 进入 SYN-RECIVED 状态(syn 已接收状态)。

2.4 第三次握手

client 接收到 server 发回的 ACK(J+1)包后,进入 ESTABLISHED 状态 (建立连接状态)。然后根据 server 发来的 SYN(K) 包,返回给等待中的 server 一个 ACK(K+1)包。等待中的 server 收到 ACK 回复,也把自己的状态设置为 ESTABLISHED。到此 TCP 三次握手完成,client 与 server 可以正常进行通信了。

正文完
 0