TCP的三次握手
扫描二维码
随时随地手机看文章
三次握手是TCP建立连接的基础步骤
第一步是客户端发送SYN,第二步服务器回复SYN-ACK,第三步客户端发送ACK。还要注意三次握手中的序列号交换,这对后续的数据传输至关重要。可能需要提到每个SYN和ACK报文中的序列号和确认号的变化.。TCP的三次握手是建立可靠网络连接的关键过程,其目的是确保通信双方能够同步初始序列号并确认双方的收发能力正常。以下是三次握手的详细步骤和作用:
三次握手流程
第一次握手(SYN):客户端 → 服务器:发送一个 SYN 报文(SYN=1)。
作用:客户端告知服务器自己的初始序列号(seq=x)。表示客户端希望建立连接。
Client: "你好服务器,我的初始序列号是x,我们可以开始通信吗?"
第二次握手(SYN-ACK):服务器 → 客户端:回复 SYN+ACK 报文(SYN=1, ACK=1)。
作用:服务器确认客户端的序列号(ack=x+1)。服务器告知客户端自己的初始序列号(seq=y)。表示服务器同意连接。
Server: "收到你的请求,你的序列号是x+1,我的初始序列号是y,可以通信了。"
第三次握手(ACK)客户端 → 服务器:发送 ACK 报文(ACK=1)。
作用:客户端确认服务器的序列号(ack=y+1)。双方确认连接建立,开始传输数据。
Client: "收到你的确认,我们正式通信吧!"
为什么需要三次握手?
防止历史重复连接(旧SYN干扰),若网络中存在延迟的旧SYN报文(如客户端重连),服务器通过三次握手可以区分新旧请求,避免建立无效连接。同步双方初始序列号,序列号(seq)是TCP可靠传输的核心,用于标识数据顺序和去重。三次握手确保双方初始序列号被明确同步。
验证双向通信能力
第一次握手:验证客户端→服务器的发送能力。
第二次握手:验证服务器→客户端的收发能力。
第三次握手:最终确认客户端→服务器的接收能力。
避免资源浪费
如果只有两次握手,服务器可能因未收到客户端的ACK而一直等待,导致资源被占用(如SYN洪泛攻击)。
SYN:同步序列号(Synchronize)。
ACK:确认(Acknowledgment)。
序列号:初始序列号(ISN)是随机生成的,防止预测攻击。每次握手时,序列号递增(seq=x → ack=x+1)。