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

相关推荐
TechWayfarer39 分钟前
Cloudflare 9·15新政倒计时:用IP风险画像识别AI爬虫,防止误伤Googlebot
网络·人工智能·爬虫·python·tcp/ip·网络安全
IT_陈寒2 小时前
React的状态更新坑得我差点加班到天亮
前端·人工智能·后端
做运维的阿瑞3 小时前
Shell 脚本经典十三问:引号、变量、子 Shell 与重定向一次讲清问:引号、变量、子 Shell 与重定向一次讲清
linux·tcp/ip
码事漫谈3 小时前
一天搭出 80% 的 Agent,然后卡在 95% 到死
后端
leonkay3 小时前
C# 锁机制——【2】深入原理
开发语言·后端·spring·c#·个人开发
江湖十年3 小时前
在 Go 中使用 dyno 包处理动态对象
后端·面试·go
八角丶3 小时前
Node 网络编程 —— TLS 模块
javascript·后端·node.js
山岚的运维笔记3 小时前
mysql 专业笔记 -- 第 8 章:使用变量
运维·数据库·笔记·后端·学习·mysql·dba
2301_815091015 小时前
TCP 并发服务器模型:4 种 IO 模型完整梳理
服务器·网络·tcp/ip
平头哥AI5 小时前
Day 01 | go run 跑通第一个 Go 程序,go build 留下一个能拷走的 exe
开发语言·后端·golang