用户区网络缓冲区

news2024/11/16 0:45:08

用户区网络缓冲区

为什么要有用户层缓冲区

TCP内核协议栈,每个连接都有一个接收缓冲区和一个发送缓冲区,为啥用户层也要有:

  1. 为啥要有接收缓冲区
    • 生产者速度大于消费者速度:客户端发送地太快,服务器处理不过来,需要先放到用户态缓冲区
    • TCP基于流,需要进行粘包处理
  2. 为啥要有发送缓冲区
    • 要发送的数据可能大于发送缓冲区剩余空间, n=send(fd,size),size-n就是需要置入缓冲区的数据

而对于UDP,其内核没有发送缓冲区,如果想实现udp可靠传输,也需要设计用户态发送缓冲区、序列号、确认号、超时重传机制等

其次,UDP虽然基于报文传输,没有粘包问题,但还是需要面临内核协议栈接收缓冲区满的问题,因此,也需要设计用户态的接收缓冲区

用户缓冲区设计

以接收缓冲区为例:

  1. 定长缓冲区:一个数组,当前部分的数据被取走后,后面的数据需要往前移动,很麻烦
  2. 环形缓冲区:逻辑上环形,其实也是一个数组,进行取余操作,当缓冲区满时,追加的数据填充到前端;可以将数组的长度设置为2^n,这样就可以将数组的取余运算转换为位运算
    • 有个缺点:数据分散问题,数据可能一部分在数组尾部,一部分在数组头部,需要accept两次
    • 假设是发送缓存区,分散的数据要分两次send到内核发送缓冲区,同样是两次系统调用
  3. 链式缓冲区:多个数组链接起来,缓冲区满了时在后面新增一个数组。(这样还是可能产生数据分散的问题,需要accept两次)
20230131231143

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/190318.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringWebflux 执行流程和核心 API

SpringWebflux 基于 Reactor,默认使用容器是 Netty,Netty 是高性能的 NIO 框架,异步非阻 塞的框架 Netty_百度百科 (baidu.com)BIO、NIO、AIO_y_凉介的博客-CSDN博客_bin nio (1)Netty BIO 每一个请求过来会占用一个…

【系列05】类与对象 面向对象 封装继承多态 类 内部类

面向对象😁 文章为本人随课程记录笔记形成 跟随老师"秦疆(遇见狂神说)" 非常欢迎大家在文章下面留言评论互相交流,也欢迎大家有问题可以联系本人或者本人公众号 😉学思则安 参考课程https://www.kuangstudy.com/course?cid1 有问…

Vue3通透教程【一】Vue3现状—必然趋势?

文章目录🌟 专栏介绍🌟 Vue默认版本🌟 拥抱Vue3的UI🌟 Vue3显著优势🌟 专栏介绍 凉哥作为 Vue 的忠诚粉丝输出过大量的 Vue 文章,应粉丝要求开始更新 Vue3 的相关技术文章,Vue 框架目前的地位大…

现在什么款式运动无线耳机好、最适合运动的无线蓝牙耳机推荐

随着经济越来越好,人们的生活质量提高,我们对健康也是更加重视了。越来越多人开始“动起来”。健康运动,自然少不了专业的运动耳机。一副适合的运动耳机对我们锻炼身体有着事半功倍的作用,那么有哪些品牌值得推荐呢?小…

论文笔记(1):Large Language Models are few(1)-shot Table Reasoners

文章目录AbstractIntroductionRelated worksMethodExperimentdatasetbaselinesresultsmain resultsanalysisLimitationAbstract 已有研究表明,大型语言模型(LLM)在文本的少样本推理中表现excellent,本文证明LLM在表结构的f复杂少样本推理中表现也很comp…

【数据结构基础】树 - 二叉搜索树(BST)

本文主要介绍 二叉树中最基本的二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空&#xff0…

入门力扣自学笔记233 C++ (题目编号:2319)

2319. 判断矩阵是否是一个 X 矩阵 题目: 如果一个正方形矩阵满足下述 全部 条件,则称之为一个 X 矩阵 : 矩阵对角线上的所有元素都 不是 0 矩阵中所有其他元素都是 0 给你一个大小为 n x n 的二维整数数组 grid ,表示一个正方形…

GitHub2022年十大热门编程语言榜单(上)

全球知名代码托管平台 GitHub发布的2022年GitHub Octoverse年度报告公布了全球最流行的十大编程语言,其中JavaScript蝉联第一,Python位列次席。 编程是技术革新的核心,对于所有的编程开发人员来说,对世界范围内编程语言发展和趋势…

搭WIFI拓扑有感

搭拓扑有感 人类革命,一场N*N的MIMO 关键技术:男女搭配 结婚生子 男女搭配:以搭档为单位调度,节省整体开资,克服短时间的寂寞 CP沟通:在说话间加一个保护间隔,不给对方太大的压力 结婚生子 …

Live800:影响在线客服系统稳定性的因素,有哪些?

稳定性的在线客服系统对企业来说是至关重要的,可以说是企业选择在线客服系统时首要考量的一个因素。一个不稳定的在线客服系统,即使价格再便宜,恐怕也无法满足企业搭建在线客服系统的初衷。想象一下当客户正在咨询问题时,客服系统…

十三、表数据的增、删、改操作

文章目录一、插入数据1.1 使用 INSERT…VALUES 语句插入数据1.2 使用 INSERT…SET 语句插入数据1.3 使用 INSERT...SELECT 语句插入查询结果二、修改(更新)数据三、删除数据3.1 通过 DELETE 语句删除数据3.2 通过 TRUNCATE TABLE 语句删除数据3.3 DELETE 语句和 TRUNCATE TABLE…

爬虫实例(二)—— 爬取高清4K图片

大家好,我是 Enovo飞鱼,今天继续分享一个爬虫案例,爬取高清4K图片,加油💪。 目录 前言 增加异常处理 增加代码灵活性 基本环境配置 爬取目标网站 分析网站页面 具体代码实现 图片下载示例 感谢支持&#x1f6…

ABB机器人设置有效载荷的2种方法具体步骤(直接输入法+自动识别推算法1)

ABB机器人设置有效载荷的2种方法具体步骤(直接输入法+自动识别推算法1) 为什么要设置有效载荷Loaddata? 对于搬运应用的机器人只有设定正确的工具和载荷数据,机器人才能正确的工作; 对于搬运比较重的产品,或工具的重量也比较重,需要设置工具及搬运对象的重心和重量; 对…

如何用ChatGPT高效完成工作

如何用ChatGPT高效完成工作 过完年刚开工,很多人还没有从假期综合症中走出来,不想上班,总想摸鱼,可是手上的工作还是要完成的。都2023年了,是时候让ChatGPT来帮我们完成工作了!本文将教你如何用ChatGPT高效…

Unity-Tcp-网络聊天功能(二): 登录与注册

5.客户端实现注册与登录接口创建好UI接下来定义发给客户端的协议等public class MessageHelper {//发送登录的消息给服务器 1002public void SendLoginMsg(string account, string pwd){LoginMsgC2S msg new LoginMsgC2S();msg.account account;msg.password pwd;var str J…

java程序cpu飙高定位

1 定位过程 CPU飙升问题定位的一般步骤是: 首先通过top指令查看当前占用CPU较高的进程PID查看当前进程消耗资源的线程PID:top -Hp PID通过print命令将线程PID转为16进制,根据该16进制值去打印的堆栈日志内查询,查看该线程所驻留…

Plecs电力电子仿真专业教程-第一季

Plecs电力电子仿真专业教程-第一季 第一章 Plecs是什么? 第一节 Plecs简介 Plecs是瑞士Plexim GmbH公司开发的系统级电力电子仿真软件PLECS。PLECS是一个用于电路和控制结合的多功能仿真软件,尤其适用于电力电子和传动系统。不管您是工业领域中的开发…

Lua 面向对象(详解)

Lua 面向对象(详解) 参考文章: https://blog.csdn.net/linxinfa/article/details/103254828 https://zhuanlan.zhihu.com/p/115159195 https://blog.codingnow.com/cloud/LuaOO https://blog.codingnow.com/2006/06/oo_lua.html Lua的面向对象…

Homekit智能家居DIY-智能插座

WiFi智能插座对于新手接触智能家居产品更加友好,不需要额外购买网关设备 很多智能小配件也给我们得生活带来极大的便捷,智能插座就是其中之一,比如外出忘记关空调,可以拿起手机远程关闭。 简单说就是:插座可以连接wi…

不再一个个试错,这众多的flex属性

流式布局 本篇我们将从流式布局的四大方面入手,旨在认识、了解、以至于掌握其特性及功能。 为什么要用? 在我们抛弃标准流、定位流以及浮动流之后,取而代之的是flex流式布局。以一种更加优雅的方式实现元素布局。 轴的定义 在开始说它的特…