拥塞控制与TCP子问题(粘包问题,异常情况等)
拥塞控制
除了拥塞控制
以上的策越都是为了解决tcp 客户端和服务端提高效率,解决丢包的策略
但是拥塞控制是了为解决网络拥堵
出现了大面积丢包,我们发送方会判定是网络出现了问题?
丢包好解决,我们直接采用超时重传,但是此时网络已经出问题了,你再重传,不还是丢包吗,并且网络出问题,其他服务器也会出现问题,此时大量的报文重传,对网络造成更的重创
TCP考虑了网络,出现大面积丢包->判断网络出现堵塞->拥堵避免算法

虽然TCP有了滑动窗口这个大杀器,能够高效可靠的发送大量的数据,但是如果在刚开始阶段就发送大量的数据,仍然可能引发问题.
因为网络上有很多的计算机,可能当前的网络状态就已经比较拥堵,在不清楚当前网络状态下,贸然发送大量的数据是很有可能引起雪上加霜的.
拥塞窗口
拥塞窗口采用慢启动策略
慢启动策略 2的n次方 以指数级增长
前期慢,增数快

拥塞窗口就是一个数字,放发送数据量超过了拥塞窗口,就很大概率,引发网络拥塞
滑动窗口不仅仅考虑对方接受数据能力的多少,还要考虑网络情况
滑动窗口决定了我们一次发送数据量的大小
要做到上面两点?
滑动窗口大小=min(拥塞窗口,对方窗口大小)
滑动窗口初始end=min(拥塞窗口,对方窗口大小)
我们需要担心后期指数增速太快,造成网络拥塞?
a.不用担心,滑动窗口大小=min(拥塞窗口,对方窗口大小),当拥塞床快增长到一定程度,会被对方窗口大小所牵制
b.我们还引入了慢启动的阈值 ssthresh,当超过阈值,指数增长变成线性增长,造成了网络拥塞,我们直接将拥塞窗口降为1,但此时我们已经知道会引起网络拥塞的最大典,后面增长就可以避免拥塞,这种策越我们就叫做拥塞控制算法
但是网络窗口不会停止变化,它要一直变化,对网络的状况进行检测

tips:这张图并不是网络实际的发送量,还要考虑对方的窗口大小
总结: 通过控制拥塞窗口和慢启动阈值达到发送数据速率达到最大值就叫拥塞控制
Tcp想要尽快的传输数据给对方,又要考虑网络拥堵所采取的折中的方案
延迟应答
如果接收数据的主机立刻返回ACK应答, 这时候返回的窗口可能比较小.
提高了tcp传输效率

当主机A发出第一个报文,主机B可以等一等,再应答,等主机发了地等上层取走缓冲区的数据,主机B可以给主机A一个更大的窗口。
捎带应答
发送ACK+数据的报文
确认序号填的就是ACK的确认序号
序号填的是数据序号
合在一起就叫捎带应答

TCP子问题
面向字节流
创建TCP的一个socket,同时会在内核中创建发送缓冲区和接受缓冲区
可能10个报文的数据都是在缓冲区的,也可能是20个,我们不管,我们只要考虑上层从缓冲区读取一个个字节再到上层进行处理。
粘包问题
没有定任何协议,我们没有对从缓冲区读取的字节流做处理,导致数据多读或少读,导致数据粘黏
由用户层定义协议就是为了解决数据粘包问题
例如http按行读取报头,再读到空行,再读到携带数据。解决了基于tcp的http协议的粘包问题
而udp有没有这个问题呢?
没有,他是以数据包的形式发送的
所以我们用户使用tcp得解决两个问题?
1.解决粘包问题
2.对数据进行序列化和反序列化
Tcp异常情况
进程终止:自动正常关闭(四次挥手)
机器重启:提示用户是否关闭进程
机器断电/拔网线:没机会四次挥手,服务端会保活,试探客户端是否还活着。
网线一拔一插:客户端建立新连接,但莫名收到服务器上一次连接的报文,此时客户端发送RST,立即终止旧的连接。
相关文章:
拥塞控制与TCP子问题(粘包问题,异常情况等)
拥塞控制 除了拥塞控制 以上的策越都是为了解决tcp 客户端和服务端提高效率,解决丢包的策略 但是拥塞控制是了为解决网络拥堵 出现了大面积丢包,我们发送方会判定是网络出现了问题? 丢包好解决,我们直接采用超时重传&#…...
stm32入门教程--DMA 超详细!!!
目录 简介 工作模式 1、数据转运DMA 2、ADC扫描模式DMA 简介 工作模式 1、数据转运DMA 这个例子的任务是将SRAM的数组DataA,转运到另一个数组DataB中,这个基本结构里的各个参数应该如何配置呢? 首先是外设站点和存储器站点的起始地址、…...
【使用Flask构建RESTful API】从零开始开发简单的Web服务!
使用Flask构建RESTful API:从零开始开发简单的Web服务 引言 随着Web应用程序的广泛使用,RESTful API已成为现代Web服务的核心技术之一。通过RESTful API,我们可以轻松地创建、读取、更新和删除(CRUD)数据,…...
用sdcc给51单片机编译C程序
学习单片机大部分人用的是Keil uVision,虽然好用,可大部分人用的是盗版,其实单片机程序小的话,完全可以用文本编辑器(推荐notepad)编写,然后用免费的sdcc来编译,下面介绍一下大致的过程。 sdcc…...
Java Lock LockSupport 源码
前言 相关系列 《Java & Lock & 目录》(持续更新)《Java & Lock & LockSupport & 源码》(学习过程/多有漏误/仅作参考/不再更新)《Java & Lock & LockSupport & 总结》(学习总结/最新…...
Elasticsearch基础操作入门
阅前准备知识 学习 Elasticsearch (简称 ES) 的查询方式,建议从以下几个步骤入手: 理解 Elasticsearch 的基础概念 首先要了解 Elasticsearch 的核心概念,例如: Index(索引):相当于数据库中…...
跨域问题解决办法
跨域问题在Web开发中是一个常见的问题,特别是在前后端分离的开发模式下。以下是一些解决跨域问题的办法: 一、后端配置CORS(跨来源资源共享) CORS是一种机制,它使用额外的HTTP头来告诉浏览器一个网页的当前来源&…...
【数据结构与算法】力扣 23. 合并 K 个升序链表
题干描述 23. 合并 K 个升序链表 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 1: 输入: lists [[1,4,5],[1,3,4],[2,6]] 输出: [1,1,2,3,4,4,5,6]…...
Java Lock CountDownLatch 总结
前言 相关系列 《Java & Lock & 目录》(持续更新)《Java & Lock & CountDownLatch & 源码》(学习过程/多有漏误/仅作参考/不再更新)《Java & Lock & CountDownLatch & 总结》(学习总…...
vue+spreadjs开发
创建vue3项目 pnpm create vite --registryhttp://registry.npm.taobao.org安装spreadjs包 pnpm install "grapecity-software/spread-sheets17.1.7" "grapecity-software/spread-sheets-resources-zh17.1.7" "grapecity-software/spread-sheets-vu…...
针对初学者的PyTorch项目推荐
文章目录 1. MNIST手写数字识别2. CIFAR-10图像分类3. 图像风格迁移4. 文本生成(使用RNN)5. 简单的问答系统6. 简单的生成对抗网络(GAN)7. 简单的推荐系统 对于初学者来说,选择一些简单且具有教育意义的项目来实践PyTo…...
Helm Chart文件介绍
介绍(这个还没有完善 ,目前在找工作呢) Helm是Kubernetes的包管理器,类似于Ubuntu中的apt、CentOS中的yum或Python中的pip,可以快速查找、下载和安装软件包。Helm主要由客户端组件helm和服务端组件Tiller组成…...
1Panel 是新一代的 Linux 服务器运维管理面板
1Panel 是一款新一代的 Linux 服务器运维管理面板,旨在通过现代化的 Web 界面帮助用户轻松管理 Linux 服务器。它集成了主机监控、文件管理、数据库管理、容器管理等功能,并且支持多语言和国际化,包括英语、中文(繁体)和日语。以下是 1Panel …...
Qml-ShaderEffect的使用
Qml-ShaderEffect的使用 ShaderEffect的概述 ShaderEffect使用自定义的顶点和片段着色器用于渲染一个矩形。用于在qml场景中添加阴影、模糊、着色和页面卷曲等效果。 Qt5和Qt6中ShaderEffect有一定区别,在Qt6中由于支持不同的渲染API,ShaderEffect是用…...
鸿蒙next之axios二次封装并携带cookie
由于官方提供的ohos.net.http模块,直接使用不是很灵活,就引入了第三方ohos/axios库。 以下是引入axios并进行二次封装的步骤: 1、DevEco Studio打开终端输入命令安装插件 ohpm install ohos/axios 2、新建RequestUtil.ets import { JSON, …...
WordPress中最值得推荐的AI插件:专家级指南
WordPress平台上,人工智能(AI)技术不断发展,为用户提供了丰富的工具和功能。对于有经验的用户,这些工具不仅能提升网站性能和用户体验,还能在安全和互动方面提供更多支持。在这篇文章中,我将为大…...
HTTP介绍及请求过程
HTTP(HyperText Transfer Protocol),即超文本传输协议,是一种用于分布式、协作式和超媒体信息系统的应用层协议。以下是关于 HTTP 的详细介绍: 一、基本概念 定义与作用: HTTP 是互联网上应用最为广泛的一种网络协议,它定义了客户端和服务器之间请求和响应的标准方式。…...
WebGL进阶(五)-可视域
理论基础: 顶点着色器 Vertex Shader 主要是负责处理顶点位置、顶点颜色、顶点向量等顶点的数据;处理一些顶点的变换:例如在进行视图变换和投影变换时MVP矩阵会改变顶点的位置信息。 输入: 顶点着色器输入部分主要是声明&…...
2024性价比家居好物有哪些?推荐五款值得每个家庭拥有的好物品牌!
每年双11的时候我都特别喜欢买一些家居好物,今年双11也不例外,经过我一两周的精心挑选,专门选了五款性价比高的家居好物,接下来给大家分享一下! 家居好物一、希亦ACE Pro内衣洗衣机 我买过、评测过的内衣洗衣机&#…...
字节青训-查找热点数据问题
问题描述 给你一个整数数组 nums 和一个整数 k,请你返回其中出现频率前 k 高的元素。请按升序排列。 1 < nums.length < 10^5k 的取值范围是 [1, 数组中不相同的元素的个数]题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合…...
从ARXML文件反推软件架构:一个ComM模块的配置实例如何映射到你的C代码
从ARXML到C代码:ComM模块配置的逆向工程实战 当你第一次打开ComM_Cfg_SWCD.arxml文件时,那些层层嵌套的XML标签是否让你感到无从下手?作为AUTOSAR开发中最关键的配置文件之一,ARXML实际上是一张精确的"施工图纸"&#x…...
如何通过5个关键步骤实现Altair GraphQL Client与GitHub的高效团队协作开发
如何通过5个关键步骤实现Altair GraphQL Client与GitHub的高效团队协作开发 【免费下载链接】altair ✨⚡️ A feature-rich GraphQL Client for all platforms. 项目地址: https://gitcode.com/gh_mirrors/alta/altair Altair GraphQL Client是一款功能丰富的跨平台Gra…...
3款高效AI答题工具助力B站硬核会员试炼
3款高效AI答题工具助力B站硬核会员试炼 【免费下载链接】bili-hardcore bilibili 硬核会员 AI 自动答题脚本,直接调用 B 站 API,非 OCR 实现 项目地址: https://gitcode.com/gh_mirrors/bi/bili-hardcore B站硬核会员试炼要求用户在100道专业题目…...
Ostrakon-VL扫描终端部署案例:单卡A10G跑通全任务链(上传→推理→终端输出)
Ostrakon-VL扫描终端部署案例:单卡A10G跑通全任务链(上传→推理→终端输出) 1. 项目背景与价值 在零售与餐饮行业,每天需要处理大量商品识别、货架巡检等重复性视觉任务。传统方案通常面临两个痛点:一是专业级识别系…...
GPEN多场景实战落地:覆盖个人、企业、政府的图像增强应用
GPEN多场景实战落地:覆盖个人、企业、政府的图像增强应用 1. 引言:从模糊到清晰,AI如何重塑我们的视觉记忆 你有没有翻出过一张老照片,画面里的人脸模糊得只剩下轮廓,想看清细节却无能为力?或者ÿ…...
5分钟掌握YetAnotherKeyDisplayer:专业按键可视化工具终极指南
5分钟掌握YetAnotherKeyDisplayer:专业按键可视化工具终极指南 【免费下载链接】YetAnotherKeyDisplayer The application for displaying pressed keys of the keyboard 项目地址: https://gitcode.com/gh_mirrors/ye/YetAnotherKeyDisplayer YetAnotherKey…...
NAssistant上位机实战:从TOFSense数据解析到固件升级全流程
1. NAssistant上位机初识:连接TOFSense的起点 第一次打开NAssistant上位机时,那个简洁的灰色界面可能会让你觉得无从下手。别担心,我刚开始用的时候也是这样。这个由Nooploop开发的工具其实设计得非常直观,只是需要一点时间来熟悉…...
Windows Cleaner完全指南:如何快速解决C盘爆红和系统卡顿问题
Windows Cleaner完全指南:如何快速解决C盘爆红和系统卡顿问题 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner Windows Cleaner是一款专为Windows系统设…...
如何在5分钟内免费激活Windows和Office?KMS_VL_ALL_AIO智能脚本终极指南
如何在5分钟内免费激活Windows和Office?KMS_VL_ALL_AIO智能脚本终极指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统激活和Office办公软件激活而烦恼吗&#x…...
OpenClaw 企业级实战:Java 微服务集成 AI 智能体,自动处理业务流
文章目录当你的微服务开始"自己思考"OpenClaw 到底是个啥?别被概念吓住架构设计:让 Java 微服务和 AI 智能体"合伙创业"整体架构草图为什么非得用 Java?Python 不香吗?实战准备:Spring AI 与 Open…...
