TCP/UDP的连接机制
TCP/UDP的连接机制
TCP的连接机制
TCP(Transmission Control Protocol)是一种面向连接的协议,提供可靠的、按顺序的数据传输服务。TCP的连接机制包括连接建立、数据传输和连接终止。
1. 连接建立(三次握手)
TCP通过“三次握手”建立一个可靠的连接:
-
SYN(同步序列编号):
- 客户端向服务器发送一个SYN报文段,指示客户端打算建立连接,并同步序列号。该报文段包括一个初始序列号(ISN)。
- 报文段格式:
SYN=1, seq=x
-
SYN-ACK(同步-确认):
- 服务器收到SYN报文段后,向客户端发送一个SYN-ACK报文段,确认收到客户端的SYN,并回复一个自己的SYN报文段。服务器也生成一个初始序列号。
- 报文段格式:
SYN=1, ACK=1, seq=y, ack=x+1
-
ACK(确认):
- 客户端收到服务器的SYN-ACK报文段后,向服务器发送一个确认报文段(ACK),表示连接建立完成。
- 报文段格式:
ACK=1, seq=x+1, ack=y+1
2. 数据传输
连接建立后,双方可以开始传输数据。数据传输过程中,TCP通过以下机制保证数据的可靠性和顺序:
- 序列号(Sequence Number):每个字节的数据都有一个序列号,用于确保数据按顺序到达。
- 确认号(Acknowledgment Number):接收方使用确认号通知发送方已成功接收到的数据。
- 窗口控制(Window Control):用于流量控制,防止发送方发送过多的数据使接收方来不及处理。
- 重传机制(Retransmission):发送方在超时未收到确认时会重传数据。
3. 连接终止(四次挥手)
TCP通过“四次挥手”终止一个连接:
-
FIN(结束):
- 主动关闭的一方发送一个FIN报文段,表示不再发送数据。
- 报文段格式:
FIN=1, seq=u
-
ACK(确认):
- 被动关闭的一方收到FIN报文段后,发送一个确认报文段(ACK),表示收到请求,但仍有未完成的数据需要发送。
- 报文段格式:
ACK=1, seq=v, ack=u+1
-
FIN(结束):
- 被动关闭的一方完成数据传输后,发送一个FIN报文段,表示可以关闭连接。
- 报文段格式:
FIN=1, seq=w
-
ACK(确认):
- 主动关闭的一方收到FIN报文段后,发送一个确认报文段(ACK),表示连接关闭完成。
- 报文段格式:
ACK=1, seq=u+1, ack=w+1
UDP的连接机制
UDP(User Datagram Protocol)是一种无连接的协议,不提供可靠的、按顺序的数据传输服务。UDP的连接机制简单且高效,适用于对实时性要求高的应用。
1. 无连接性
- 数据报(Datagram):UDP将数据封装成数据报进行传输,每个数据报独立传输,不需要建立和终止连接。
- 无连接:UDP不建立连接,发送方和接收方之间不进行握手过程,直接发送数据。
2. 数据传输
- 不可靠传输:UDP不保证数据到达目的地,也不保证数据顺序。数据可能会丢失、重复或乱序。
- 低延迟:由于没有握手和连接管理机制,UDP的传输延迟较低,适用于视频流、在线游戏等实时应用。
3. 头部格式
- 头部字段:
- 源端口(Source Port):发送方端口号。
- 目的端口(Destination Port):接收方端口号。
- 长度(Length):整个UDP报文的长度,包括头部和数据部分。
- 校验和(Checksum):用于检测数据在传输过程中是否发生错误。
总结
TCP
- 面向连接:需要通过三次握手建立连接,四次挥手终止连接。
- 可靠传输:提供数据重传、流量控制和错误校验。
- 适用场景:文件传输、邮件、网页浏览等需要可靠传输的应用。
UDP
- 无连接:不建立连接,直接发送数据。
- 不可靠传输:不保证数据到达和顺序,低延迟。
- 适用场景:视频流、在线游戏、实时通信等对实时性要求高的应用。
理解TCP和UDP的连接机制及其应用场景,有助于根据具体需求选择合适的传输协议。
相关文章:
TCP/UDP的连接机制
TCP/UDP的连接机制 TCP的连接机制 TCP(Transmission Control Protocol)是一种面向连接的协议,提供可靠的、按顺序的数据传输服务。TCP的连接机制包括连接建立、数据传输和连接终止。 1. 连接建立(三次握手) TCP通过…...
供应链金融模式学习资料
目录 产生背景 供应链金融的诞生 供应链金额的六大特征...
代码随想录-算法训练营day50【动态规划12:最佳买卖股票时机含冷冻期、买卖股票的最佳时机含手续费、股票问题总结】
代码随想录-035期-算法训练营【博客笔记汇总表】-CSDN博客 第九章 动态规划part12● 309.最佳买卖股票时机含冷冻期 ● 714.买卖股票的最佳时机含手续费 ●总结309.最佳买卖股票时机含冷冻期 本题加了一个冷冻期,状态就多了,有点难度,大家要把各个状态分清,思路才能清晰…...
Dilworth 定理
这是一个关于偏序集的定理,事实上它也可以扩展到图论,dp等中,是一个很有意思的东西 偏序集 偏序集是由集合 S S S以及其上的一个偏序关系 R R R定义的,记为 ( S , R ) (S,R) (S,R) 偏序关系: 对于一个二元关系 R ⊂…...
BUUCTF---web---[BJDCTF2020]ZJCTF,不过如此
1、点开连接,页面出现了提示 传入一个参数text,里面的内容要包括I have a dream。 构造:?/textI have a dream。发现页面没有显示。这里推测可能得使用伪协议 在文件包含那一行,我们看到了next.php的提示,我们尝试读取…...
力扣刷题---2206. 将数组划分成相等数对【简单】
题目描述🍗 给你一个整数数组 nums ,它包含 2 * n 个整数。 你需要将 nums 划分成 n 个数对,满足: 每个元素 只属于一个 数对。 同一数对中的元素 相等 。 如果可以将 nums 划分成 n 个数对,请你返回 true …...
2461. 长度为 K 子数组中的最大和(c++)
给你一个整数数组 nums 和一个整数 k 。请你从 nums 中满足下述条件的全部子数组中找出最大子数组和: 子数组的长度是 k,且子数组中的所有元素 各不相同 。 返回满足题面要求的最大子数组和。如果不存在子数组满足这些条件,返回 0 。 子数…...
range for
1. 基于范围的for循环语法 C11标准引入了基于范围的for循环特性,该特性隐藏了迭代器 的初始化和更新过程,让程序员只需要关心遍历对象本身,其语法也 比传统for循环简洁很多: for ( range_declaration : range_expression ) {loo…...
leetcode230 二叉搜索树中第K小的元素
题目 给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。 示例 输入:root [5,3,6,2,4,null,null,1], k 3 输出:3 解析 这道题应该是能做出…...
.Net Core学习笔记 框架特性(注入、配置)
注:直接学习的.Net Core 6,此版本有没有startup.cs相关的内容 项目Program.cs文件中 是定义项目加载 启动的地方 //通过builder对项目进行配置、服务的加载 var builder WebApplication.CreateBuilder(args); builder.Services.AddControllers();//将…...
利用AI技术做电商网赚,这些百万级赛道流量,你还不知道?!
大家好,我是向阳 AI技术的飞速扩展已经势不可挡,不管你承不承认,AI 已经毫无争议的在互联网中占有一席之地了 无论你是做内容产业的,还是做电商的,你现在都躲不开 AI。 现在互联网行业的竞争就是这么残酷 互联网行业…...
leetcode-560 和为k的数组
一、题目描述 给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 注意:nums中的元素可为负数 输入:nums [1,1,1], k 2 输出:2输入:num…...
Spring Boot实战指南:从入门到企业级应用构建
目录 一、引言 二、快速入门 1. 使用Spring Initializr创建项目 三、Spring Boot基础概念与自动配置 1. 理解SpringBootApplication注解 2. 自动配置原理 3. 查看自动配置报告 四、Spring Boot核心特性及实战 1. 外部化配置 2. Actuator端点 3. 集成第三方库 五、Sp…...
OneAPI接入本地大模型+FastGPT调用本地大模型
将Ollama下载的本地大模型配置到OneAPI中,并通过FastGPT调用本地大模型完成对话。 OneAPI配置 新建令牌 新建渠道 FastGPT配置 配置docker-compose 配置令牌和OneAPI部署地址 配置config.json 配置调用的渠道名称和大模型名称 {"systemEnv": {&qu…...
Training-Free Consistent Text-to-Image Generation # 论文阅读
URL https://arxiv.org/pdf/2402.03286 TL;DR 2024 年 2 月 nvidia 的文章。提出了一种不需要任何额外训练的主体保持方法,可以一次生成的 batch 中,通过多个 prompt 生成对应的多张图片,这些图片都可以拥有一个主体。 本文提出的方法通过…...
Spring 中常用的手动装载 bean 方法
在 Spring 的 bean 装载条件中,虽然 Spring 给我们提供了非常好用便捷的 Condition 相关注解,但是很多时候 Condition 相关注解并不满足我们的需求,我需要更复杂的条件手动控制是否装置 bean。这个时候我们就可以实现 Spring 为我们提供的几个…...
如何合理设置Java线程池大小
如何合理设置Java线程池大小:依据任务类型定制策略 Java线程池的合理配置直接关系到系统性能和资源利用率。根据任务性质的不同,合理的线程池大小设置策略也有所区别,主要包括CPU密集型、IO密集型及混合型任务。 1. CPU密集型任务 特点&am…...
python3 pandas
pandas - Python Data Analysis Library...
【B站 heima】小兔鲜Vue3 项目学习笔记Day02
文章目录 Pinia1.使用2. pinia-计数器案例3. getters实现4. 异步action5. storeToRefsx 数据解构保持响应式6. pinia 调试 项目起步1.项目初始化和git管理2. 使用ElementPlus3. ElementPlus 主题色定制4. axios 基础配置5. 路由设计6. 静态资源初始化和 Error lens安装7.scss自…...
RedisTemplate 实现基于 Value 操作的简易锁机制
在高并发场景下,确保操作的原子性和避免竞态条件至关重要。Redis 提供了丰富的数据结构和操作,是实现分布式锁的一个高效选择。本文将介绍如何使用 RedisTemplate 的 opsForValue().setIfAbsent() 方法来实现一种简单的锁机制,并提供一个示例…...
Qwen3.5-9B图文对话实战:工业设备铭牌识别+参数查询+维保周期提醒
Qwen3.5-9B图文对话实战:工业设备铭牌识别参数查询维保周期提醒 1. 项目概述 Qwen3.5-9B是一款拥有90亿参数的开源大语言模型,特别适合工业场景下的图文对话应用。这个项目展示了如何利用其多模态能力,实现工业设备铭牌识别、参数查询和维保…...
Phi-4-mini-reasoning部署教程:容器化打包(Dockerfile)+ NVIDIA Container Toolkit
Phi-4-mini-reasoning部署教程:容器化打包(Dockerfile) NVIDIA Container Toolkit 1. 项目概述 Phi-4-mini-reasoning是微软推出的3.8B参数轻量级开源模型,专为数学推理、逻辑推导、多步解题等强逻辑任务设计。这款模型主打&quo…...
ide-eval-resetter:突破JetBrains IDE试用期限制的创新方案——2026开发者必备指南
ide-eval-resetter:突破JetBrains IDE试用期限制的创新方案——2026开发者必备指南 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 问题引入:JetBrains IDE试用期限制的痛点分析 作为开发…...
激光+视觉+IMU+RTK融合实战:如何用多传感器打造厘米级三维重建系统?
激光视觉IMURTK融合实战:如何用多传感器打造厘米级三维重建系统? 在自动驾驶和机器人领域,三维重建技术正经历着从实验室走向工业落地的关键转折。传统单一传感器方案已无法满足复杂场景下的精度需求,而多传感器融合正成为突破性能…...
Redis 用错接口反而更慢?高并发下这几个坑,90% 后端都踩过
前言线上出过一个特别反直觉的故障:接口本来直连 MySQL 跑得好好的,加上 Redis 缓存后,响应时间直接翻倍,CPU 还往上飘。一开始怀疑网络、怀疑 Redis 性能、怀疑代码 Bug,排查一整天才发现:缓存逻辑没错&am…...
OpenCASCADE实战:如何正确获取3D模型面的法向(附完整代码示例)
OpenCASCADE实战:3D模型面法向的高效获取与方向校正 在三维建模与几何处理领域,准确获取模型表面的法向向量是许多高级操作的基础。无论是进行碰撞检测、光照计算还是有限元分析,法向数据的准确性直接影响最终结果的可靠性。OpenCASCADE作为一…...
Anaconda虚拟环境管理:为春联生成模型创建独立Python空间
Anaconda虚拟环境管理:为春联生成模型创建独立Python空间 你是不是也遇到过这种情况?电脑上装了好几个Python项目,有的需要TensorFlow 2.0,有的却只能用TensorFlow 1.x,结果为了运行一个项目,把整个系统的…...
从make clean到build.prop:揭秘Android系统属性生成的完整链条
从make clean到build.prop:揭秘Android系统属性生成的完整链条 当你通过adb shell getprop ro.build.display.id查看设备版本号时,是否好奇过这个字符串背后的生成逻辑?在Android编译系统中,从Makefile执行到最终生成build.prop文…...
RB3201-RBProtocol:ESP32机器人轻量通信协议栈解析
1. RB3201-RBProtocol 库深度解析:面向机器人控制的轻量级嵌入式通信协议栈 1.1 协议背景与工程定位 RB3201-RBProtocol 是由 RoboticsBrno 团队开发的嵌入式通信协议库,专为 ESP32 平台设计,核心目标是实现与 Android 端 RbController 移动…...
CST仿真EIT电磁诱导透明:石墨烯建模与案例分析
CST仿真eit电磁诱导透明(包括石墨烯的建模) EIT石墨烯电磁诱导透明案例搞EIT仿真的都知道,传统金属结构虽然经典,但石墨烯的可调性才是现在的香饽饽——靠栅压就能调费米能级,相当于给器件装了个电控遥控器,在传感器、慢光器件里简…...
