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

TCP/UDP 简介,三次握手与四次挥手

一、TCP 三次握手

目的:为了解决在不可靠的信道上建立可靠的网络连接
三次握手是连接请求的过程:
A 发送连接请求的数据给 B(发送 SYN 包)
B 同意连接,返回数据给 A(返回 SYN+ACK 包)
A 收到后回复数据给 B(返回 ACK 包),连接建立

以上过程不区分客户端和服务端,tcp 的连接是全双工的。两端均采用上述机制。

Q:为什么不是两次握手?

因为在不可靠的网络上可能会存在传输问题,
比如 A 的第一次连接请求没有到 B(网络滞留),又发送了一次连接请求;
B 收到了第二次的连接请求,这时建立起一条通信;
A 建立了一条通信,当第一次的请求到 B 以后,B会再次建立一条通信;
此时 B 有两条通信,造成了状态不一致

Q:一包数据被拆成多包发送,如何处理丢包问题?这些数据包到达的时间不同,如何处理乱序问题?

针对以上问题,
tcp 为每一个连接建立起一个发送缓冲区【0.1.2…N】
发送数据时,A 取一部分数据组成发送报文(在这个报文中会附带 序列号 + 长度)
B 在收到数据后,需要回复确认报文 ACK = 序列号 + 长度,也就是下一包的起始序列号
这样 A 可以分多段发送数据给 B,B 只需要返回一次报文确认即可
如果数据中有丢失的数据,则 B 端会返回报文要求 A 端重发,B 端会处理乱序问题

二、什么是四次挥手

处于连接状态的客户端和服务端,都可以发起关闭连接请求。
A 想主动结束连接,需要向 B 发送一次请求(FIN包),进入终止等待1状态(第一次挥手)
B 收到后,返回一个 ACK 包,进入关闭等待状态,A进入终止等待2状态(第二次挥手)
AB 此时还可以发送数据,B在数据接收完以后,返回 FIN 包,B进入关闭等待状态(第三次挥手)
A 收到关闭信息后返回 ACK 包,并且进入超时等待状态,超时后关闭连接,B收到信息后回立即关闭连接(第四次挥手)

Q:为什么A需要等待超时连接?

这是为了保证 B 已经收到 ACK 包(第四次挥手),一旦ACK包在网络中丢失,B会一直停留在最后确认状态;
如果 B 此时没有收到A发送来的 ACK 包,会重发 FIN包(三次挥手时机)
客户端会响应这个 FIN 包,并且重发 ACK 包,并刷新超时时间
这个机制也是为了保障在不可靠的网络中进行连接断开确认

什么是 UDP 协议?

UDP 协议是直接将一组数据通过网卡发送出去,不需要连接,所以是无状态的;同时性能损耗小,资源占用少,缺点是稳定性弱。

区别对比
稳定性资源占用速度应用场景
TCP稳定较多相对较慢传输文件、发送邮件、浏览网页等
UDP弱(无状态)快(存在丢包风险)域名查询、语音、视频通话、直播场景等
UDP还用于隧道网络(例如 VPN、SDN 中的 VXLAN)
三次握手:

A: 上号
B:ok
A:等你

四次挥手:

A:分手吧
B:好
B:再见
A:拜

相关文章:

TCP/UDP 简介,三次握手与四次挥手

一、TCP 三次握手 目的:为了解决在不可靠的信道上建立可靠的网络连接 三次握手是连接请求的过程: A 发送连接请求的数据给 B(发送 SYN 包) B 同意连接,返回数据给 A(返回 SYNACK 包) A 收到后回…...

Windows Defender Control--禁用Windows安全中心

Windows Defender Control--禁用Windows安全中心 链接:https://pan.xunlei.com/s/VOJDuy2ZEqswU4sEgf12JthZA1?pwdtre6#...

数据仓库与数据湖的协同工作:智慧数据管理的双引擎

数据仓库与数据湖的协同工作:智慧数据管理的双引擎 引言 在数据驱动的今天,企业和组织收集和存储的数据量正以惊人的速度增长。如何高效管理和利用这些数据,成为了决策者和技术专家的共同难题。为了解决这一问题,数据仓库(Data Warehouse)和数据湖(Data Lake)这两种技…...

50. c++多维数组

在‘19 数组’中描述了原生数组的本质和其索引的原理,一维数组是连续的一个内存块,本质就是指针,指向这个内存块的起始位置,索引的原理就是对该指针的操作。通常对数组的操作一种策略就是使用指针,二维数组可以说是数组…...

用大模型学大模型05-线性回归

deepseek.com:多元线性回归的目标函数,损失函数,梯度下降 标量和矩阵形式的数学推导,pytorch真实能跑的代码案例以及模型,数据,预测结果的可视化展示, 模型应用场景和优缺点,及如何改进解决及改进方法数据推…...

苹果CMS站群插件的自动生成功能:提升网站流量的秘诀

引言 在数字营销的浪潮中,站群技术因其强大的流量引导能力而备受青睐。苹果CMS作为一款优秀的内容管理系统,凭借其灵活性和可扩展性,成为了站群管理的理想选择。本文将详细介绍苹果CMS站群插件的自动生成功能,探讨如何通过这一功…...

大语言模型中one-hot编码和embedding之间的区别?

1. 维度与稀疏性 One-Hot编码 定义:每个词被表示为一个高维稀疏向量,维度等于词汇表大小。例如,词汇表有10,000个词,每个词对应一个10,000维的向量,其中仅有一个位置为1(表示当前词)&#xff0…...

【Bluedroid】 BLE连接源码分析(一)

BLE链接过程分析见【Bluedroid】BLE连接过程详解-CSDN博客,本篇主要围绕HCI_LE_Create_Connection展开。基于Android14源码进行分析。在蓝牙低功耗技术中,设备之间建立连接是进行数据传输等操作的前提。HCI LE Extended Create Connection Command 提供了一种更灵活、功能更丰…...

【C语言】移除元素

移除元素 给你一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后…...

SQL与数据库程序设计

1.1986年,10月美国国家标准局颁布了SQL语言的美国标准,称为SQL86 2.SQL(Structured Query Language)又称为结构化查询语言 3.建立索引的主要目的是加快查找的速度 4.在基本表上建立一个或者多个索引 5. 一个基本表是最多只能建立一个聚簇索引 6.CAL…...

基于Java企业项目管理系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...

Blazor-设置组件焦点

在Razor中设置焦点我们需要用到ElementReference类型的变量,使用ref指令引用到设置焦点HTML的元素。 在Blazor中,ElementReference类型的作用是提供对HTML DOM元素的引用,以便在C#代码中通过JavaScript互操作(JS Interop&#xff…...

信用违约掉期(Credit Default Swap, CDS):金融市场的“保险”还是“定时炸弹”?(中英双语)

信用违约掉期(CDS):金融市场的“保险”还是“定时炸弹”? 引言 信用违约掉期(Credit Default Swap, CDS) 是金融市场中一种重要的衍生品,它最初被设计为债务违约的保险工具,但在实…...

Deepseek R1模型本地化部署与API实战指南:释放企业级AI生产力

摘要 本文深入解析Deepseek R1开源大模型的本地化部署流程与API集成方案,涵盖从硬件选型、Docker环境搭建到模型微调及RESTful接口封装的完整企业级解决方案。通过电商评论分析和智能客服搭建等案例,展示如何将前沿AI技术转化为实际生产力。教程支持Lin…...

核货宝多语言订货系统:打破语言障碍,拓展全球市场

在经济全球化的大背景下,企业的业务版图不断向全球扩张,国际贸易活动日益频繁。对于众多从事跨境贸易、跨国批发零售以及拥有广泛海外客户群体的企业而言,一款能够跨越语言障碍的多语言订货系统,已成为其在全球市场竞争中脱颖而出…...

【prompt示例】智能客服+智能质检业务模版

本文原创作者:姚瑞南 AI-agent 大模型运营专家,先后任职于美团、猎聘等中大厂AI训练专家和智能运营专家岗;多年人工智能行业智能产品运营及大模型落地经验,拥有AI外呼方向国家专利与PMP项目管理证书。(转载需经授权&am…...

在linux系统中安装Anaconda,并使用conda

系统 : ubuntu20.04 显卡:NVIDIA GTX1650 目录 安装Anaconda第一步:下载合适版本的Anconda1. 查看自己Linux的操作系统及架构命令:uname -a2. 下载合适版本的Anconda 第二步:安装Aanconda1. 为.sh文件设置权限2. 执行.sh文件2.1 .…...

基于 openEuler 构建 LVS-DR 群集

1、环境准备 准备好下面四台台服务器: 主机名IP角色openEuler-1192.168.121.11Director ServeropenEuler-2192.168.121.12Real Server1openEuler-3192.168.121.13Real Server2Rocky8192.168.121.51Client 2、Web服务器配置 在两台RS上安装并配置nginx服务&#…...

委托构造函数与继承构造函数

委托构造函数 允许同一类中的构造函数调用另一个构造函数,以复用初始化逻辑。 委托构造函数不能同时初始化成员变量,只能委托给其他构造函数。 避免循环委托(如构造函数A委托给B,B又委托给A)。 class MyClass { pu…...

EPLAN 自定义图框

一 , 还是先打开系统自带的图框,作为参考 二, 自定义图框 1. 新建图框 2. 绘制。下图描述有误,直接将系统默认图框文件复制,然后重命名,在这个基础上来进行编辑。 三, 使用 1. 更改默认图框 2…...

c++ gcc工具链

GCC(GNU Compiler Collection)是一套广泛使用的开源编译工具链,支持多种编程语言(如 C、C、Objective-C、Fortran 等),主要用于 Linux 和嵌入式开发环境。 组成 GCC 工具链主要由以下几个核心工具组成&am…...

基于51单片机的的鸡笼补光和恒温系统的设计与实现(源程序+Protues仿真+电路图+元件清单+器件手册)

编号:71 基于51单片机的的鸡笼补光和恒温系统的设计与实现 功能描述: 本设计由89C52单片机液晶12864显示模块声光报警电路温湿度传感器电路风扇电路LED照明电路光照检测电路GSM电路DS1302时钟电路 1.实现的功能 (1)采用DHT11温湿传感器、光敏电阻捕捉…...

es-head 正则查询和标准正则查询的差异

在es-head里面查询,需要查询字符串是一个json串,因此就要符合json串的格式,在es-head里面可以通过regexp做正则查询,而这里的正则表达式其实是写成字符串的形式的,因此就要面对字符串转义的问题,比如你想匹…...

【深度学习】深度学习和强化学习算法——深度 Q 网络DQN

深度 Q 网络(Deep Q-Network, DQN) 详解 什么是DQNDQN 的背景DQN 训练流程 2 DQN 的核心思想2.1 经验回放(Experience Replay)2.2 目标网络(Target Network)2.3 ε-贪心策略(ε-Greedy Policy&a…...

matlab模拟风场的随机脉动风

1、内容简介 matlab137-模拟风场的随机脉动风 可以交流、咨询、答疑 2、内容说明 略 模拟风场的随机脉动风,并进行相关的统计分析和计算,包括风速谱、空间相关性、自谱、互谱、以及POD(Proper Orthogonal Decomposition)分解等…...

2025年2月16日(numpy-deepseek)

嗯,用户让我介绍一下这段使用numpy的代码。首先,我需要确认用户的需求是什么。他们可能刚开始学习Python或者数据科学,所以需要基础的解释。让我仔细看一下代码。 第一行是import numpy as np,这应该是导入numpy库,并…...

x64和ARM的区别

x64和ARM是两种不同的处理器架构,它们在指令集、设计理念、应用场景和能耗效率等方面存在显著差异。以下是它们之间的主要区别: 1. **指令集架构**: * **x64**:x64架构,也称为x86-64或AMD64,是x86架…...

电解电容的参数指标

容量 这个值通常是室温25℃,在一定频率和幅度的交流信号下测得的容量。容量会随着温度、直流电压、交流电压值的变化而改变。 额定电压 施加在电容上的最大直流电压,通常要求降额使用。 例如额定电压是4V,降额到70%使用,最高施…...

如何在 Mac 上解决 Qt Creator 安装后应用程序无法找到的问题

在安装Qt时,遇到了一些问题,尤其是在Mac上安装Qt后,发现Qt Creator没有出现在应用程序中。通过一些搜索和操作,最终解决了问题。以下是详细的记录和解决方法。 1. 安装Qt后未显示Qt Creator 安装完成Qt后,启动应用程…...

Spring——Spring开发实战经验(1)

摘要 文章主要介绍了 Swagger 作为 API 文档生成和测试工具的功能,包括自动生成 API 文档、提供可视化调试界面、促进前后端协作、支持 OpenAPI 规范等。同时,还提及了 Spring Boot 与 Swagger3 的实战应用,以及 Spring 开发中其他相关技术内…...

设计模式:代理模式

代理模式是很常见的设计模式,即使没有专门学习过这种设计模式,在工作中也一定用过这种设计模式。在实际生活中,代理模式也是常见的,比如内阁首辅相对于皇帝,前者是后者的代理,内阁首辅收到奏折时&#xff0…...

【NLP】循环神经网络RNN

目录 一、认识RNN 二、RNN模型分类 三、传统RNN模型 3.1 结构分析 3.2 Pytorch构建RNN模型 3.3 优缺点 一、认识RNN RNN(Recurrent Neural Network),中文称作循环神经网络,一般以序列数据为输入,通过网络内部的结构设计有效捕捉序列之…...

深度解析HTTP/HTTPS协议:从原理到实践

深入浅出HTTP/HTTPS协议:从原理到实践 前言 在当今互联网世界中,HTTP和HTTPS协议如同空气般存在于每个网页请求的背后。作为开发者或技术爱好者,理解这些基础协议至关重要。本文将用六大板块,配合原理示意图和实操案例&#xff0…...

AF3 MmcifObject类解读

AlphaFold3 中 MmcifObject类 是 解析 mmCIF 文件的核心数据结构,用于存储解析后的蛋白质结构信息,包含PDB 头部信息、Biopython 解析的结构、链序列信息等。 下面代码包含 Monomer 、AtomSite、ResiduePosition、ResidueAtPosition、 MmcifObject以及ParsingResult数据类的…...

大数据SQL调优专题——Hive执行原理

引入 Apache Hive 是基于Hadoop的数据仓库工具,它可以使用SQL来读取、写入和管理存在分布式文件系统中的海量数据。在Hive中,HQL默认转换成MapReduce程序运行到Yarn集群中,大大降低了非Java开发者数据分析的门槛,并且Hive提供命令…...

MySQL常见错误码及解决方法(1130、1461、2003、1040、2000、1049、1062、1129、2002、1690等)

目录 【问题1】、FATAL: error 1130: Unknown error 1130 【问题2】、FATAL: error: 1461 【问题3】、ERROR 2003 (HY000): Cant connect to MySQL server on "" (113) 【问题4】、FATAL: error 2003: Cant connect to MySQL server on 172.19.111.151 (111) 【问…...

类和对象详解(下)-----运算符重载

目录 1.运算符重载 2.赋值运算符重载 3.取地址运算符重载 3.1const成员函数 3.2取地址运算符重载 1.运算符重载 什么是运算符重载呢?简单举个例子就懂了。 就是我想实现日期的加法,而“”这个运算符C只实现了内置类型的加法,而我们要想实…...

Visonpro 检测是否有缺齿

一、效果展示 二、上面是原展开工具CogPolarUnwrapTool; 第二种方法: 用Blob 和 CogCopyRegionTool 三、 用预处理工具 加减常数,让图片变得更亮点 四、圆展开工具 五、模板匹配 六、代码分解 1.创建集合和文子显示工具 CogGraphicCollec…...

(萌新入门)如何从起步阶段开始学习STM32 ——2 我应该学习HAL库还是寄存器库?

概念 笔者下面需要介绍的是库寄存器和HAL库两个重要的概念,在各位看完之后,需要决定自己的学习路线到底是学习HAL呢?还是寄存器呢?还是两者都学习呢? 库寄存器 库寄存器就是简单的封装了我们对寄存器的操作&#xf…...

【SQL技术】不同数据库引擎 SQL 优化方案剖析

一、引言 在数据处理和分析的世界里,SQL 是不可或缺的工具。不同的数据库系统,如 MySQL、PostgreSQL(PG)、Doris 和 Hive,在架构和性能特点上存在差异,因此针对它们的 SQL 优化策略也各有不同。这些数据库…...

什么是原型?

在 JavaScript 中,原型(Prototype)是每个 JavaScript 对象都有的一个属性,用来实现对象之间的继承。原型是 JavaScript 面向对象编程的核心概念之一,通过原型链(prototype chain),一…...

【第10章:自然语言处理高级应用—10.4 NLP领域的前沿技术与未来趋势】

各位技术探险家们,今天我们要开启一场穿越语言智能奇点的时空之旅。从正在改写物理定律的万亿参数大模型,到能看懂《星际穿越》剧本的跨模态AI,再到正在颠覆编程方式的神经-符号混合系统……这篇万字长文将带你摸清NLP技术进化的七块关键拼图。(建议边读边做笔记,文末有技…...

41.日常算法

1.面试题 02.04. 分割链表 题目来源 给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。你不需要 保留 每个分区中各节点的初始相对位置。 示例 1: 输入&#xff1a…...

CPP集群聊天服务器开发实践(五):nginx负载均衡配置

1 负载均衡器的原理与功能 单台Chatserver可以容纳大约两万台客户端同时在线聊天,为了提升并发量最直观的办法需要水平扩展服务器的数量,三台服务器可以容纳六万左右的客户端。 负载均衡器的作用: 把client的请求按照负载均衡算法分发到具体…...

Java 中的 HashSet 和 HashMap 有什么区别?

一、核心概念与用途 特性HashSetHashMap接口实现实现 Set 接口(存储唯一元素)实现 Map 接口(存储键值对)数据存储存储单个对象(元素唯一)存储键值对(键唯一,值可重复)典…...

AI大模型的技术突破与传媒行业变革

性能与成本:AI大模型的“双轮驱动” 过去几年,AI大模型的发展经历了从实验室到产业化的关键转折。2025年初,以DeepSeek R1为代表的模型在数学推理、代码生成等任务中表现超越国际头部产品,而训练成本仅为传统模型的几十分之一。这…...

Golang学习01:Go安装和配置+Vscode、GoLand安装激活+Go环境变量避坑的超详细教程

🪁🍁 希望本文能给您带来帮助,如果有任何问题,欢迎批评指正!🐅🐾🍁🐥 文章目录 一、背景二、Go语言安装2.1 Go语言环境安装2.2 Go语言环境验证2.3 其他配置 三、开发环境…...

案例-06.部门管理-根据ID查询

一.根据ID查询-接口文档 二.根据ID查询-Controller层 package com.gjw.controller;/*** 部门管理Controller*/import com.gjw.anno.Log; import com.gjw.pojo.Dept; import com.gjw.pojo.Result; import com.gjw.service.DeptService; import com.gjw.service.impl.DeptServi…...

解决No matching client found for package name xxx编译报错的问题

如果Android工程编译报错,并且信息如下: Execution failed for task :app:processDebugGoogleServices. > No matching client found for package name com.demo.test可能的原因为google-services.json中定义的package_name属性跟app当前的包名不符&…...

基于deepseek api和openweather 天气API实现Function Calling技术讲解

以下是一个结合DeepSeek API和OpenWeather API的完整Function Calling示例,包含意图识别、API调用和结果整合: import requests import json import os# 配置API密钥(从环境变量获取) DEEPSEEK_API_KEY os.getenv("DEEPSEE…...