Skip to content

Latest commit

 

History

History
6 lines (6 loc) · 1.26 KB

为什么需要三次握手,两次不行?.md

File metadata and controls

6 lines (6 loc) · 1.26 KB
  1. 确认双方的接收与发送能力
    • 第一次握手:客户端发送一个SYN包(同步序列编号),告诉服务器它想建立连接,并且客户端能发送数据。
    • 第二次握手:服务器回应一个SYN-ACK包,确认收到了客户端的SYN包,同时告知客户端它也愿意建立连接,并且服务器能接收数据。
    • 第三次握手:客户端再次发送ACK包响应服务器的SYN-ACK包,这次确认后,客户端和服务器都确认双方的发送和接收能力正常。
  2. 防止失效的连接请求突然又传送到了服务器端,造成资源浪费: 如果只有两次握手,那么只要服务器端发送了ACK包确认,就会建立连接。假设这个时候存在一个失效的连接请求延迟到达服务器,服务器处理这个错误的请求并打开连接,等待客户端发送数据,但客户端并没有实际发出这个请求或者已经不需要这个连接了,这就导致了服务器白白浪费资源等待一个不存在的发送方。
  3. 可靠性协议的要求: TCP作为一个可靠性传输协议,不仅要保证数据的完整性,还要保证连接的稳定性。通过三次握手的流程,可以更好地抵御如同步SYN Flood Attack这样的网络攻击。