探讨TCP的可靠性以及三次握手的奥秘

🌟 欢迎来到 我的博客! 🌈

💡 探索未知, 分享知识 !💫

本文目录


在互联网的复杂世界中,TCP(传输控制协议)扮演着一个不可或缺的角色,确保我们的数据能够准确无误地在世界各地流动。它是一种面向连接的、可靠的、基于字节流 , 全双工的传输层通信协议。今天,我们将一起探索TCP的可靠性背后的原理,特别是那个让人好奇的问题:为什么是三次握手 ,不是两次、也不是四次?

1. TCP的可靠性机制

TCP的设计目标是提供一种可靠的数据传输服务,在无法预测的网络环境中,这是一项挑战。以下是TCP确保数据可靠性的几种核心机制:

  • 确认应答 :TCP对每个传输的字节赋予一个序号,用于跟踪数据包的顺序。接收方通过发送带有确认序号(ACK)的报文来告知发送方哪些数据已经被成功接收。确认序号是接收方期望接收的下一个字节的序号。这样,即使数据包乱序到达,接收方也能根据序号重新排序,确保数据的完整性和顺序。
  • 超时重传 :当发送方发送数据后,它会启动一个定时器,等待接收方的确认响应。如果在预定时间内没有收到确认序号(ACK),发送方会认为数据包丢失或出错,并重新发送该数据包。这个机制保证了数据能够在遇到丢包或错误时得到恢复。

情况① 数据直接丢了,接收方根本没有收到

情况① 接收方收到了,但是返回的ack丢了

1.2可靠性的基础上,尽可能得提高效率

  • 滑动窗口

要提高效率,每次等待ACK的时间就要花费不少时间,所以TCP引出了一个机制 : 通过滑动窗口实现批量传输



|---------------------|
| 上述批量传输数据的过程,被称为滑动窗口 |

  • 流量控制 :TCP通过滑动窗口机制实现流量控制,动态调整发送方的发送速率以匹配接收方的处理能力。窗口大小指的是接收方能够接收但还未确认的数据量,这避免了接收方因处理不过来而导致的数据溢出。

|------------------------------------|
| 滑动窗口,批量发送并不是数据越大就速度就越快,我们还要考虑到接受方. |

如果你发的太快,瞬间就把接受方的缓冲区给打满了,接下来如果继续发送的话,就会造成丢包.这种情况不如发的慢一点.


这些机制共同作用,确保了TCP能在不稳定的网络环境中提供可靠且相对于比较快速的数据传输服务。

2. TCP三次握手过程

建立TCP连接的三次握手过程是这样的:

  1. SYN :客户端向服务器发送一个SYN(同步序列编号)报文,并进入SYN_SEND状态,等待服务器的响应。这个步骤启动连接过程,客户端告诉服务器它想建立连接,并提供初始的序号。
  2. SYN-ACK :服务器收到SYN报文后,会发送一个SYN-ACK报文,同时提供自己的初始序号,并确认客户端的序号。此时服务器进入SYN_RECV状态。
  3. ACK :客户端收到SYN-ACK报文后,发送一个ACK报文作为响应,确认服务器的初始序号。此时,TCP连接建立完成,数据传输可以开始。

如何来辨别是同步报文还是应答报文呢

3. 为何不是四次握手?

|------------------------------------------------------------------------------------|
| 其实第二次的`syn + ack`,按通常一问一答的思路是发送ack报文之后,在发送syn报文来确认认对方的接收状态,但是为了提高效率便将syn和ack一并发送 |

三次握手的设计确保了在双方准备好发送和接收数据之前不会建立连接。如果采用两次握手,可能会遗漏对方的准备状态确认,导致单向通信或数据无法到达。而采用四次握手则造成没必要的开销.

相关推荐
正在走向自律14 小时前
AI数据分析与可视化:从基础到应用实践
服务器·人工智能·python·机器学习·数据分析·pandas
OnlineProxy15 小时前
亚马逊多账号运营:如何在规避“关联封号”风险的同时实现电商规模化扩张
服务器·数据库·redis
盟接之桥15 小时前
当大模型遇见线束制造:不是通用AI,而是行业AI
大数据·网络·人工智能·安全·制造
91刘仁德16 小时前
IP协议详解:从IP协议头到网段划分、路由与NAT
linux·服务器·网络·网络协议·tcp/ip
辻弋20116 小时前
五年前的旅行视频糊成马赛克?Video2X用Real-ESRGAN逐帧重建细节,但只支持Windows、集显用户建议直接放弃
服务器·数据库·windows·游戏引擎·电脑
可乐鸡翅yeah_17 小时前
业务中 M3U8 水印相关坑,硬水印和动态水印区别
前端·网络·数据库·ffmpeg·m3u8在线
工作10年+,存储芯片行业19 小时前
Linux NVMe 中断排查与性能优化:CPU 亲和性
linux·运维·服务器·windows·性能优化·ssd·pcie
酣大智19 小时前
H3C MSR3600 交换机配置 SSH
网络·ssh·智能路由器
沐浴露z19 小时前
Agent 响应延迟过高?从工具治理角度提供两条思路
前端·网络
一号弯20 小时前
装完LINUX,请先新建日常用户
linux·运维·服务器