Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

TCP-三次握手

  • 客户端

    • 首先发送SYN=1, seq=x的连接请求报文,进入SYN-SENT状态
  • 服务端

    • 收到请求后,发送一个SYN=1,ACK=1,seq=y,ack=x+1的响应报文,确认连接,进入SYN-RCVD状态
  • 客户端

    • 收到确认信号后,发送一个ACK=1,seq=x+1,ack=y+1的确认报文,进入ESTABLISH状态
  • 至此三次握手完成,服务端收到这个报文后,也会进入ESTABLISH状态

  • 【问题】为什么客户端还需要发送第三次的确认报文呢?

    • 一句话:防止之前滞留过久的报文还能建立TCP连接
    • 详细解释:假设报文A发出,滞留,然后报文B再发出,成功连接,传输完数据后关闭,这时候A抵达,如果没有第三次的确认报文,就会让服务端直接进入ESTABLISH状态,浪费资源,第三次其实是对报文时效性的确认,滞留报文由于没有客户端的合法第三次确认,所以无效