㈠ 重新认识HTTP三次握手和四次挥手
HTTP的三次握手和四次挥手机制是TCP连接建立和关闭的关键过程。
三次握手: 目的:确保客户端和服务器之间能够可靠地建立连接。 过程: 第一次握手:客户端发送一个带有SYN标志的数据包给服务器,请求建立连接。 第二次握手:服务器收到SYN后,发送一个带有SYN和ACK标志的数据包作为响应,表示同意建立连接。 第三次握手:客户端收到服务器的SYNACK后,发送一个带有ACK标志的数据包作为确认,至此连接建立成功。 重要性:通过三次握手,双方能够确认对方的接收和发送能力,从而确保连接的可靠性。如果服务器未收到客户端的ACK,可能会认为连接未建立成功,此时可能面临SYN攻击的风险,需要采取相应的防御措施。
四次挥手: 目的:确保客户端和服务器之间能够正确地断开连接。 过程: 第一次挥手:主动关闭的一方发送一个带有FIN标志的数据包给对方,表示希望断开连接。 第二次挥手:对方收到FIN后,发送一个带有ACK标志的数据包作为响应,表示已接收到断开连接的请求。 第三次挥手:在一段时间内,如果对方没有数据需要发送,则发送一个带有FIN标志的数据包给对方,表示同意断开连接。 第四次挥手:主动关闭的一方收到对方的FIN后,发送一个带有ACK标志的数据包作为确认,至此连接完全断开。 重要性:由于TCP是全双工通信协议,每个方向都需要独立关闭。四次挥手确保了双方都能正确地关闭连接,避免未确认的数据包混淆或因网络问题导致的连接错误报告。TIME_WAIT状态的存在是为了等待对方可能丢失的ACK响应,并防止新连接与旧连接的端口号冲突,从而确保数据的正确传递。