网络上经常有人提到websocket ,TCP和UDP 的差别,说的大都是协议之间的差别,没有提及它们的传输能力,为了设计高吞吐量的物联网微服务器,最近对websocket ,TCP,UDP的传输能力做了测试

使用STM32F746 处理器

操作系统 Arm mbed OS 5.0

tcp/ip 协议 lwip

测试结果

TCP/IP 协议:2.5Mbps(和上一篇转发的博文描述的类似)。

UDP 协议     25Mbps

两者为什么会这么大呢? 这是因为websocket ,TCP和UDP 的底层都是IP包,IP包相当于是一个篮子,而TCP,UDP和websocket都包装,传输的数据是篮子里的苹果,数据包装越复杂,软件处理的部分就越多,花费的时间就越多。以太网上的IP 包和以太网的包非常相近,驱动程序内部可以使用DMA 来实现数据拷贝。软件干预少,处理非常快。我们曾经对STM32 的以太网hal 库做了优化,尽量使用DMA 和memcpy 方式(memcpy 内部使用的也是DMA 方式),硬件CRC校验。每个包长度做到1400的话,UDP 传输的速率可以达到30Mbps左右。

三种协议中,UDP 包最简单,近似与以太网包传输。而TCP包由于增加了数据重发等功能。软件干预比较多。所以速率上不去。而websocket 是建立在http协议之上的TCP 协议所以和TCP 协议的传输效率类似。

如何兼顾websocket的灵活性和UDP的传输速度,是我们在设计模块化边缘设备modular-2 edge 时考虑的问题。我们设计了一种directStream 模式。 就是命令依然是通过websocket 上的发送,但是流结果通过UDP 协议发送到App(如下图所示)到目前为止,实测速率大约是8Mbps,STM32F746 每200us 发送512个字节。

这样安排的另一个优点是不需要baseservice 来处理另外一个UDP 的协议,也不需要它转发。UDP stream 是一个存数据包。

初步测试表明:direct stream 模式是不错的。

websocket传输速率_STM32 websocket,TCP和UDP的传输速率相关推荐

  1. java stm32wifi模块_STM32F103RE单片机驱动88W8801 WiFi模块,如何提高TCP和UDP的传输速率...

    测试时使用的程序:Marvell 88W8801 WiFi模块创建或连接热点,并使用lwip2.1.2建立http服务器(20200208版)(F1程序/HAL库版本SDIO接口) 一.修改前的速度: ...

  2. HTTP,TCP,UDP,Socket,WebSocket

    七层模型 五层模型 四层模型 应用层     表示层 应用层 应用层 会话层     传输层 传输层 传输层 网络层 网络层 网络层 数据链路层 数据链路层 链接层/实体层 物理层 物理层   二.这 ...

  3. php websocket udp,swoole创建websocket服务并且支持https服务,同时监听tcp,udp端口

    namespace serve\websocket; // use serve\websocket\task\Message as taskMessage; use serve\websocket\c ...

  4. websocket之一:websocket简介

    Websocket websocket为一次HTTP握手后,后续通讯为tcp协议的通讯方式. WebSocket 使用一种被称作"Upgrade handshake(升级握手)"的 ...

  5. 前端开发基础——网络相关(TCP、UDP、HTTP等)

    文章目录 网络分层模型 TCP和UDP 什么是TCP/IP.TCP.UDP TCP和UDP的区别 TCP三次握手 TCP四次挥手 HTTP和HTTPS HTTP和HTTPS的区别 HTTP请求头 HT ...

  6. KCP协议:从TCP到UDP家族QUIC/KCP/ENET

    行文前先安利下<再深谈TCP/IP三步握手&四步挥手原理及衍生问题-长文解剖IP >.<再谈UDP协议-浅入理解深度记忆> KCP协议科普 KCP是一个快速可靠协议,能 ...

  7. [Unity Mirror] TCP 和 UDP

      TCP 和 UDP 都是用于通过 Internet 发送信息的协议 - 事实上,它们是世界上最常用的两种 Internet 协议:TCP 是在 1970 年代开发的,而 UDP 是在 1980 年 ...

  8. 【亡羊补牢】计算机网络灵魂之问 第8期 tcp和udp区别

    这是博主面向腾讯学习的面试题大整理系列,可以在如下github仓库Issues中通过 Labels 标签分类查看相关内容,同时欢迎大家指正可能的错误并且提出自己的解答,希望大家学的鱼块,春秋招顺利! ...

  9. 【亡羊补牢】计算机网络灵魂之问 第9期 如果让你做一个视频聊天软件,你用tcp还是udp?为什么?

    这是博主面向腾讯学习的面试题大整理系列,可以在如下github仓库Issues中通过 Labels 标签分类查看相关内容,同时欢迎大家指正可能的错误并且提出自己的解答,希望大家学的鱼块,春秋招顺利! ...

最新文章

  1. 中国电子学会图形化四级编程题:成语接龙
  2. 【转】谈谈三层架构中MODEL的作用
  3. Python基础教程:列表字典的键值修改
  4. python 下表溢出
  5. 最早的齿轮计算机,世界最古老“计算机”出土后110年,科学家终于解开它的秘密...
  6. java websocket client,java基础面试笔试题
  7. vue ---- webpack -插件 html-webpack-plugin
  8. wsimport命令讲解
  9. git version可以卸载吗_sourcetree使用:问题是有推送提示,但显示为空。原因:git版本过低...
  10. Talib技术因子详解(八)
  11. flash player 10 beta已经放出
  12. WIN10取消密码和休眠密码
  13. 暑期JAVA学习(14.1)Map集合案例-统计投票人数
  14. 干货!探索单目车辆估计中的中间几何表示
  15. 轻型载货汽车(离合器及传动轴设计)
  16. 【整理】SISD、MIMD、SIMD、MISD计算机的体系结构的Flynn分类法
  17. 2022年个人总结 - 黑云压城城欲摧
  18. 【调剂】上海理工大学软件工程接收调剂研究生
  19. 用javaScript制作爱心特效
  20. Java面向对象程序设计实训教程_JAVA课程实验报告 实验二 JAVA面向对象程序设计...

热门文章

  1. Java面试题(一)100家大公司java笔试题汇总
  2. Android开发规范,flutter生成二维码
  3. 芯擎科技正式发布“龍鹰一号”,引领“中国智造”智能座舱芯片新篇章
  4. python导库快捷指令、快速导库、dlib库
  5. 520表白网站(附源码与修改教程)
  6. 二本跨考985计算机考研,跨专业考研经验谈:从二本到985的飞跃
  7. Chrome 53 支持 Shadow DOM 等规范
  8. 大学c语言第三章作业,第三章_C语言标准课件_ppt_大学课件预览_高等教育资讯网...
  9. Vue.js 入门 :去哪儿网APP案例 学习记录
  10. ADF单位根检验三种形式_第三章(下):t 检验和 F 检验