每日一个计算机小知识:TCP

每日分享一个有趣的计算机小知识,今日话题:TCP

TCP 是 Transmission Control Protocol 的缩写,中文叫传输控制协议,它是一种可靠的、有序的、面向连接的、基于字节流的数据传输通信协议,可以在两台设备之间提供可靠的数据传输,是网页浏览、文件传输、邮件发送、远程登录等场景的基础。

在发送数据前,TCP需要先建立一条稳定的连接,也就是我们常说的三次握手,数据传输完成后,会触发四次挥手断开连接。客户端向服务端发送数据的具体步骤:

步骤 1:三次握手建立连接

通过三次握手和服务器建立连接。

步骤 2:拆分成数据段

客户端将数据交给 TCP 层后,TCP 会根据最大报文段长度,将数据拆分为成多个数据段。

步骤 3:为每个数据段分配序列号

TCP 会为每个数据段的第一个字节分配序列号,后续字节的序列号依次递增(每字节 + 1)。

步骤 4:发送数据段

TCP 并非一个数据段发送完了再发下一个,而是通过一个叫做滑动窗口的机制批量发送数据,以此来提升传输效率。

步骤 5:接收方验证数据段

服务器收到数据后,需要校验数据段的完整性、记录已接收的数据。

步骤 6:接收方返回确认报文

服务器定期会向客户端发送确认报文,报文里的确认号会告知已接收到的数据。

步骤 7:发送方处理确认信息

客户端收到确认报文后,根据确认号判断所有数据是否被正确接收,如果已丢失的数据会立即重新发送。

步骤 8:接收方重组数据

当所有数据段都全部接收完整后,TCP 会将其重组为原始数据,交给服务器处理,当服务器处理完数据后,会通过当前连接返回给客户端响应数据。

步骤 9:四次挥手断开连接

当数据全部传输完成后,会触发四次挥手断开 TCP 连接。
很多人可能一直不理解为什么是3次握手和4次挥手,1次、2次为什么不行?

要搞明白这个问题,就要先搞明白TCP的作用。TCP是全双工的、可靠的、双向通道协议,双方在连接建立后可同时收发数据,而三次握手的核心目的,正是通过3次握手来互相确认双方的收、发能力都是正常的,而4次挥手也正是需要确认双方都没有数据要发送了才能断开连接释放资源。

相关推荐
Victor35636 分钟前
Netty(7)如何实现基于Netty的TCP客户端和服务器?
后端
Victor35638 分钟前
Netty(8)什么是Netty的ChannelPipeline和ChannelHandler?
后端
@CLoudbays_Martin111 小时前
什么是IP黑洞?
网络·网络协议·tcp/ip
乘风!2 小时前
NSSM启动tomcat部署Java程序
java·服务器·后端·tomcat
代码无疆2 小时前
学点java字节码更易于理解一些特殊的java语法效果
java·后端
星浩AI3 小时前
AI 并不懂文字,它只认向量:一文搞懂 Embedding
后端
程序员博博3 小时前
这才是vibe coding正确的打开方式 - 手把手教你开发一个MCP服务
javascript·人工智能·后端
90后的晨仔3 小时前
阿里云服务器如何给子账号设置指定具体的那一台服务器?
后端
期待のcode3 小时前
springboot热部署
java·spring boot·后端
老蒋新思维3 小时前
创客匠人 2025 万人峰会核心:AI 驱动知识产品变现革新
大数据·人工智能·网络协议·tcp/ip·创始人ip·创客匠人·知识变现