浅析TCP三次握手四次挥手

本文解析了TCP三次握手建立连接的过程及四次挥手断开连接的机制。三次握手包括客户端发起请求、服务端响应并确认,最后客户端确认连接。四次挥手涉及主动关闭方向另一方发送断开请求,随后经历确认、响应断开及最终确认四个步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

浅析TCP三次握手四次挥手

TCP(Transmission Control Protocal)传输控制协议,存在于TCP/IP 的第二层传输层当中,TCP是一个可靠的,面向连接的,全双工的数据传输服务。

三次握手

TCP在进行连接的时候会进行三次握手来确认建立连接是否成功。

img

①首先客户端向服务端发送一个SYN,同时客户端还会附带一个计时器,当服务器在规定时间内没有返回ACK确认时,就需要重新发送这个数据包,这正体现了TCP的可靠性。此时客户端处于SYN_SENT状态

②当服务端收到SYN标志时,会给客户端返回一个自己的SYN标志,同时,返回一个ACK确认标志,表示收到了客户端传来的SYN,此时服务器处于SYN_RECV状态。

③客户端收到服务端发来的SYN和ACK时,会发送一个ACK到服务器,以表示收到了服务器发来的SYN和ACK,此时的客户端处于ESTABLISHAED状态,待服务器收到ack后,变为ESTABLISHED状态,连接建立。

很简单吧?下面简单的解释一下SYN标志和ACK标志,我们需要对它们有些了解

SYN(同步标志)
提示连接的服务端检查序列的编号

FIN(结束标志)
用于结束一个TCP会话,但端口仍然处于开放状态,以接受后面的数据包

用知乎上某答主的话通俗的讲,三次握手就是:
第一次握手:你瞅啥
第二次握手:瞅你咋地
第三次握手:咱俩聊聊吧
TCP连接建立

四次挥手

下面再来看看TCP的四次挥手,在TCP连接将要断开的时候,会进行四次挥手,在四次挥手完毕后断开TCP连接。

img

①主动断开连接的一方发送一个FIN标志到被动关闭的一方,此时主动方的状态为FIN_WAIT_1

②被动方收到主动方发来的SYN标志时,马上发送一个ACK标志到主动方,以表示确认收到,此时的被动方处于CLOSE_WAIT状态

③随后被动方发送一个FIN标志到主动方,被动方状态变为LAST_ACK状态

④主动方收到后,发送一个ACK标志到被动方,以表示收到,此时的主动方处于TIME_WAIT状态,此时,连接会在2MSL之后关闭

需要注意的是2MSL是2倍的最大报文生存时间,为什么需要等待两倍的最大报文生存时间才关闭连接呢?

当TCP的一端发起主动关闭,在发出最后一个ACK包后,即第3次握手完成后发送了第四次握手的ACK包后就进入了TIME_WAIT状态,必须在此状态上停留两倍的MSL时间,等待2MSL时间主要目的是怕最后一个ACK包对方没收到,那么对方在超时后将重发第三次握手的FIN包,主动关闭端接到重发的FIN包后可以再发一个ACK应答包。在TIME_WAIT状态时两端的端口不能使用,要等到2MSL时间结束才可继续使用。当连接处于2MSL等待阶段时任何迟到的报文段都将被丢弃。不过在实际应用中可以通过设置SO_REUSEADDR选项达到不必等待2MSL时间结束再使用此端口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值