【面试刷题】——TCP三次握手,以及为什么要三次握手

本文详细解释了TCP三次握手的过程,包括客户端发送SYN,服务器回应SYN-ACK,客户端确认ACK,以确保连接的可靠性、防止资源浪费和连接混淆。
摘要由CSDN通过智能技术生成

TCP(传输控制协议)的三次握手是建立TCP连接的过程,它确保了通信双方的正常启动和参数协商。三次握手的过程如下:

客户端发送请求:

客户端首先向服务器发送一个特殊的TCP报文,称为SYN(同步)报文。这个报文包含一个随机的序列号(Client ISN),并请求建立连接。此时客户端进入"SYN-SENT"状态。

服务器回应:

服务器收到客户端的SYN报文后,如果同意建立连接,就会发送一个带有自己的序列号(Server ISN)的SYN-ACK报文,表示已经收到了客户端的请求,并且也准备好了建立连接。服务器端进入"SYN-RECEIVED"状态。

客户端确认:

客户端收到服务器的SYN-ACK报文后,会发送一个确认报文,其中的确认号(ACK)字段设置为服务器的序列号加1,表示客户端已经收到了服务器的回应。这个报文不包含数据,但可以携带客户端自己的数据。此时,客户端和服务器都进入"ESTABLISHED"状态,连接正式建立。

为什么要进行三次握手呢?这是为了确保通信双方都已准备好并能够正常传输数据。具体原因如下:

防止失效的连接请求导致资源浪费:

如果只进行两次握手,那么在第一次握手后,客户端发送的连接请求可能在网络中滞留,而客户端却认为连接已经建立。这种情况下,服务器将浪费资源等待一个并不存在的连接请求。通过第三次握手,可以确保服务器收到了客户端的连接请求。

防止旧连接的混淆:

在网络中,有可能出现延迟的、过期的、重复的、混乱的报文。通过三次握手,可以确保每个连接都有唯一的初始序列号(ISN),从而避免混淆。

保证双方都能发送和接收数据:

在第三次握手时,客户端发送一个确认报文,这表明客户端不仅能够接收数据,还能够发送数据。这是因为在第一次握手时,客户端只发送了一个SYN报文,还没有正式进入发送数据的状态。

总之,TCP的三次握手确保了双方都能够正确地接收和发送数据,并防止不必要的资源浪费和连接混淆。这是TCP协议的可靠性和稳定性的体现之一。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时光如箫声留念

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值