QUIC/UDT/SRT
- 谷歌推的 QUIC 方案(用于替代HTTP2.0)
QUIC公共包头结构如下:
- 1字节公共Flags
- 8字节连接ID
- 4字节QUIC版本号
- 32字节多样化随机数(Nonce)
- 1至6字节可变长度的Packet编号(Packet Number)
0 1 2 3 4 8
+--------+--------+--------+--------+--------+--- ---+
| Public | Connection ID (64) ... | ->
|Flags(8)| (optional) |
+--------+--------+--------+--------+--------+--- ---+9 10 11 12
+--------+--------+--------+--------+
| QUIC Version (32) | ->
| (optional) |
+--------+--------+--------+--------+13 14 15 16 17 18 19 20
+--------+--------+--------+--------+--------+--------+--------+--------+
| Diversification Nonce | ->
| (optional) |
+--------+--------+--------+--------+--------+--------+--------+--------+21 22 23 24 25 26 27 28
+--------+--------+--------+--------+--------+--------+--------+--------+
| Diversification Nonce Continued | ->
| (optional) |
+--------+--------+--------+--------+--------+--------+--------+--------+29 30 31 32 33 34 35 36
+--------+--------+--------+--------+--------+--------+--------+--------+
| Diversification Nonce Continued | ->
| (optional) |
+--------+--------+--------+--------+--------+--------+--------+--------+37 38 39 40 41 42 43 44
+--------+--------+--------+--------+--------+--------+--------+--------+
| Diversification Nonce Continued | ->
| (optional) |
+--------+--------+--------+--------+--------+--------+--------+--------+45 46 47 48 49 50
+--------+--------+--------+--------+--------+--------+
| Packet Number (8, 16, 32, or 48) |
| (variable length) |
+--------+--------+--------+--------+--------+--------+参考资料https://www.chromium.org/quic
原始表格来自谷歌文档
https://docs.google.com/document/d/1WJvyZflAO2pq77yOLbp9NsGjC1CHetAXV8I0fQe-B_U/edit(需要科学上网)
中文译者:hanpfei
中文链接:https://www.jianshu.com/p/b73912342ab8
QUIC (Quick UDP Internet Connections)
维基百科词条 https://en.wikipedia.org/wiki/QUIC
- 参考hanpfei的博客, 博客链接如下
https://www.wolfcstech.com/tags/QUIC/
https://hanpfei.github.io/tags/QUIC/
学术解决方案 UDT 和商业解决方案 SRT
- UDT(UDP-based Data Transfer)是一款开源工具包, 基于 UDP 协议实现可靠数据传输的 API 中间件. 作者 Yunhong Gu
https://en.wikipedia.org/wiki/UDP-based_Data_Transfer_Protocol
http://udt.sourceforge.net
UDT是什么?
参考WolfcsTech的博客1 https://www.jianshu.com/p/974d6c5590f6
https://www.wolfcstech.com/categories/网络协议/page/4/参考CSDN开发者博客 http://blog.csdn.net/asdfghjkl1993/article/details/57417074
UDT是基于UDP的数据传输协议。UDT是开源软件,主要目的是针对“TCP在高带宽长距离网络上的传输性能差”的问题,尽可能全面支持UDP网络上的海量数据传输。
UDT是基于UDP的一种应用层协议。
- SRT(Secure Reliable Transport)是一款商业级别的开源工具包, 由 Haivision Systems 公司开源发布. 它在 UDT 的基础上进行了一些扩展和定制, 具备网络传输丢包检测/延迟控制/视频加密功能, 可用于商业化的 P2P 视频流传输.
SRT is an open source video transport protocol that enables the delivery of high-quality and secure, low-latency video across the public Internet.- https://github.com/Haivision/srt/blob/master/docs/why-srt-was-created.md
Demo
- 服务器端样例程序
https://github.com/chadnickbok/srt/blob/966a4dfc8cae29703b040e9a3ff66dc374593587/apps/testcserver.c - 客户端样例程序
https://github.com/Haivision/srt/blob/master/apps/testcapi.c
#include <stdio.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <netinet/in.h> // #define INADDR_LOOPBACK 0x7F000001#include <haisrt/srt.h>int main( int argc, char** argv )
{int ss, st;struct sockaddr_in sa;int yes = 1;const char message [] = "This message should be sent to the other side";sa.sin_port = htons(20000); // 对方端口号sa.sin_addr.s_addr = htonl(INADDR_LOOPBACK); // 对方IP地址srt_startup();ss = srt_socket(AF_INET, SOCK_DGRAM, 0);if(!ss){goto CLEANUP;}srt_setsockflag(ss, SRTO_SENDER, &yes, sizeof yes);st = srt_connect(ss, (struct sockaddr*)&sa, sizeof sa);st = srt_sendmsg2(ss, message, sizeof message, NULL);st = srt_close(ss);CLEANUP:srt_cleanup();
EXIT:return 0;
}
https://github.com/Haivision/srt/blob/master/srtcore/srt_c_api.cpp
QUIC/UDT/SRT相关推荐
- 新一代直播传输协议SRT
Photo by Vlad Alexandru Popa from Pexels SRT协议是基于UDT的传输协议,保留了UDT的核心思想和机制,抗丢包能力强,适用于复杂的网络.在LiveVideoS ...
- 三十年TCP与七年QUIC 谁才是未来?
本文为LiveVideoStack对来自Akamai网络协议优化组的高级工程经理Darren Ng的采访整理而成,Darren Ng早年供职于TCP优化明星公司FastSoft.十年间,Darren ...
- 王盛:QUIC让B站在20%丢包时实现零卡顿
B站团队是目前少数在生产环境中部署QUIC的视频平台,收益明显.在面对未来网络基础设施升级的背景下,如何让视频传输更流畅.稳定是各视频服务平台必须面临的挑战.LiveVideoStack邮件采访了哔哩 ...
- Qcon演讲实录 | XQUIC与多路径传输技术Multipath QUIC
大家好,我是阿里巴巴淘系技术部的刘彦梅(花名喵吉),今天给大家介绍的演讲内容是<XQUIC与多路径传输技术>, 下面是我在Qcon 2020上海站大会上的演讲内容,收录于专题<5G+ ...
- 低延时直播与RTC融合架构设计②:直播与RTC低延时方案
本文整理自网易云信多媒体资深技术架构师吴桐在 QCon 全球软件开发大会上海站的演讲内容<超高清4K视频低延时直播与RTC融合架构设计>,为该系列的第二篇文章. 回顾该系列第一篇文章< ...
- 技术干货 | 视频直播关键技术和趋势
导读:移动互联网的兴起为人类信息传播带来了更便捷的通道.更立体的视角和更丰富的选择.视频直播等多媒体通信技术在新的时代背景下逐渐崭露头角并不断渗入到人们的日常生活中,以提高人们的信息传输效率.降低信息 ...
- 直播中那几秒延时到底来自哪?
简介:7月16日,亚太内容分发大会上,阿里云高级产品运营专家俞翔受邀出席,并分享了基于CDN网络构建超低延时直播的场景实践.以下为演讲原文. 7月16日,亚太内容分发大会上,阿里云高级产品运营专家俞翔 ...
- 2021音视频开发的“坑”,等你来填!
上周五快手完成港股IPO,首日涨幅就达到200%,作为"老对手"坊间也一直传闻字节跳动将于今年完成上市,而已经提前一步赴美上市的bilibili也计划赴港二次上市,资本市场对长/短 ...
- 腾讯云快直播——超低延迟直播技术方案及应用
正文字数:4361 阅读时长:7分钟 随着直播业务的发展,在线教育,连麦直播.赛事直播等高实时性直播场景的出现,用户对于直播流畅度.低延迟等性能的要求愈加严苛.腾讯云直播技术高级工程师陈华成 从5G ...
最新文章
- OpenCV resize函数源码解析——加速方法
- python处理excel奖金_60万行的Excel数据,Python轻松处理
- 汇编语言(十三)之偶数转成哥德巴赫猜想
- java 面试700问_JAVA面试700问(一) | 并发编程网
- 【英语学习】【Daily English】U02 Daily Routine L04 It's your turn to do the chores
- JavaScript概述2
- 插入排序(Insert Sort)
- beego 初体验 - 环境搭建
- MNIST数据集的下载
- 联想服务器如何恢复预装系统,Thinkcentre E73 E63z等预装Win7系统如何恢复出厂系统...
- 反恐精英代码_Steam永久降价通知!绝地求生史低促销!CS:GO源代码泄漏!
- “分集”与“复用”辨析
- 日语学习之——五十音图及单词(2)
- md语法语法_PHP –语法概述
- 设计模式01-七大设计原则
- 安卓开发之SoundPool播放音效
- linux curl命令详解(附使用示例)
- 计算机特色的小游戏,宅家必备小游戏-steam小型游戏推荐
- E/libc: Access denied finding property “persist.vendor.log.tel_dbg“Permission Denial: can‘t access
- 【2019西安ICPC邀请赛热身赛A hdu2036】求多(四)边形面积(四边形面积公式/向量叉积)
热门文章
- 配置映射文件中使用的类的类型别名typeAliases
- 将dll制作成控件_丹江口水库发现1.68米长巨型鱤鱼,将被制作成标本展出,吃货们哭了...
- 电子信息计算机调剂到能源动力,江苏科技大学机械、电子信息、电子信息能源动力、土木水利2020年考研调剂信息...
- ❤️ Spring相关配置
- 行内元素(HTML、CSS)
- Statement对象最新解析
- android 手机内存uri_Android消息机制Handler原理解析
- rtl8811au黑苹果10.15_荣耀MagicBook I5黑苹果折腾记(超详细教程与排坑)
- vue dve环境static无法被外部访问_vue项目性能优化(代码层面)
- python列表用法大全