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已经成为了互联网通信协议的主流之一,被广泛应用于各种网络应用中。它具有以下几个主要特点:
-
面向连接:TCP是一种面向连接的协议,它通过三次握手建立连接,保证了通信的可靠性和数据的一致性。
-
可靠传输:TCP能够保证数据的可靠传输,通过确认机制、重传机制和拥塞控制机制等手段,保证数据的可靠传输。
-
流量控制:TCP采用了流量控制机制,通过拥塞窗口(Congestion Window)机制来控制发送方的发送速率,以避免网络拥塞。
-
拥塞控制:TCP拥塞控制机制能够自动地调整拥塞窗口,从而避免网络拥塞。
-
高效性:TCP能够通过多路复用技术(如:分用、数据包大小优化和滑动窗口优化等)来提高网络传输效率。
TCP的三次握手
TCP协议使用三次握手是为了确保连接建立成功、确认收到数据包和对方的初始序列号以及防止已失效的连接请求报文突然又传送到了服务器。
-
确认收到的数据包和对方的初始序列号。三次握手时,客户端向服务器发送一个SYN数据包,同时随机生成一个初始序列号,服务器接收到SYN数据包后,会响应一个SYN + ACK数据包,其中ACK报文用于确认客户端的初始序列号,而SYN报文则用于同步序列号。这样,客户端在接收到服务器的SYN + ACK数据包后,就可以确认接收到对方发送的SYN数据包和对方的初始序列号。
-
防止已失效的连接请求报文突然又传送到了服务器。如果使用两次握手,在第一次握手时,客户端发送SYN数据包,服务器收到后没有发送确认报文,客户端超时后重新发送SYN数据包,此时如果网络中存在重传机制,客户端可能会接收到旧的SYN数据包,导致连接建立错误。而三次握手可以避免这种情况的发生。
-
确保连接建立成功。三次握手时,客户端向服务器发送SYN数据包,如果服务器能够正常响应,那么客户端就知道连接已经建立成功。如果服务器无法响应或者连接建立失败,客户端在超时时间内没有收到服务器的响应,就会重新发送SYN数据包。
TCP和UDP的区别
TCP和UDP是两种不同的传输协议,各有优缺点,选择使用哪种协议取决于具体的应用场景和需求。它们之间的主要区别如下:
-
连接性:TCP是面向连接的协议,而UDP是无连接的协议。TCP需要建立连接、确认连接和断开连接,而UDP不需要。这意味着在使用TCP传输数据时,发送方和接收方需要在发送数据前先建立连接,而在使用UDP传输数据时,发送方可以立即将数据传输到接收方。
-
可靠性:TCP是可靠的协议,而UDP是不可靠的协议。TCP使用确认机制、超时重传机制和数据校验等方式来保证数据的可靠性,而UDP没有这些机制。这意味着在使用TCP传输数据时,如果数据包丢失或出错,发送方会重传数据包,直到接收方成功接收到数据为止。而在使用UDP传输数据时,如果数据包丢失或出错,发送方不会等待接收方的回应,也不会重传数据包,直接将数据发送出去。
-
速度:UDP比TCP快。由于TCP需要建立连接、确认连接和断开连接等过程,所以在传输数据时会有一定的延迟。而UDP没有这些过程,所以传输速度相对较快。
-
报文格式:TCP和UDP的报文格式不同。TCP将应用层传递下来的数据看作是无结构的数据流,并在传输层添加了序号、确认机制、超时重传机制和数据校验等机制。而UDP在IP协议的基础上添加了端口和差错检查的功能,没有对数据进行序号、确认和重传等处理。
-
应用场景: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分】,附详细解题思路
一、题目描述 给定一个字符串,只包含大写字母,求在包含同一字母的子串中,长度第 k 长的子串的长度,相同字母只取最长的那个子串。 二、输入描述 第一行有一个子串(1<长度<100),只包含大写字母;第二…...
充分统计量和因子分解定理
充分统计量 定义: 设样本 X X X的服从分布 f ( X ∣ θ ) f(X|\theta) f(X∣θ), θ ∈ Θ \theta\in\Theta θ∈Θ,设 T T ( X ) TT(X) TT(X)为一统计量,若在已知 T T T的条件下,样本 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标志
下文中的内容多数来自【参考】中的文章,这边进行一个整理和总结,后续会慢慢增加出现各个 RST 包的测试代码,便于理解。 TCP的 “断开连接” 标志 RST 标志 Reset,复位标志,用于非正常地关闭连接。它是 TCP 协议首部里…...
【软件质量与软件测试 白盒测试与黑盒测试】
第十章 黑盒测试 10.1 等价类划分: 10.1.1 划分等价类 等价类是指所有数据中的一组,它们具有相同的测试结果或相同的响应。等价类划分是将输入数据分为多个等价类的过程。 10.1.2 划分等价类的方法 划分等价类方法主要包括以下几种: 特…...
JavaScript教程(高级)
面向对象编程介绍 两大编程思想 (1)、 面向过程编程: (缩写 POP)( Process-oriented programming)面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现&am…...
C++进阶 —— 范围for(C++11新特性)
目录 一,范围for介绍 二,范围for注意事项 一,范围for介绍 范围for(range-based for loop)是C11新引入的特性,可遍历各种序列结构的容器(如数组、vector、list等);每次循…...
ELK +Filebeat日志分析系统
一、 ELK日志分析系统概述 1、ELK简介 ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,…...
万字解析PELT算法!
Linux是一个通用操作系统的内核,她的目标是星辰大海,上到网络服务器,下至嵌入式设备都能运行良好。做一款好的linux进程调度器是一项非常具有挑战性的任务,因为设计约束太多了: 它必须是公平的快速响应系统的throughp…...
腾讯云服务器端口怎么全开?教程来了
腾讯云服务器端口怎么全开?云服务器CVM在安全组中设置开通,轻量应用服务器在防火墙中设置,腾讯云百科来详细说下腾讯云服务器端口全开放教程: 目录 腾讯云服务器端口全部开通教程 云服务器CVM端口全开放教程 轻量应用服务器开…...
深入理解Java虚拟机:JVM高级特性与最佳实践-总结-13
深入理解Java虚拟机:JVM高级特性与最佳实践-总结-13 Java内存模型与线程Java内存模型原子性、可见性与有序性先行发生原则 Java内存模型与线程 Java内存模型 原子性、可见性与有序性 Java内存模型是围绕着在并发过程中如何处理原子性、可见性和有序性这三个特征来…...
租售keysight E8257D 50G模拟信号发生器 销售/回收
是德(Keysight) E8257D 模拟信号发生器 Keysight E8257D (Agilent) PSG 模拟信号发生器提供业界领先的输出功率、电平精度和高达 67 GHz 的相位噪声性能(工作频率可达 70 GHz)。Agilent PSG 模拟信号发生器的高输出功率和卓越的电…...
【C++】什么是函数模板/类模板?
文章目录 一、函数模板1.什么是函数模板?2.函数模板格式3.函数模板原理4.函数模板实例化(1)隐式实例化(2)显示实例化 二.类模板1.类模板定义格式2.类模板的实例化 总结 一、函数模板 1.什么是函数模板? 函…...
为什么是ChatGPT引发了AI浪潮?
目录 BERT和GPT简介 BERT和GPT核心差异 GPT的优势 GPT的劣势 总结 随着近期ChatGPT的火热,引发各行各业都开始讨论AI,以及AI可以如何应用到各个细分场景。为了不被时代“抛弃”,我也投入了相当的精力用于研究和探索。但在试验的过程中&…...
批处理文件(.bat)启动redis及任何软件(同理)
批处理文件 每次从文件根目录用配置文件格式来启动redis太麻烦了 可以在桌面上使用批处理文件(.bat)启动Redis,请按照以下步骤进行操作: 打开文本编辑器,如记事本。 在编辑器中输入以下内容: 将文件保存…...
深度学习求解稀疏最优控制问题的并行化算法
稀疏最优控制问题 问题改编自论文An FE-Inexact Heterogeneous ADMM for Elliptic Optimal Control Problems with L1-Control Cost { min y ( μ ) , u ( μ )...
【水声信号处理】突破物理极限:下视多波束声呐超分辨率技术原理与公式详解
【水声信号处理】突破物理极限:下视多波束声呐超分辨率技术原理与公式详解 文章目录【水声信号处理】突破物理极限:下视多波束声呐超分辨率技术原理与公式详解一、 为什么我们需要“超分辨率”?(痛点分析)二、 声呐回波…...
从Prompt到成稿|像素剧本圣殿输入剧情大纲→输出标准剧本全流程
从Prompt到成稿|像素剧本圣殿输入剧情大纲→输出标准剧本全流程 1. 工具介绍:像素剧本圣殿 像素剧本圣殿是一款基于Qwen2.5-14B-Instruct大模型深度优化的专业剧本创作工具。它将先进的AI文本生成能力与独特的8-Bit复古视觉风格相结合,为编…...
区块链+AI的致命组合:深扒某DeFi项目的测试黑幕
在数字经济浪潮中,区块链与人工智能(AI)的融合被视为金融创新的“致命组合”,尤其在去中心化金融(DeFi)领域,它承诺了前所未有的效率和智能决策能力。然而,这一组合也带来了隐蔽的测…...
猫抓插件:资源嗅探技术如何重塑浏览器媒体捕获体验
猫抓插件:资源嗅探技术如何重塑浏览器媒体捕获体验 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在数字内容爆炸的时代,网…...
2026年了,为什么很多企业做了智慧气象,结果还是没把风险降下来?
上个月,和一位新能源集团的运营负责人聊天,他抛出一个百思不得其解的问题:“我们花了300多万上了智慧气象系统,接了精细化预报,预警信息每天推送到手机、电脑、大屏,三个渠道同步。结果上个月一场雷暴&…...
瑞芯微RK3399固件急救指南:用upgrade_tool搞定系统崩溃后的快速还原
RK3399固件灾难恢复实战:从分区表重建到全系统还原 当一块搭载RK3399的开发板因固件损坏而变砖时,那种面对黑屏的无力感,相信每个嵌入式开发者都深有体会。去年我们产线就遭遇过因批量升级失败导致30台设备集体罢工的紧急状况,正…...
DDrawCompat:老游戏兼容性修复与性能优化终极解决方案
DDrawCompat:老游戏兼容性修复与性能优化终极解决方案 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.com/gh_mirrors/dd/DDrawC…...
低代码组件“看似简单,上线即崩”?20年专家拆解5个被90%团队忽略的线程安全与事务传播陷阱
第一章:低代码组件“看似简单,上线即崩”的真相低代码平台承诺“拖拽即交付”,但真实生产环境中,大量业务系统在上线后数小时内便出现表单提交失败、数据丢失、权限错乱或页面白屏等问题。这些故障并非源于复杂逻辑,而…...
突破限制:NCM音乐格式转换与跨平台播放完全指南
突破限制:NCM音乐格式转换与跨平台播放完全指南 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 音乐文件解密是许多音乐爱好者面临的实际需求,尤其是当你希望在不同设备上自由播放从网易云音乐下载的NCM格式文…...
Graphormer在放射性药物中的应用:螯合剂分子稳定常数与配位能力预测
Graphormer在放射性药物中的应用:螯合剂分子稳定常数与配位能力预测 1. 项目概述 Graphormer是一种基于纯Transformer架构的图神经网络模型,专门为分子图(原子-键结构)的全局结构建模与属性预测而设计。该模型在OGB、PCQM4M等分子基准测试中表现优异&a…...
