TCP 的三次挥手, 四次断开初级理解

本文详细阐述了TCP协议中的三次握手过程,用于建立连接并同步序列号,以及四次挥手机制,解释了为何需要在断开连接时经历多个步骤确保数据完整性和关闭的有序性。

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

TCP: 传输控制协议 --- 面向连接的可靠传输协议

面向连接 --- 在第一次传输数据前,通过三次握手建立段到端虚链路

1. 三次握手
面向连接时的三次握手其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。进行三次握手的主要作用是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性传送做准备。实质上其实就是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号,交换TCP窗口大小信息。

第一次握手:客户端给服务端发送一个报文服务端收到了;

第二次握手:服务端发包客户端收到了;

第三次握手:客户端发包服务端收到了

2. 四次断开

终止一个连接要经过四次挥手,这由TCP的半关闭造成的。所谓的半关闭,其实就是TCP提供了连接的一端在结束它的发送后还能接收来自另一端数据的能力。

为什么需要四次断开?

因为当服务端收到客户端的SYN连接请求报文后,可以直接发送SYN+ACK报文。这其中的ACK报文是用来应答的,而SYN报文是用来同步的。但是关闭连接时,当服务端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉客户端,“你发的FIN报文我收到了”。只有等到我服务端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。说的通俗一点,举个例子: 两个人打电话阿珍和阿强打电话聊天,通话差不多要结束时,阿强说,“我没啥要说的了”。阿珍回答,“我知道了”。但是阿珍可能还有要说的话,阿强不能要求阿珍跟着她自己的节奏结束通话,于是阿珍可能又叽叽歪歪说了一通,最后阿珍说,“我说完了”,阿强回答,“我知道了”,这样通话才算结束。故需要四次断开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值