TCP为什么需要3次握手?

news/2024/5/2 19:24:55

一、3次握手过程
客户端向服务端发送一个表示建立连接的SYN报文段,服务端从IP数据报中提取出TCP SYN报文段,为该TCP连接分配需要的缓存和变量,并向客户端发送表示允许连接的报文段ACK。客户端在收到ACK报文段之后,也要给该连接分配缓存和变量,客户端向服务器再发送一个报文段ACK,表示对允许连接的报文段进行了确认。
自此完成一次TCP连接。


二、3次握手的必要性
1.确认双方的发送和接收能力:通过3次握手,客户端和服务器可以确认彼此都具备发送和接收数据的能力。这是建立可靠连接的基础。
2.同步初始序列号:TCP协议通过序列号来标识发送的数据包,确保数据的顺序性和完整性。在3次握手过程中,双方会交换初始序列号,以便后续的数据传输能够正确地进行。
3.避免已失效的连接请求报文段突然又传送到了服务端:这种情况可能发生在网络拥堵或者延迟较大的情况下。通过3次握手,服务端可以确认客户端的请求是有效的,而不是一个过时的请求。
第3次握手可以避免由于客户端延迟的连接请求,使得服务端无故再次建立连接。


致力于C、C++、Java、Kotlin、Android、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享。

若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢。您的支持是我们为您提供帮助的最大动力。


http://www.mrgr.cn/p/83021421

相关文章

网络防火墙技术知多少?了解如何保护您的网络安全

在当前以网络为核心的世界中,网络安全成为了至关重要的议题。网络防火墙是一种常见的保护网络安全的技术,用于监控和控制网络流量,阻止未经授权的访问和恶意活动。今天德迅云安全就带您了解下防火墙的一些相关功能和类型。 防火墙的五个功能…

运维自动化之账单系统

费用分摊计算是个十分复杂的工作,尤其是在多云的环境下,尤其是公司严谨需要按项目分摊成本的情况下,尤其是一个项目还分布在不同云厂商不同云账户的场景下,尤其是云厂商toB的业务模式还会有超级复杂的资源折扣加持下,想要把帐算清楚难度巨大 我们每个月都需要计算项目成本…

Oracle——领先的企业级数据库解决方案

一、WHAT IS ORACLWE: ORACLE 数据库系统是美国 ORACLE 公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S 体系结构的数据库之一,ORACLE 通常应用于大型系统的数…

YUV420 转RGB图像

YUV420 转RGB图像在数字图像处理种YUV格式也是我们经常遇到,与RGB一样也是一种编码格式,开始主要用于电视系统以及模拟视频领域。YUV,分为三个分量,“Y”表示明亮度(Luminance或Luma),也就是灰度值;而“U”和“V” 表示的则是色度(Chrominance或Chroma),作用是描述影…

iText 5

依赖 implementation com.itextpdf:itextpdf:5.5.13.3implementation com.itextpdf:itext-asian:5.2.0implementation com.alibaba:fastjson:1.2.83compileOnly org.projectlombok:lombok:1.18.22annotationProcessor "org.projectlombok:lombok:1.18.22"测试 impor…

[转]AspNetCore容器化(Docker)部署(三) —— Docker Compose容器编排

一.前言 上一篇部署了一个最基础的helloworld应用,创建了两个容器和一个network,还算应付得过来。 如果该应用继续引入mysql、redis、job等若干服务,到时候发布一次得工作量之大就可想而知了,这时候就需要用到Docker Compose。 Docker Compose是一个用于定义和运行多容器Do…

使用rollup打包一个npm包

使用rollup打包一个npm包 前言:在这个都在使用 npm install,来安装包的时代,你是否想发布一个自己的npm包,或者你工作中是否要发布一个npm包,来到你的项目中到处使用呢?(不晓得npm是什么的请移步:npm) 那么今天我们就来学习一下怎样打包一个自己的npm包 1.首先准备环境 …

LevelDB源码阅读笔记(1、整体架构)

LevelDB源码阅读笔记(1、整体架构) LeveDB源码笔记系列: LevelDB源码阅读笔记(0、下载编译leveldb) LevelDB源码阅读笔记(1、整体架构) 前言 对LevelDB源码的博客,我准备采用总…

ROS2笔记4--服务通讯

ROS2中话题通讯可以实现多个ROS节点之间数据的单向传输,不过话题通讯是一种异步通信机制,发布者无法准确知道订阅者是否收到消息。而服务通信是一种基于请求响应的通信模型,在通信双方中客户端发送请求数据到服务端,服务端响应结果给客户端。 从服务实现机制看这种形式是C…

从系统设计到撸代码?我用了这些方法和工具

大家在撸代码之前会进行业务系统流程设计么?你们在设计的时候又用到了哪些工具呢?大家好,我是老猫。今天和大家分享一下程序员日常的绘图思路,以及一些老猫日常使用的绘图工具。 为什么要画图? 我们在进行系统设计的时候,为了更加具象地呈现系统的轮廓以及各个组件或者系…

element-plus 实现 table 列动态显示,宽度调整,顺序调整

效果图实现原理定义一个数组,保存列的属性, 标题,是否显示,宽度等 v-for 循环,动态设置列 弹出界面来修改这个数组,就实现了.

Linux上的uname

2024年4月19日,周五上午 uname 是一个常用的命令行工具,uname 的全称是 “Unix Name”,它是一个 Unix 和类 Unix 操作系统上的命令行工具,用于获取操作系统相关的信息,如内核版本、系统架构、主机名等。 它通常用于查…

GreatSQL 死锁案例分析

1.背景概述 客户业务发生死锁的报错,根据业务程序日志及业务流程,发现造成死锁的原因是:事务1 delete + insert ,事务2 delete + insert 2个事务交替执行导致的死锁;由于GAP锁阻塞了插入意向锁,并且当delete的数据存在时死锁不会发生,当delete的数据不存在时,会发生死…

如何基于香橙派AIpro对视频/图像数据进行预处理

昇腾CANN提供了两种专门用于数据预处理的方式:AIPP和DVPP。本文分享自华为云社区《如何基于香橙派AIpro对视频/图像数据进行预处理》,作者: 昇腾CANN。 受网络结构和训练方式等因素的影响,绝大多数神经网络模型对输入数据都有格式上的限制。在计算机视觉领域,这个限制大多…

yolov7模型输出层预测方法解读

本文从代码的角度分析模型训练阶段输出层的预测包括以下几个方面: 标注数据(下文统称targets)的正样本分配策略,代码实现位于find_3_positive。候选框的生成,会介绍输出层的预测值、GT、grid、 anchor之间的联系损失函…

ROS笔记[2]-获取OpenMV数据并发布到ROS消息

Orangepi(香橙派)通过USB-CDC获取OpenMV数据并使用Python发布到ROS的/openmv主题,实现打印"hello ros"字符串.摘要 Orangepi(香橙派)通过USB-CDC获取OpenMV数据并使用Python发布到ROS的/openmv主题,实现打印"hello ros"字符串. 关键信息python3.8 ROS1:Noe…

vue引入字体icon

这里我用的是阿里图标库 1.2.3.4.在vue的assets文件中增加一个font文件把解压后的文件复制进去,并在mian.js中引入iconfont.css5.1.使用,复制以下代码在页面中使用 <h1>欢迎 <i class="iconfont">&#xe67c;</i></h1> 5.1.2使用,复制一…

万象奥科邀您参加RK3568+AMP混合部署线下实操活动-北京站

4月25日,万象奥科将携手RT-Thread在北京举办线下workshop,带您体验RK3568+OpenAMP实现RT-Thread与Linux同时运行的开发方式,实现在电力、机器人、工业控制、工业互联网、新能源等领域的高效应用。4月25日,万象奥科将携手RT-Thread在北京举办线下workshop,带您体验RK3568+O…

副本和就删码

分类 按照存储的结构存储可以分为集中式存储和分布式存储集中式存储 传统集中式存储采用控制器+硬盘柜的方式,通过冗余的双控制器提供数据管理和读写能力(也有超过2个控制器的多控存储,多见于高端存储),通过控制器自带的硬盘槽位或扩展硬盘柜提供存储空间,如下图。集中式…

多因子模型的因子分组-聚类分析

优质博文&#xff1a;IT-BLOG-CN 之前我们已经介绍了简单、高效的克隆巴赫α系数和科学有效的主成分分析对因子进行分组&#xff0c;我们将继续介绍一种复杂的方法----聚类分析&#xff08;Cluster Analysis&#xff09;。 聚类分析根据多个因子某一方面的相似性进行归类&…