面试--三次握手四次挥手

  1. 三次握手:
    • 服务端新建套接字,绑定地址信息后开始监听,进入到listen状态,客户端新建套接字,绑定地址信息你后调用connect,发送临界请求SYN并进入到SYN_SENT状态
    • 服务端一旦监听到客户端的连接请求后,就会将连接请求放到内核的请求队列中,并向客户端发送SYN和确认报文段ACK,进入到SYN_RECD状态
    • 客户端收到服务端的SYN和ACK后,就会向服务端发送确认报文段ACK,并进入到ESTABLISHED状态,开始读写数据,服务端收到客户端的确认报文段ACK后就会进入到ESTABLISHED状态,就可以开始读写数据
  2. 四次挥手:
    • 客户端主动调用close,向服务端发送结束报文段FIN,同时进入到FIN_WAIT1状态,
    • 服务端会收到结束报文段FIN,服务器会返回确认报文段ACK并进入到CLOSE_WAIT状态,此时如果服务端还有数据要发送的话,服务端仍需要接收数据。客户端收到服务端的确认报文段ACK后,就会进入到FIN_WATI2状态,开始等待服务器的结束报文段。
    • 服务器端传输数据完成后,当服务器真正调用close关闭连接时,会向客户端发送结束报文段FIN包,此时服务器进入到LASE_ACK状态,等待最后一个ACK的到来
    • 客户端收到服务器发送过来的结束报文段后,进入到TIME_WAIT,并发送确认报文段ACK;服务器收到了对结束报文段的确认ACK,进入到CLOSED状态,断开连接。而客户端需要等待2msl的时间,才会进入到CLOSED状态。    
posted @ 2021-05-19 14:41  张紫韩  阅读(32)  评论(0编辑  收藏  举报