2.2.3 UDP的可靠传输协议QUIC 2

news2024/12/24 21:36:09
  1. udp可靠传输 kcp协议

    网络通畅下,kcp比tcp慢

    请添加图片描述

    这里直接看课件图片, 延迟ack比非延迟减少应答包数量,但是慢

  2. kcp 讲解

    kan代码ikcp.c

    按照readme指南编译一下!!

    mkdir build
    cd build
    cmake ..
    make
    

    第一遍报错,再编译一遍就好了

    本来老师要讲kcp源码,但是太难懂,so 主要掌握会用kcp

    直接在vscode 里ctrl+` 然后拆分终端,开三个,在里面操作

    先服务端运行  最右
    ./chat_server 0.0.0.0 10001
    
    客户端运行  中间
    ./chat_client 192.168.1.28 10001
    
    中间客户端发:hacyon来了 但是我这里显示收不到
    
    1. kcp 名词讲解

      mtu, rto, cwnd, rwnd, snd_buf, snd_nxt, snd_una 了解

    2. 使用

      乱七八糟的 看吐了

      1. client和server都要先创建映射,ikcp_create(conv), conv由client产生,可能会一样的id,用uuid算法生成不重复的,

        请添加图片描述

      2. update:在线程中更新 状态,互相独立

        ikcp.h里看ikcp_update函数

        请添加图片描述

        while是一个场景,里面先休息,然后for来调度kcp们, 如果不调度,可能多个客户端就死掉了,一个可以

      3. ikcp_send

        只是先放在内部,等待kcp_update调度,没发出去,最终是要调sendto接口

      4. ikcp_input, ikcp_recv收数据

        默认支持报文模式,因为基于udp的; 也支持(字节)流模式

        请添加图片描述

      5. kcp配置模式

        跳了,工作时查,调参数

      6. kcp协议头

        kcp是udp, 是无连接的,conv用来识别client哪一个,对连接的一种替代;这里稍微看看吧,基本没仔细看,反正记不住,这个以后再看吧

        大部分协议设计原则:header+body

      7. kcp发送数据过程

        粗略过一遍原理, 源码的话粗看 不看stream流模式,只看报文模式

        发送队列:send第一步,第二步 发送缓存:ikcp_update调度用缓存, 发送窗口

        请添加图片描述

        struct里和协议头 不对应的, 要对齐?

        今天好棒,晚上固定搞这个 这三个月,白天穿插(算法+八股 )+ 论文 (主要)

        ikcp_flush调度发送data

        发送窗口 跳了

      8. kcp接收数据

        snd_buf删除已经收到的确认的分片,没仔细听,晕啊太罗嗦了这里

        请添加图片描述

      9. kcp确认包 跳

      10. kcp快速确认 跳

        fastack,fastresend

      11. ikcp_input逻辑

        这里逻辑再看

      12. acklist应答列表

        收到data包以后,自己组织acklist回发,自己解析acklist

      13. 流量控制 拥塞控制 跳

      14. 使用 官方自带的,看完还是不知道怎么用

      15. 聊天室:chat_server.cc 和chat_client.cc

      请添加图片描述

      见kcp_server.h里对session的封装,这里都看看就行,源码再看吧

      请添加图片描述
      见kcp_client.cc 每一个客户端有一个session handle_message调用子类 处理业务

      可以TRACE(内容) 打印内容看看是什么 代码不算太复杂 一百多行 还行!!!

​ asio_kcp的官方项目 可以参考

​ 课后作业

  1. quic协议

    有的公司专门优化这部分,做网络协议的

    why 在应用层实现,在内核改影响很大比较麻烦

    quic tcp对比

    quic比kcp可能严谨一些

    ngtcp2 二次开发 quic开源库 应用,多个服务器的级联,国内很多是基于开源库需改的, 中小厂(比如深信服之类的)不建议跟进这个,做不了

总结!

请添加图片描述

测试没做

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

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

相关文章

ant-design-vue中实现a-tree树形控件父子关联选中过滤的算法

在使用ant-design-vue的框架时,a-tree是比较常用的组件,比较适合处理树形结构的数据。 但是在与后台数据进行授权交互时,就不友好了。 在原生官方文档的例子中,若子项被勾选,则父级节点会被关联勾选,但这勾…

【堆的应用--C语言版】

前面一节我们都已将堆的结构(顺序存储)已经实现,对树的相关概念以及知识做了一定的了解。其中我们在实现删除操作和插入操作的时候,我们还同时实现了建大堆(小堆)的向上(下)调整算法…

【CSS in Depth 2 精译_024】4.2 弹性子元素的大小

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第一章 层叠、优先级与继承(已完结) 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位(已完结) 2.1 相对…

PyInstaller问题解决 onnxruntime-gpu 使用GPU和CUDA加速模型推理

前言 在模型推理时,需要使用GPU加速,相关的CUDA和CUDNN安装好后,通过onnxruntime-gpu实现。 直接运行python程序是正常使用GPU的,如果使用PyInstaller将.py文件打包为.exe,发现只能使用CPU推理了。 本文分析这个问题…

TL-Tomcat中长连接的底层源码原理实现

长连接:浏览器告诉tomcat不要将请求关掉。 如果不是长连接,tomcat响应后会告诉浏览器把这个连接关掉。 tomcat中有一个缓冲区 如果发送大批量数据后 又不处理 那么会堆积缓冲区 后面的请求会越来越慢。

Java架构师未来篇大模型

目录 1. 大模型的定义2 大模型相关概念区分3 大模型的发展历程4. 大模型的特点5 大模型的分类6 大模型的泛化与微调7 大模型岗位需求8 理解大模型8.1 生活中的比喻8.2 大模型的定义9 大模型工作9.1 数据的积累9.2 模型的训练9.3 预测和应用10 大模型的实际应用10.1 语言处理10.…

240907-Gradio插入Mermaid流程图并自适应浏览器高度

A. 最终效果 B. 示例代码 import gradio as grmermaid_code """ <iframe srcdoc <!DOCTYPE html> <html><head><meta charset"utf-8" /><meta name"viewport" content"widthdevice-width" />…

C++初阶:STL详解(一)——string类

✨✨小新课堂开课了&#xff0c;欢迎欢迎~✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C&#xff1a;由浅入深篇 小新的主页&#xff1a;编程版小新-CSDN博客 1.为什么会有string类 C 语言中&#xff0c…

Nodejs中使用Minio

Minio 安装Minio MinIO下载 下载完&#xff0c;服务端和客户端后&#xff0c;最好像我这样做&#xff0c;去分一下路径。 安装完后&#xff0c;进入bin目录输入以下指令&#xff1a; # 设置账户 setx MINIO_ROOT_USER admin# 设置密码 setx MINIO_ROOT_PASSWORD password# …

高效办公必备!图片转PDF功能,让工作更轻松

在数字化时代&#xff0c;将图片转换为PDF格式是一项非常实用的技能&#xff1b;无论是在工作、学习还是生活中&#xff0c;我们都可能遇到需要将图片转化为PDF格式的情况&#xff1b;今天通过这篇文章给大家分享四款好用的图片转pdf 的工具&#xff1a; 第一款&#xff1a;福…

flutter开发实战-flutter web加载html及HtmlElementView的使用

flutter开发实战-flutter web加载html及HtmlElementView的web控件 HtmlElementView 是 Flutter 中用于嵌入 HTML 内容的 widget。这个 widget 允许你将一个 HTML 元素嵌入到 Flutter 应用中。 一、HtmlElementView基本使用 在工程的pubspec.yaml中引入插件 HtmlElementView…

多波束EM2040D以及POSMV使用记录

多波束EM2040D采集软件SIS4.3升级到SIS5.11之后&#xff0c;我们碰到了很多问题&#xff0c;现在将问题和解决过程记录一下。 1、SIS5软件打不开 SIS5软件打不开&#xff0c;报KSlSMainApp has stopped working弹框。 ​ 判断是电脑问题&#xff0c;更新最新win10系统&#…

ue5 伤害插件

主角或敌人都能用的插件&#xff0c;复用性很高 首先创建以下插件、接口、类型文件 两个枚举中的参数名称&#xff0c;E_DamageResponse区分是各个伤害后的反应&#xff0c;比如不同伤害造成的动画或粒子特效等的不同&#xff0c;E_DamageType是伤害类型&#xff0c;有各种伤害…

【网络安全】空字节绕过:URL回调+XSS+SQL绕WAF

未经许可,不得转载。 文章目录 空字节URL回调XSSSQL空字节 \0,也称为null字节,是一个值为零的特殊字符。在编程中,通常用来表示字符串的结束。攻击者可以利用null字节注入来绕过一些验证或过滤机制。 以下三个漏洞,空字节功不可没。 URL回调 密码重置功能,发起请求后…

【牛站 / USACO2007】

题目 思路 离散化&#xff08;降低空间复杂度&#xff09; 点的编号 ∈ [ 1 , 1000 ] &#xff0c;但是点的个数最多为 2 ⋅ T ∈ [ 4 , 200 ] 点的编号 \in [1, 1000]&#xff0c;但是点的个数最多为 2 \cdot T \in[4, 200] 点的编号∈[1,1000]&#xff0c;但是点的个数最多为…

【NLP】大模型长文本处理技术与GLM-4-Plus评测

本文将介绍Transformer模型在处理长文本数据时所采用的关键技术&#xff0c;特别是旋转位置编码&#xff08;RoPE&#xff09;和Flash Attention机制。 此外&#xff0c;本文介绍GLM系列模型&#xff0c;特别是最新发布的GLM-4-Plus模型。我们将通过实际的评测方法和结果&…

管理学习(一)马云《赢在中国》创业演讲整理

目录 一、小公司也需要制度二、不要害怕冒险三、创业者要的不是技术&#xff0c;而是胆识四、不要惧怕和大企业竞争五、理念不一样&#xff0c;老板永远是对的六、要真实地为客户创造价值七、跟风险投资谈判&#xff0c;说到要做到八、风险投资&#xff0c;只能帮你不能救你九、…

24秋开学考

文件上传 上传一个.php的格式&#xff0c;上面说是非法的文件格式。 2.传了一个phpinfo.gif&#xff0c;说什么在目录里。 3.有两个页面一个labs1一个labs2 &#xff0c;当在第一个页面上传1.jpg&#xff0c;在第二个页面上传1.jpg时&#xff0c;给了我们一个目录,在测试其他时…

[图解]识别类和属性-投资少见效快产量高

1 00:00:00,530 --> 00:00:04,360 接下来&#xff0c;我们就要来识别实体类和属性了 2 00:00:05,670 --> 00:00:07,260 前面也讲了&#xff0c;从哪里识别 3 00:00:08,120 --> 00:00:11,470 从用例规约那里来识别 4 00:00:12,400 --> 00:00:15,770 在识别的时候…

气膜体育馆投资前景广阔:健康产业中的新兴机遇—轻空间

气膜体育馆作为一种新型的建筑形式&#xff0c;为投资者带来了丰富的商业机会。随着全民健身的理念普及&#xff0c;气膜体育馆在市场上逐渐展现出巨大潜力。 市场需求不断增长 随着健康意识提升&#xff0c;人们对运动场地的需求日益增加。气膜体育馆凭借其灵活的建筑形式&…