每日一个计算机小知识: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次挥手也正是需要确认双方都没有数据要发送了才能断开连接释放资源。

相关推荐
M158227690554 小时前
工业互联利器!EtherNet/IP 转 ModbusTCP 网关,让跨协议通信零门槛
服务器·网络·tcp/ip
bagadesu5 小时前
使用Docker构建Node.js应用的详细指南
java·后端
勇哥java实战分享8 小时前
第一次用 Ollama 跑视觉模型:Qwen2.5-VL 7B 给了我一个意外惊喜
后端
莫小墨8 小时前
基于TCP/IP和UDP组播的Qt网络直播间项目
网络·qt·tcp/ip·udp
码事漫谈9 小时前
从后端开发者到Agent工程师:一份系统性的学习指南
后端
码事漫谈9 小时前
后端开发如何将创新转化为专利?案例、流程与实操指南
后端
小坏讲微服务10 小时前
SpringCloud零基础学全栈,实战企业级项目完整使用
后端·spring·spring cloud
xxtzaaa10 小时前
游戏被IP限制多开,如何在同一网络下用不同IP多开游戏?
网络·tcp/ip·游戏
humors22111 小时前
服务端开发案例(不定期更新)
java·数据库·后端·mysql·mybatis·excel
Easonmax13 小时前
用 Rust 打造可复现的 ASCII 艺术渲染器:从像素到字符的完整工程实践
开发语言·后端·rust