当前位置: 首页 > news >正文

TCP协议为什么要三次握手而不是两次?

TCP(Transmission Control Protocol,传输控制协议)的历史可以追溯到1970年代初期,最初的版本是RFC 793,后来经过多次更新和改进,包括RFC 1122、RFC 1323、RFC 2018、RFC 2581、RFC 2873、RFC 3168和RFC 4614等。其中,RFC 1323(TCP Extensions for High Performance)提出了TCP的高性能扩展,RFC 2018(TCP Selective Acknowledgment)定义了TCP的选择性确认机制,RFC 2581(TCP Congestion Control)提出了TCP的拥塞控制机制。目前,TCP已经成为了互联网通信协议的主流之一,被广泛应用于各种网络应用中。它具有以下几个主要特点:

  1. 面向连接:TCP是一种面向连接的协议,它通过三次握手建立连接,保证了通信的可靠性和数据的一致性。

  2. 可靠传输:TCP能够保证数据的可靠传输,通过确认机制、重传机制和拥塞控制机制等手段,保证数据的可靠传输。

  3. 流量控制:TCP采用了流量控制机制,通过拥塞窗口(Congestion Window)机制来控制发送方的发送速率,以避免网络拥塞。

  4. 拥塞控制:TCP拥塞控制机制能够自动地调整拥塞窗口,从而避免网络拥塞。

  5. 高效性:TCP能够通过多路复用技术(如:分用、数据包大小优化和滑动窗口优化等)来提高网络传输效率。

TCP的三次握手

TCP协议使用三次握手是为了确保连接建立成功、确认收到数据包和对方的初始序列号以及防止已失效的连接请求报文突然又传送到了服务器。

  1. 确认收到的数据包和对方的初始序列号。三次握手时,客户端向服务器发送一个SYN数据包,同时随机生成一个初始序列号,服务器接收到SYN数据包后,会响应一个SYN + ACK数据包,其中ACK报文用于确认客户端的初始序列号,而SYN报文则用于同步序列号。这样,客户端在接收到服务器的SYN + ACK数据包后,就可以确认接收到对方发送的SYN数据包和对方的初始序列号。

  2. 防止已失效的连接请求报文突然又传送到了服务器。如果使用两次握手,在第一次握手时,客户端发送SYN数据包,服务器收到后没有发送确认报文,客户端超时后重新发送SYN数据包,此时如果网络中存在重传机制,客户端可能会接收到旧的SYN数据包,导致连接建立错误。而三次握手可以避免这种情况的发生。

  3. 确保连接建立成功。三次握手时,客户端向服务器发送SYN数据包,如果服务器能够正常响应,那么客户端就知道连接已经建立成功。如果服务器无法响应或者连接建立失败,客户端在超时时间内没有收到服务器的响应,就会重新发送SYN数据包。

TCP和UDP的区别

TCP和UDP是两种不同的传输协议,各有优缺点,选择使用哪种协议取决于具体的应用场景和需求。它们之间的主要区别如下:

  1. 连接性:TCP是面向连接的协议,而UDP是无连接的协议。TCP需要建立连接、确认连接和断开连接,而UDP不需要。这意味着在使用TCP传输数据时,发送方和接收方需要在发送数据前先建立连接,而在使用UDP传输数据时,发送方可以立即将数据传输到接收方。

  2. 可靠性:TCP是可靠的协议,而UDP是不可靠的协议。TCP使用确认机制、超时重传机制和数据校验等方式来保证数据的可靠性,而UDP没有这些机制。这意味着在使用TCP传输数据时,如果数据包丢失或出错,发送方会重传数据包,直到接收方成功接收到数据为止。而在使用UDP传输数据时,如果数据包丢失或出错,发送方不会等待接收方的回应,也不会重传数据包,直接将数据发送出去。

  3. 速度:UDP比TCP快。由于TCP需要建立连接、确认连接和断开连接等过程,所以在传输数据时会有一定的延迟。而UDP没有这些过程,所以传输速度相对较快。

  4. 报文格式:TCP和UDP的报文格式不同。TCP将应用层传递下来的数据看作是无结构的数据流,并在传输层添加了序号、确认机制、超时重传机制和数据校验等机制。而UDP在IP协议的基础上添加了端口和差错检查的功能,没有对数据进行序号、确认和重传等处理。

  5. 应用场景:TCP适用于对数据传输可靠性要求较高的场景,如文件传输、邮件发送等。而UDP适用于对速度要求较高但对数据可靠性要求较低的场景,如视频流传输、游戏等。

TCP和IP的区别

网际协议的支持情况不同:TCP/IP一开始就考虑到多种异构网的互连问题,并将网际协议IP作为TCP/IP的重要组成部分;

无线连接服务的支持标准不同:TCP/IP一开始就对面对连接服务和无连接服务并重,而OSI在开始的时只强调面向连接这一种服务。

相关文章:

TCP协议为什么要三次握手而不是两次?

TCP(Transmission Control Protocol,传输控制协议)的历史可以追溯到1970年代初期,最初的版本是RFC 793,后来经过多次更新和改进,包括RFC 1122、RFC 1323、RFC 2018、RFC 2581、RFC 2873、RFC 3168和RFC 461…...

使用Vuex进行状态管理

在Vue.js应用程序中,状态管理是一个重要的主题。当应用程序变得复杂,组件之间的状态共享和通信变得困难,这时候使用Vuex就会变得十分有用。Vuex是一个专门为Vue.js设计的状态管理库,它提供了一个集中式的状态管理方案,…...

【优化调度】基于改进遗传算法的公交车调度排班优化的研究与实现(Matlab代码实现)

目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 1 概述 本文对当前公交企业调度系统进行了分析,建立了公交排班的数学模型。本文基于数据挖掘分析的结果上,使用截面客流量数据对模型进行约束,得出了公交客流出行的空间分布规律。再以…...

IMX6ULL裸机篇之I2C实验-硬件原理图

一. I2C 实验简介 I2C实验,我们就来学习如何使用 I.MX6U 的 I2C 接口来驱动 AP3216C,读取 AP3216C 的传感器数据。 AP3216C是一个三合一的环境光传感器,ALSPSIRLED,ALS是环境光,PS是接近传感器,IR是红外L…...

华为OD机试真题 Java 实现【获取字符串中连续出现次数第k多的字母的次数】【2023Q1 100分】,附详细解题思路

一、题目描述 给定一个字符串&#xff0c;只包含大写字母&#xff0c;求在包含同一字母的子串中&#xff0c;长度第 k 长的子串的长度&#xff0c;相同字母只取最长的那个子串。 二、输入描述 第一行有一个子串(1<长度<100)&#xff0c;只包含大写字母&#xff1b;第二…...

充分统计量和因子分解定理

充分统计量 定义&#xff1a; 设样本 X X X的服从分布 f ( X ∣ θ ) f(X|\theta) f(X∣θ)&#xff0c; θ ∈ Θ \theta\in\Theta θ∈Θ&#xff0c;设 T T ( X ) TT(X) TT(X)为一统计量&#xff0c;若在已知 T T T的条件下&#xff0c;样本 X X X的条件分布与参数 θ \the…...

M1 PD安装arm ubuntu及Docker

M1 PD安装arm ubuntu 下载 Ubuntu 22.04.2 LTS https://cn.ubuntu.com/download/server/arm 参考视频安装 https://www.bilibili.com/video/BV1Mu4y1f74v/?spm_id_from333.999.0.0&vd_source9056c6d3c91a117baaceb663957daa08 PD Ubuntu安装docker 删除现有的docker安装…...

TCP协议的RST标志

下文中的内容多数来自【参考】中的文章&#xff0c;这边进行一个整理和总结&#xff0c;后续会慢慢增加出现各个 RST 包的测试代码&#xff0c;便于理解。 TCP的 “断开连接” 标志 RST 标志 Reset&#xff0c;复位标志&#xff0c;用于非正常地关闭连接。它是 TCP 协议首部里…...

【软件质量与软件测试 白盒测试与黑盒测试】

第十章 黑盒测试 10.1 等价类划分&#xff1a; 10.1.1 划分等价类 等价类是指所有数据中的一组&#xff0c;它们具有相同的测试结果或相同的响应。等价类划分是将输入数据分为多个等价类的过程。 10.1.2 划分等价类的方法 划分等价类方法主要包括以下几种&#xff1a; 特…...

JavaScript教程(高级)

面向对象编程介绍 两大编程思想 &#xff08;1&#xff09;、 面向过程编程&#xff1a; &#xff08;缩写 POP&#xff09;&#xff08; Process-oriented programming&#xff09;面向过程就是分析出解决问题所需要的步骤&#xff0c;然后用函数把这些步骤一步一步实现&am…...

C++进阶 —— 范围for(C++11新特性)

目录 一&#xff0c;范围for介绍 二&#xff0c;范围for注意事项 一&#xff0c;范围for介绍 范围for&#xff08;range-based for loop&#xff09;是C11新引入的特性&#xff0c;可遍历各种序列结构的容器&#xff08;如数组、vector、list等&#xff09;&#xff1b;每次循…...

ELK +Filebeat日志分析系统

一、 ELK日志分析系统概述 1、ELK简介 ELK是三个开源软件的缩写&#xff0c;分别表示&#xff1a;Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat&#xff0c;它是一个轻量级的日志收集处理工具(Agent)&#xff0c;Filebeat占用资源少&#xff0c…...

万字解析PELT算法!

Linux是一个通用操作系统的内核&#xff0c;她的目标是星辰大海&#xff0c;上到网络服务器&#xff0c;下至嵌入式设备都能运行良好。做一款好的linux进程调度器是一项非常具有挑战性的任务&#xff0c;因为设计约束太多了&#xff1a; 它必须是公平的快速响应系统的throughp…...

腾讯云服务器端口怎么全开?教程来了

腾讯云服务器端口怎么全开&#xff1f;云服务器CVM在安全组中设置开通&#xff0c;轻量应用服务器在防火墙中设置&#xff0c;腾讯云百科来详细说下腾讯云服务器端口全开放教程&#xff1a; 目录 腾讯云服务器端口全部开通教程 云服务器CVM端口全开放教程 轻量应用服务器开…...

深入理解Java虚拟机:JVM高级特性与最佳实践-总结-13

深入理解Java虚拟机&#xff1a;JVM高级特性与最佳实践-总结-13 Java内存模型与线程Java内存模型原子性、可见性与有序性先行发生原则 Java内存模型与线程 Java内存模型 原子性、可见性与有序性 Java内存模型是围绕着在并发过程中如何处理原子性、可见性和有序性这三个特征来…...

租售keysight E8257D 50G模拟信号发生器 销售/回收

是德&#xff08;Keysight&#xff09; E8257D 模拟信号发生器 Keysight E8257D (Agilent) PSG 模拟信号发生器提供业界领先的输出功率、电平精度和高达 67 GHz 的相位噪声性能&#xff08;工作频率可达 70 GHz&#xff09;。Agilent PSG 模拟信号发生器的高输出功率和卓越的电…...

【C++】什么是函数模板/类模板?

文章目录 一、函数模板1.什么是函数模板&#xff1f;2.函数模板格式3.函数模板原理4.函数模板实例化&#xff08;1&#xff09;隐式实例化&#xff08;2&#xff09;显示实例化 二.类模板1.类模板定义格式2.类模板的实例化 总结 一、函数模板 1.什么是函数模板&#xff1f; 函…...

为什么是ChatGPT引发了AI浪潮?

目录 BERT和GPT简介 BERT和GPT核心差异 GPT的优势 GPT的劣势 总结 随着近期ChatGPT的火热&#xff0c;引发各行各业都开始讨论AI&#xff0c;以及AI可以如何应用到各个细分场景。为了不被时代“抛弃”&#xff0c;我也投入了相当的精力用于研究和探索。但在试验的过程中&…...

批处理文件(.bat)启动redis及任何软件(同理)

批处理文件 每次从文件根目录用配置文件格式来启动redis太麻烦了 可以在桌面上使用批处理文件&#xff08;.bat&#xff09;启动Redis&#xff0c;请按照以下步骤进行操作&#xff1a; 打开文本编辑器&#xff0c;如记事本。 在编辑器中输入以下内容&#xff1a; 将文件保存…...

深度学习求解稀疏最优控制问题的并行化算法

稀疏最优控制问题 问题改编自论文An FE-Inexact Heterogeneous ADMM for Elliptic Optimal Control Problems with L1-Control Cost { min ⁡ y ( μ ) , u ( μ )...

金融数据宝藏库:沪深Level2与高频数据拆解

被高频数据搞懵了&#xff1f;硬盘空间就是这么没的。刚入坑那会儿&#xff0c;总想用最细的数据&#xff0c;结果光下载和整理就耗掉大半天&#xff0c;策略还没写呢。 今天简单聊聊几种常见的高频数据到底有啥区别&#xff0c;主要是沪深股票这块。数据来源是CMES金融数据库&…...

四类高危漏洞的工程化修复:XSS、越权、反序列化与硬编码密钥治理

1. 这不是“打补丁”&#xff0c;而是重构安全认知的起点很多人把代码审计后的漏洞修复&#xff0c;当成开发流程末尾一个不得不做的收尾动作——改几行代码、加个过滤、套个函数&#xff0c;提交、测试、上线&#xff0c;完事。我干了十多年安全审核和开发支持&#xff0c;亲手…...

面部SDF阴影锯齿问题的探索

近期做的一些工作涉及到面部SDF阴影&#xff0c;网上普遍做法是不做插值&#xff0c;直接Step硬性裁剪&#xff0c;不是很理解为什么不用插值&#xff0c;于是我通过SmoothStep做了简单修改&#xff0c;看下效果。 看上去还可以是因为gif有压缩&#xff0c;但面部SDF阴影做插值…...

Meta 裁员约 8000 人:弥补 AI 巨额投资,削减人力成本

Meta 裁员&#xff1a;弥补 AI 投资缺口据报道&#xff0c;Meta 已通知数千名员工被裁员&#xff0c;此次裁员是为弥补其在人工智能方面的巨额投资。《商业内幕》分享的 Meta 管理层邮件显示&#xff0c;这是公司“持续努力提高运营效率、平衡其他投资的举措之一”。裁员规模与…...

微信小程序 消防知识学习平台系统

目录同行可拿货,招校园代理 ,本人源头供货商项目概述核心功能技术实现特色亮点适用场景项目技术支持源码获取详细视频演示 &#xff1a;同行可合作点击我获取源码->获取博主联系方式->进我个人主页-->同行可拿货,招校园代理 ,本人源头供货商 项目概述 微信小程序“消…...

【安全基线】测试数据脱敏规范:喂给大模型的数据,如何确保不泄露公司机密?

一、开篇:当“喂数据”变成“泄机密” 2026年4月,一条消息震动了整个AI行业:为OpenAI、Anthropic和Meta提供训练数据的明星初创公司Mercor确认发生安全事件,黑客组织TeamPCP通过污染开源项目LiteLLM的CI/CD流水线,发布了恶意版本1.82.7和1.82.8到PyPI仓库,Mercor正是数千…...

【工具全景】2025全球AI自动化测试工具矩阵库(商业化 vs 开源项目梳理)

前言:测试工程师正在被AI重新定义 2025年,测试领域正在经历一场前所未有的变革。据MarketsandMarkets最新报告显示,全球AI测试自动化市场规模在2025年达到88.1亿美元,预计到2032年将飙升至359.6亿美元,年复合增长率高达22.3%。与此同时,Gartner在2025年10月首次发布了《…...

AI Agent 运行时革命:Session-as-Event-Log 架构解析

1. 这不是新赛道&#xff0c;是 runtime 层的“操作系统时刻”来了你有没有试过让一个 AI 代理连续工作四十分钟&#xff1f;不是闲聊&#xff0c;而是真正在查资料、调 API、写代码、改文档——一环扣一环地推进一个复杂任务。我去年就搭过这么一套系统&#xff0c;用的是当时…...

【金蝶云星空】出纳做账-付款退款单使用场景

学习目标学习本内容后&#xff0c;您将掌握如何使用付款退款单。业务场景付款退款单 付款退款单与付款业务对应&#xff0c;处理付款业务所发生的退款&#xff0c;包括采购业务付款的退款或者其他业务付款的退款。支持手工新增或者关联应付系统负数的应付单、其他应付单生成付…...

丙午年三月三十平镜里

丙午年三月三十平镜里 曾几风流里&#xff0c;皆逝日常中。 莫名春伤寒&#xff0c;妙在岁月功。 儿时不知道&#xff0c;青烟多捉空。 老壮老路上&#xff0c;庭院情境通。 谓花当此季&#xff0c;寻因那刻虹&#xff1f; 虚妄浮云聚&#xff0c;耕种顺序隆。 斯文源村落&…...