【计算机网络】三次握手协议与四次握手及相关信息。

三次握手

三次握手指的是在发送数据的准备阶段,服务器与客户端需要进行三次交互。
具体过程:

  • 第一次握手:建立连接时,客户端向服务器发送一个SYN包(握手信号,SYN=1, seq=x),并进入SYN_SENT状态,等待服务器确认。
  • 第二次握手:服务器收到SYN包,必须确认客户端的SYN,同时自己也发送一个SYN包,即SYN+ACK包(接受到消息并相应,SYN=1,ACK=1, ack=x+1 ,seq=y)此时服务器进入SYN_SEND状态。
  • 第三次握手:客户端收到服务器的SYN+ACK包(ACK=1,ack=y+1,seq=x+1),并向服务器发送确认包ACK,此包发送完毕,客户端和服务器进入Established状态。

TCP连接成功完成三次握手。
在上述三次握手协议中,服务器仍旧在维护一个未连接队列,等待其他客户端的连接请求,若能够完成三次握手,则服务器也可以与该客户端进行数据传输。
三次握手

为什么不是两次握手

  • 进行两次握手,服务器端无法知道客户端收到了自己的同步信号,如果丢失,客户端和服务器端的初始***无法达成一致。
  • 客户端发送给服务端的ACK超时不会重传,因为TCP不会为没有数据的ACK超时重传。
  • 服务器没有收到服务端的ACK,会超时重传自己的SYN同步信号,一直到收到客户端的ACK为止。