TCP为什么是三次握手

TCP:Transmission Controll Protocol:传输控制协议面向连接、可靠的、基于字节流的传输层协议

​        面向连接:客户端和服务端进行连接的协议

​        可靠性:保证信息能够从发送端到达接收端;这是由TCP每次都记录消息发送状态、主动控制发送失败的消息重新发送来完成的

TCP的三次握手:

TCP为什么是三次握手_第1张图片TCP为什么是三次握手_第2张图片TCP为什么是三次握手_第3张图片

​        最开始时客户端和服务端都处于 CLOSED 状态,然后服务端先主动监听某个端口,此时服务器端就变成了 LISTEN(监听)状态;

​        然后客户端主动发起连接,发送 SYN(同步序列编号),此时客户端就变成了 SYN-SENT 状态;

​        服务端接收到信息之后返回 SYN 和 ACK 至客户端,此时服务器端就变成了 SYN-REVD 状态;

​        客户端接收到消息之后,再发送 ACK 至服务器端,此时客户端就变成了 ESTABLISHED(已确认)状态,服务端收到 ACK 之后,也变成了 ESTABLISHED 状态,此时连接工作就执行完了

为什么要三次握手:

​        防止重复连接:出现网络问题时,client发送了SYN(seq=90),但是网络拥堵下被阻塞了,然后client又发了一个SYN(seq=100),server首先会接收到旧的SYN,并返回ack = seq + 1 = 90 + 1 ,客户端就会终止这次连接;直到server返回SYN = 100 + 1才返回ack

若是两次握手,则无法阻止历史连接

​        同步双方的初始序列号:client发送一个序列号,server会返回一个ack和一个序列化,client在返回一个ack,保证初始序列号的同步;序列号能够判断哪些数据已经接收

你可能感兴趣的:(tcp/ip,服务器,网络)