前端面试网络

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可以正常进行通信了。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理