habc0807 / fe-interview

BAT、TMD等各大厂中高级、资深前端面试题整理
36 stars 4 forks source link

说说TCP连接的三次握手和四次挥手? #41

Open habc0807 opened 4 years ago

habc0807 commented 4 years ago

TCP连接的安全性是建立在,三次握手建立连接、四次挥手断开连接。 先说三次握手,由客户端主动建立连接,先发送SYN包到服务器端,这是第一次握手;服务器端接收到SYN包后,发送SYN+ANK到客户端,这是第二次握手;客户端接收到SYN和ANK包后,将ANK包发送到服务器端,服务器端接收到ANK,这是第三次握手,TCP连接建立。

再来说说四次挥手,如果是由客户端发起的断开连接,客户端下发送FIN包到服务器端,这是第一次挥手;服务器端接收到FIN包之后,将FIN和ACK包发送到客户端,这是第二次挥手;服务器端为了确认客户端接收到了ACK包,又发送了FIN包到客户端,这是第三次挥手;客户端将FIN和ACK包一起发送给服务器端。服务器端的状态改为closed。连接断开。TCP是基于双工通信的,所以连接的断开,需要双方的确认再进行断开,以上就是TCP的三次握手和四次挥手。

那为什么需要三次握手,四次挥手呢? 3次握手的作用就是双方都能明确自己和对方的收、发能力是正常的,三次连接是保证可靠性的最小握手次数。 4次挥手呐,TCP的全双工通信断开连接,需要双方的都确认断开。

全双工指可以同时进行信号的双向传输,对数据的发送和接收是分流的,分别都不同的传输。