面试话题:三次握手,四次挥手的过程。
TCP协议
- TCP 提供连接(Connection),让双方的传输更加稳定、安全。
- TCP 是一个面向连接的协议(Connection -oriented Protocol),说的就是 TCP 协议参与的双方(Host)在收发数据之前会先建立连接。
- 连接需要消耗更多的资源。比如说,在传输数据前,必须先协商建立连接。因此,不是每种场景都应该用连接导向的协议。
TCP协议的基本操作
- SYN操作:一个Host请求向另一个Host发起连接,请求同步
- FINISH操作:一个Host主动请求断开,请求完成
- PUSH操作:一个Host向另一个请求发送数据,数据推送
- ACK操作:接收方收到数据后,给发送方一个Ack响应
三次握手
握手:建立连接、响应
过程:
1、客户端发送消息给服务端(SYN)
2、服务端准备好进行连接,并给客户端的SYN一个响应ACK,同时,会给客户端一个SYN请求(第一次握手)
- 这个过程是同时发生的,合并成一个SYN-ACK响应,作为一条数据传递给客户端 (第二次握手)
3、客户端接收到服务端的信息后,会给服务端发送一个ACK,则建立起连接(第三次握手)
四次挥手
挥手:断开连接、响应
1、客户端请求断开连接,发送一个断开的请求(FIN)(第一次挥手)
2、服务端接收到请求,给客户端一个ACK响应 (第二次挥手)
3、服务端处理完自己内部的一些操作(如资源释放,相关处理)后,向客户端发送一个断开的请求(FIN)(第三次挥手)
- 此处和三次挥手不一致点:因服务端可能发出消息没有得到ACK,或资源未释放,所以需要经过一个等待再确定可以关闭后,在发送FIN给客户端
4、客户端接收到服务端的FIN,客户端处理自己内部事务(如资源释放,相关处理)后,再向服务端发送一个ACK响应(第四次挥手)