TCP的三次握手

  1. 首先服务器端处理LISTEN(监听)状态,等待客户端的连接请求。
  2. 客户端向服务器端发送连接请求报文,SYN=1,ACK=0,选择一个初始的序号x。
  3. 服务器端收到连接请求的报文,如果同意建立连接,则向客户端发送连接确认报文,SYN=1,ACK=1,确认号为x+1,同时也选择一个初始的序号y。
  4. 客户端收到B的连接确认报文后,还要向服务器端发出确认,确认号为y+1,序号为x+1.
  5. 服务器端收到客户端的确认后,连接建立。

三次握手的原因:为了防止失效的连接请求到达服务器,使服务器错误打开连接,浪费服务器资源。

解释:客户端发送的连接请求因为某种原因(网络拥堵)在网络中滞留,那么就会隔很长一段时间才能收到服务器端发回的连接确认。客户端等待一个超时重传时间之后,就会重新请求连接。但是这个滞留的连接请求最后还是会到达服务器,如果不进行三次握 手,那么服务器就会打开两个连接。如果有第三次握手,客户端会忽略服务器之后发送的对滞留连接请求的连接确 认,不进行第三次握手,因此就不会再次打开连接。

原文地址:https://www.cnblogs.com/wliamchen/p/13197581.html