news 2026/2/11 6:04:39

聊聊TCP协议中三次握手建立连接的过程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
聊聊TCP协议中三次握手建立连接的过程

什么是TCP协议,它有什么特点?

TCP(传输控制协议,Transmission Control Protocol)是互联网协议套件中的一部分,用于在网络上可靠地传输数据。TCP提供了一种端到端的可靠通信机制,确保数据从发送端传输到接收端时不会丢失、损坏、重复或者无序。

  • 可靠性:TCP使用确认和重传机制来确保数据的可靠传输。接收方收到数据后会发送确认消息,如果发送方未收到确认消息,将会重新发送数据。

  • 流量控制:TCP通过流量控制机制来协调发送方和接收方之间的数据传输速率,以防止发送方发送过多数据导致接收方无法处理。

  • 拥塞控制:TCP通过拥塞控制机制来避免网络拥塞,保持网络的稳定性和吞吐量。当网络出现拥塞时,TCP会调整发送速率以减少网络负载。

  • 面向连接:TCP是一种面向连接的协议,通信双方在传输数据之前需要先建立连接,数据传输完成后再释放连接。

  • 字节流传输:TCP将数据视为字节流进行传输,而不是离散的数据包,因此发送方和接收方无需关心数据包的大小和边界。

三次握手是 TCP 协议用于建立连接的过程,确保通信的双方能够互相认可并准备好进行数据传输。通俗地说,可以将三次握手比喻为两个人之间的问候和确认过程。

第一次握手:

  • 发送方(客户端)向接收方(服务器端)发送一个请求,请求建立连接。

  • 类比成两个人见面,第一个人(客户端)向第二个人(服务器端)打招呼,表达了自己想要建立连接的意愿。

第二次握手:

  • 接收方(服务器端)收到请求后,接受连接请求,并向发送方(客户端)发送确认消息。

  • 类比成第二个人(服务器端)接受了第一个人(客户端)的问候,并回应了自己也想要建立连接的意愿。

第三次握手:

  • 发送方(客户端)收到确认消息后,再次向接收方(服务器端)发送一个确认消息。

  • 类比成第一个人(客户端)收到了第二个人(服务器端)的回应,并且回应了自己也同意建立连接的意愿。

完成了这三次握手之后,连接就建立起来了,双方都知道对方已经准备好了可以开始传输数据。这个时候两个人就可以开始交流了,类比为两个人之间开始正式对话。

需要注意的是,三次握手的目的是确保双方都能够确认对方的身份,并且双方的通信双向可行。如果在握手过程中出现问题,比如某一方没有收到确认消息或者超时,连接建立失败,双方需要重新发起握手。

为什么要进行三次握手,而不是两次握手呢?

进行三次握手而不是两次握手的主要原因是确保双方都能够正确地确认彼此的通信能力和身份,从而建立起可靠的连接。下面是为什么需要三次握手的一些原因:

1. 确认双方都能发送和接收数据:通过三次握手,发送方和接收方都能够确认彼此的通信能力。在第一次握手时,客户端向服务器端发送连接请求,服务器端确认自己能够接收到请求。在第二次握手时,服务器端向客户端发送确认消息,客户端确认自己能够接收到服务器端的消息。在第三次握手时,客户端再次向服务器端发送确认消息,服务器端确认自己能够接收到客户端的消息。这样双方就都确认了彼此的通信能力。

2. 防止旧连接的重复建立: 如果只进行两次握手,那么可能会出现一种情况,即已经断开的旧连接的数据包延迟到达接收方,而接收方错误地认为这是一个新的连接请求,从而导致不必要的连接建立。通过第三次握手,可以确保双方都确认了彼此的通信状态是新的,而不是旧的连接。

3. 防止半开连接状态: 在某些情况下,如果只进行两次握手,可能会导致半开连接状态的出现,即一端已经准备好发送数据,但另一端却没有确认连接建立。这种状态可能会导致资源浪费或者连接泄漏。通过第三次握手,可以确保双方都已经确认了连接的建立,避免了半开连接状态的出现。

综上所述,进行三次握手能够确保双方都正确地确认了彼此的通信能力和身份,从而建立起可靠的连接,并防止了一些可能导致连接问题的情况发生。

最后作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些软件测试的学习资料和我花了3个月整理的软件测试自学全栈,这些资料希望能给你前进的路上带来帮助。

视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/6 19:03:41

别再迷信大模型了!微软全新RL方法,让14B小模型“越级”挑战DeepSeek-R1,大海捞针轻松拿捏!

在当前大语言模型的发展中,长上下文推理能力的提升已成为关键研究方向。然而,构建具备高级长上下文推理能力的模型仍面临多重挑战。 首先,用于训练的理想问题需足够复杂以激发深度推理并支持从长上下文中动态检索关键信息,而且答…

作者头像 李华
网站建设 2026/2/4 10:17:30

1、探索 DB2 Express - C:免费且强大的数据库解决方案

探索 DB2 Express - C:免费且强大的数据库解决方案 1. 适用人群与书籍结构 对于数据库管理员(DBAs)、应用程序开发人员、顾问、软件架构师、产品经理、教师和学生等与数据库打交道或打算从事相关工作的人来说,有一个很好的资源可以帮助他们了解和使用数据库。这个资源不仅…

作者头像 李华
网站建设 2026/2/4 8:21:02

11、DB2 数据库安全与备份恢复全解析

DB2 数据库安全与备份恢复全解析 1. DB2 数据库安全基础 在 DB2 数据库系统中,有两个重要的用户组与安全访问密切相关: - DB2ADMNS :该组和本地管理员通过操作系统对所有 DB2 对象拥有完全访问权限。 - DB2USERS :此组通过操作系统对所有 DB2 对象具有读取和执行访…

作者头像 李华
网站建设 2026/2/7 0:14:38

全国知名省级网络安全大赛

以下是全国范围内主要和知名的省级及国家级网络安全大赛的梳理,你可以根据自身情况选择参加。一、 国家级综合赛事(通常下设省赛区)这些大赛影响力最大,覆盖面最广,通常先举办省赛选拔,优胜者进入全国总决赛…

作者头像 李华
网站建设 2026/2/5 13:26:35

计算机网络复习全书(详细整理)

[TOC](计算机网络复习全书目录)前言:为什么你需要这份指南?计算机网络是IT世界的基石,也是每一位计算机、软件工程及相关专业学生必须掌握的核心课程。面对教材的厚重、概念的繁多和计算题的烧脑,期末复习往往令人望而却步。这份《…

作者头像 李华
网站建设 2026/2/4 13:59:45

4、GTK+ 容器小部件全解析

GTK+ 容器小部件全解析 在 GTK+ 开发中,容器小部件是构建用户界面的重要组成部分,它们可以帮助我们组织和排列其他小部件。容器小部件主要分为装饰器容器和布局容器两类。 容器小部件概述 容器类的主要目的是让一个父小部件包含一个或多个子小部件。GTK+ 中有两种类型的容…

作者头像 李华