【网络】TCP为什么采用三次握手?而不是两次,四次

TCP(Transmission Control Protocol)是一种可靠的、面向连接的通信协议,它在建立连接时采用了三次握手的机制。这种设计并非偶然,而是为了确保连接的可靠性、安全性和效率。下面我们详细解释为什么TCP要采用三次握手。主要就是看两次握手会有什么问题

1. 防止历史连接的混淆

在TCP的通信中,客户端和服务器之间可能存在多次尝试建立连接的情况。假设客户端发送了一个连接请求,但由于网络故障或其他原因,服务器未能及时响应,而客户端此时又发起了一个新的连接请求。如果仅采用两次握手,服务器收到后会误以为是同一个连接请求,从而可能建立多个重复的连接,造成资源的浪费和混乱。

什么是历史连接

历史连接指的是在网络通信中曾经建立过但目前已经结束或未完成的连接。这种连接可能由于网络故障、通信延迟、客户端或服务器故障等原因而未能正常完成。历史连接的产生情况有以下几种:

  1. 网络故障导致连接丢失:在进行TCP连接的过程中,如果通信的某个阶段出现网络故障,比如连接请求或连接响应的数据包丢失,那么这个连接可能会留下历史记录,即历史连接。

  2. 客户端或服务器故障:如果客户端或服务器在连接建立的过程中发生故障,可能导致连接未能正常完成,但在另一端仍然存在相关的连接记录,这也会形成历史连接。

  3. 连接超时或关闭:有时候,一个连接在一定时间内未能完成建立或数据传输,可能会被视为超时而关闭。这样的连接也会被记录为历史连接。

  4. 重复的连接请求:客户端可能会多次发送连接请求,但只有一次能够成功建立连接,其他的连接请求可能会被视为历史连接。

  5. 网络拥塞或延迟:在网络拥塞或延迟较高的情况下,连接建立过程可能会受到影响,导致连接未能正常完成,形成历史连接。

2. 确保双方的初始序列号同步

在TCP通信中,每个数据包都包含一个序列号,用于标识数据包的顺序和完整性。在连接建立阶段,双方需要协商初始的序列号,以便后续的数据传输能够正确解析。通过三次握手,客户端和服务器可以互相确认对方的序列号,并达成一致,保证了后续数据传输的正确性和顺序性。

3. 避免不必要的连接建立,防止受到SYN洪泛攻击

在TCP的通信过程中,一次连接建立后,双方会维持一段时间的连接状态,这需要消耗一定的资源。如果客户端发送的连接请求在网络中被丢失或延迟,而服务器未能及时收到,如果采用两次握手,服务器可能会误以为客户端要建立连接,并创建了连接状态。通过三次握手,客户端和服务器都会确认对方的意图后才建立连接,避免了不必要的连接建立,节约了资源。

总结

不使用「两次握手」和「四次握手」的原因:

「两次握手」:无法防止历史连接的建立,会造成双方资源的浪费,也无法可靠的同步双方序列号,且容易收到攻击。

「四次握手」:三次握手就已经理论上最少可靠连接建立,所以不需要使用更多的通信次数。

相关推荐
liebe1*111 分钟前
第七章 防火墙地址转换
运维·服务器·网络
好好学操作系统17 分钟前
autodl 保存 数据 跨区
linux·运维·服务器
KingRumn20 分钟前
Linux同步机制之信号量
linux·服务器·网络
嵌入式学习菌20 分钟前
SPIFFS文件系统
服务器·物联网
旺仔Sec20 分钟前
2026年度河北省职业院校技能竞赛“Web技术”(高职组)赛项竞赛任务
运维·服务器·前端
BullSmall41 分钟前
linux 根据端口查看进程
linux·运维·服务器
herinspace1 小时前
管家婆软件年结存后快马商城操作注意事项
服务器·数据库·windows
嘻哈baby1 小时前
DDNS动态域名解析方案对比与实战配置
网络
Hard but lovely1 小时前
linux:----进程守护化(Daemon)&&会话的原理
linux·运维·服务器
捷米研发三部1 小时前
Profinet转ModbusTCP网关:实现西门子1200PLC与打标卡稳定通讯
网络