八、计算机网络-扩展1.TCP 三次握手和四次挥手原理及设计原因

TCP 三次握手

原理:

TCP(传输控制协议)是互联网协议族中的一种面向连接的、可靠的传输层通信协议。在数据传输之前,必须通过三次握手来建立一个连接。

  1. 第一次握手(SYN)

    • 客户端向服务器发送一个 SYN 报文段(同步序列编号),表示请求建立连接,并进入 SYN_SEND 状态。
  2. 第二次握手(SYN/ACK)

    • 服务器接收到客户端的 SYN 报文后,需要对这个 SYN 报文进行确认,即发送一个 SYN+ACK 报文给客户端。此时,服务器进入 SYN_RECV 状态。
  3. 第三次握手(ACK)

    • 客户端收到服务器发来的 SYN+ACK 报文后,需要再次对这个报文进行确认,发送 ACK 报文给服务器。此 ACK 报文发送完毕后,客户端和服务器都进入 ESTABLISHED 状态,完成三次握手,可以开始进行数据传输。

通俗解释:

想象一下你要打电话给朋友商量事情。首先,你拨通了朋友的电话(第一次握手),朋友接听并说“喂,你好”表示他听到了你的呼叫(第二次握手)。然后你说“是我,我们可以开始谈正事了吗?”这表示你也听到了对方的回应(第三次握手)。现在你们双方都知道对方已经准备好,可以开始对话了。

TCP 四次挥手

原理:

当数据传输结束时,需要断开连接,这时就需要四次挥手来确保双方都能安全地关闭连接。

  1. 第一次挥手(FIN)

    • 主动关闭方发送一个 FIN 报文,用来关闭主动方到被动关闭方的数据传送,表示它已经没有数据要发送了。
  2. 第二次挥手(ACK)

    • 被动关闭方收到这个 FIN 报文之后,就会发送一个 ACK 报文作为应答,并且进入 CLOSE_WAIT 状态,此时表明被动关闭方已经知道主动关闭方没有更多数据要发送了,但是被动关闭方可能还有未完成的数据要发送。
  3. 第三次挥手(FIN)

    • 当被动关闭方发送完了所有数据之后,会发送一个 FIN 报文给主动关闭方,表示自己也准备好了关闭连接。
  4. 第四次挥手(ACK)

    • 主动关闭方收到这个 FIN 报文之后,会发送一个 ACK 报文作为应答,并进入 TIME_WAIT 状态,等待一段时间以确保被动关闭方收到了 ACK 报文,然后才最终关闭连接。

为啥这样设计?

三次握手的设计原因:

  • 确保双方都能够发送和接收数据。单方面的尝试无法保证另一方也能正常工作,因此需要相互确认。
  • 防止历史错误连接的干扰。例如,如果网络中的旧连接请求突然到达,三次握手可以避免错误地建立连接。

四次挥手的设计原因:

  • 由于TCP连接是全双工的,意味着每个方向上的数据流都需要独立关闭。因此,一方发送完数据后不能立即关闭连接,因为另一方可能还在发送数据。所以需要四步操作来确保两边都可以完全结束数据传输。
  • 在第二和第三次挥手中存在一定的间隔,这是为了让被动关闭方有足够的时间处理完剩余的数据并准备关闭连接,确保数据的完整性以及避免丢失任何信息。

这样的设计确保了TCP连接的可靠性和稳定性,既能在开始时确保双方准备就绪,又能在结束时平稳地释放资源。


备注:

系统架构设计师》专栏精心整理了成为系统架构师所需的核心知识体系,涵盖以下12大关键主题:

  1. 系统工程
  2. 软件工程
  3. 软件架构设计
  4. 系统可靠性分析和设计
  5. 信息安全技术
  6. 计算机系统基础
  7. 嵌入式系统
  8. 计算机网络
  9. 数据库系统
  10. 未来信息综合技术
  11. 知识产权与标准化
  12. 论文写作
核心特色
  • 全面覆盖:本专栏内容广泛,涵盖了从基础理论到前沿技术的各个方面,确保读者能够全面掌握系统架构设计所需的各项技能。
  • 精简易懂:每个主题模块经过精心优化,概念清晰、易于理解,帮助读者快速构建坚实的知识基础框架。
  • 实用性强:无论是复习备考还是解决学习过程中的难点问题,专栏内容均能提供有力支持,助力读者在实际工作中灵活应用所学知识。
目标受众

本专栏专为准备软考的考生及希望入门系统架构设计领域的初学者量身打造。无论你是希望系统性学习相关知识的新手,还是需要巩固和提升已有技能的专业人士,都能从中受益。

持续更新与反馈机制
  • 持续更新:专栏内容将根据最新的技术和行业趋势进行持续更新优化,确保读者始终获取最前沿的信息。
  • 互动反馈:我们鼓励读者在使用过程中提出宝贵意见和建议,指出任何错误或不准确的内容。您的反馈将帮助我们不断提升资料的质量和准确性,共同提升学习体验。

通过本专栏的学习,你不仅能掌握系统架构设计的核心知识,还能在实际项目中灵活运用这些知识,助力你在系统架构设计的职业道路上不断进步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雷开你的门

支持更多分享!😊

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值