tcp是可靠的传输协议。为什么这么说?
首先我们得了解一下他的报文格式。
- 源端口号和目的端口号,数据根据这两个端口号决定发给哪个应用。
2.序号,只是让包有序一点而已。
3.确认序列呢。顾名思义,就是确认对方有没有收到。如果对方没收到,要重新发送,直到送达。解决丢包问题的。
4.还有一些状态位。SYN就是发起一个连接的,ack就是回复,RST是重新连接,FIN是结束连接。这些带有状态位的包的发送,会引起双方的状态变更。
5.窗口大小,就是缓存大小。标识自己的处理能力。不要发的太快,吃不完;也别发的太慢,不够吃。TCP要做流量控制的嘛。
6.当然,除了流量控制,TCP也要做拥塞控制,他的拥塞控制也只能控制自己发送的速度。
okok。前面铺垫了那么多,接下来终于来到了我们今天的重点了。
TCP三次握手
在HTTP传输数据之前,通常要进行TCP的三次握手。
- 一开始,客户端和服务端都处于close状态。服务端打开某个端口的监听器,进入LISTEN状态。
- 客户端主动发送SYN,之后处于SYN_SENT状态
- 服务端收到SYN后,返回SYN,并且ACK客户端的SYN,之后处于SYN_RCVD状态
- 客户端收到SYN和ACK后,发送对ACK的SYN,之后处于established状态。因为它一发一送成功了。
- 服务端SYN的ACK后,处于established状态。因为它一发一送也成功了。
总之,TCP三次握手的目的是保证双方都有发送和接受的能力。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南