http://www.ox-holdings.com

不同场景我们采用的 RUDP新匍京娱乐场官方下载: 方式也不一样,其共同特性都在于集成了实时语音功能

摘要2018年度RTC实时互联网大会已于9月7、8两日在北京喜来登长城饭店顺利举行,本次大会精彩纷呈。引言话说,这种变化似乎就发生在一夜之间……从跨国VoIP电话到连麦互动以及实时音视频通话;从直播答题撒币到传统电商都可以实时在线抓娃娃;将“新鲜”趁热打铁,火的不要不要的微信官方小程序也赶趟儿宣布开放了实时音视频通信接口;就连人们熟知的教育、互联网金融、安防以及企业通信,也都纷纷对实时互动场景抛出了绣球,开展了“联姻”……“实时”两个字满屏飞,背后呢?这些让人感觉颇为新奇的“变化”统统都要归功于RTC技术。RTC,如今人们经常说到的实时通信技术,从传统互联网过渡到移动互联网的过程中,在很多领域都有广泛应用。如今开发者们完全可以通过各种实时通信API集成RTC云服务能力,在各种原生应用、Web网页、H5、硬件设备中加入实时通信功能,而WebRTC被称为网络实时通信,是 RTC子模块之一,被日渐重视。相关数据显示,每周仅在Chrome浏览器上就会有超过15亿分钟的WebRTC音视频通话。依照目前的统计,有超过1,300个从事WebRTC的公司和项目。浏览器在日常生活中如此常见,据悉所有安装的浏览器中就会有80%已经内置了WebRTC。应用频率如此之高,可见其技术发展日渐成熟。在此基础上,WebRTC1.0候选推荐标准也于去年正式被“呼出”。可能出现的标准“新探”都在这里基于此,在RTC2018大会上,WebRTC标准委员会委员Daniel C. Burnett 为与会开发者们详细介绍了该标准实施之后所开展的各项工作。他表示,其实在核心规范层面的变化是比较少的,说到发展,绝大多数是针对部分规范增强的“加码”!通常来说,人们都比较注重安全问题,当然WebRTC也不例外。为防止信息泄露,通常都会对RPT的流量进行加密。背后的理念就是加密捕获的媒体,必须要有指定个人进行解密,而且需要登陆之后才可以做到,这点是需要额外注意的特殊功能之一。进一步来说,WebRTC对于浏览器,一旦接触到媒体就会产生编码,可以使用任何想要的编码器进行解码工作,在这方面的拓展主要集中在让开发者可以使用java进行解密或者加密,从而对编码参数的控制更加有力。基于这个新功能,WebRTC达到的效果是可以做到不需要经常打开浏览器的窗口。这究竟有何好处呢?可以妥妥解决临时进入的电话接听问题。“这个功能十分适合视频,过程中不需要经常打开浏览器窗口;而且还对背景语音的处理十分有效,尤其是语音识别方面。”Dan Burnett 补充道。WebRTC标准委员会成员 Daniel C. Burnett此外,关于SVC的controls的性能加持也十分重要。具体来说, Daniel C. Burnett 阐释道,本质上是一个可扩展的视频编码,具备后就可以在时间与空间上进行压缩,其中时间压缩能以比较慢的速率发送帧,比较高的速率插入可选的额外帧,类似于大家喜欢的联播。其中空间压缩和时间压缩非常类似,能够发送低分辨率的帧,可以插入可扩展分辨率额外的帧等,所以可以采用比较低分辨率的帧。“目前,我们正在设计一个加速 TLS以及HTTP新传送,这是受到WebRTC开发经验和教训的启发。这点Google非常支持我们,之前在quick领域做得很多开发实践都是基于WebRTC之前的经验和教训,如今可能涉及到不同的连接设置中往返需要时间这样类型的探索。”他说。众所周知,让互联网更快的路就是通往QUIC的这一条。 Daniel C. Burnett也提出,quic流的数据通道作为大家都非常喜欢的概念,尤其是使用quic流的数据通道,在Java的语言下比较简单。如果具体说说QUIC这条“捷径”,腾讯TEG基础架构部高级架构师罗成,曾在公开场合表示,其实QUIC的设计目的是为了减少传输延时。为何TA能够有效减少传输延迟呢?主要还是由于几方面特性。罗成认为,首先能够帮助0RTT建立连接,其次可以做到全用户态传输控制。一般来说,TCP的运算控制都是基于内核操作系统协议站实现的,如果要在其中完成一些优化改进甚至监控部署都需要涉及到服务器操作系统的修改甚至客户端操作系统的修改,通常是不可能的,这个特性的部署升级压力非常大,但是QUIC不一样,是全用户态实现,可以非常精准地实现特性。此外,QUIC可以避免队头阻塞的多路复用。由于QUIC请求和请求之间都是完全独立的,一个请求丢包只会影响“眼下”关联的一个请求,不会影响别的。相比之下,TCP不知道对应了多少个请求,如果产生丢包现象,也就不知道剩下等待请求的数量,自然就会产生队头阻塞。这么看,QUIC被高效利用“有情可原”,同样对其深入研究的新浪微博技术专家聂永则表示,其实QUIC还涉及到一个前期筛选的过程。他介绍说,选用QUIC还需要从自身出发,注意很多实验机制、方案以及框架。“当时我们都在选择的过程中,出现了go-quic,由于用户不活跃就被排除了;另外一个就是谷歌的QUIC,想把它转换成生产级的发现则需要很大的努力,更重要的一点它是使用C++语言写的,因为我本身不会C++,所以就没选择它;一轮选择之后,我们发现Caddy+QUIC可以提供一站式网络堆栈服务,方便成熟且使用者众多,更新机制频繁。”聂永补充道。尽管QUIC有这样那样的优势,但长期实践表明,对于企业来说采用之后还是存在一定的困难,例如首当其冲的表现就是协议复杂性。由于未来需要实现TCP的可靠性、拥塞控制、流量控制以及安全的指标,所以必然会出现QUIC协议被陆续替换并趋于标准化的情况。最重要的一点,技术的快速变化以及协议的快速迭代,差不多一个半月就有一个新的QUIC版本出现。QUIC现默认使用自己实现的握手协议,但后续计划使用TLS1.3替代,这就增加了自己架构的难度,关于这个问题,聂永提出借助开源的想法,如果在工具层面可以实现就减轻了“重复造轮子”的负担。至此,我们不得不正视一个问题,如今整个社会还没有为QUIC的到来做好准备,运营商针对UDP的支持也是不足的,表现不稳定。例如,有些ISP会直接屏蔽UDP,UDP有时需要被伪装成TCP才能正常传输,UDP带宽有时相比TCP狭窄,UDP流量可能会因QOS线速判定为丢包……此外,QUIC穿透性差,NAT局域网路、交换机、防火墙等会禁止UDP 443同行,防火墙有时只“认可”TCP……相对来说,实验室数据还是比真实环境测评出来的数据漂亮很多,这一点需要企业在使用QUIC时多加注意。会上,Dan Burnett还提到了解决NAT的问题的ICE。通常,如果想从一个网络转换到另一个网络,就算使用的是移动终端,无线转换也非常耗费时间的,过程需要重新打包甚至还会出现丢包现象,所以ICE的使用过程中充满挑战。此外还有一点,对于很多开发商来说不希望使用SDP是共同的“夙愿”。如何在使用ICE的同时不用SDP,其实还存在其他的运输途径,例如quic。由于ICE想控制的是用户能够使用哪个地址的问题,包括APP地址以及其他,完成这些最重要的依旧是对速度的极致要求。“WebRTC1.0版本现在运转得非常好,相信未来会越来越好,据了解已经有APP在使用WebRTC1.0版本。但值得注意的一点,如今WebRTC是一个平台,而且会不断延伸,衍生平台或产品未来会更加亮眼,越发被注意。”你理解最新的标准测试“那些事儿”吗?标准呼出之后自然要观察适用效果,GoogleWebRTC产品经理HuibKleinhout对此深受感触。他表示,关于WebRTC的1.0版本,标准在实践中加以测试很重要,可以借此判断任何时间条件下标准是否适用。说到WebRTC的测试,据悉这与其他的网络标准并不相同。例如,Google之间有一个kite,可以将两个浏览器进行连接,浏览器可以进入机器,也可以在原端,还可以是物理的硬件,而且能够把测试结果报告给安卓等,这样两个服务器就做到直接对话了。更重要的一点,这种测试不单单针对标准的适用性,还能够测试基于WebRTC的应用。Google WebRTC产品经理 Huib KleinhouHuib Kleinhou认为,WebRTC在开始阶段与现在的1.0版本有非常大区别,包括Google、chrome等都做了大量的工作。例如,关于chrome,加入一些API,避免直接使用SDP;调整到另外一个SDP,让浏览器会更加具有一致性。反观浏览器的性能提升,例如chrome和safari,要保障它们更好的符合标准要求,同时又有一定的灵活性。未来对于Edge有需要进行更多提升,因为基于WebRTC以及API需要开展越来越多的工作。“我们的方向非常好,希望在未来将这个应用进一步改善和提升。”Huib Kleinhou说。此外,关于WebRTC的1.0版本,还需要考虑其稳定性以及可靠性。其中一个非常重要的修订是MacAudio,主要针对解决MacOS之前出现的相关问题;另外就是关于chrome的屏幕共享。通常,我们与其他人进行平台共享时,不是带宽不够就是干脆没有网络,屏幕延迟以及死机都是常有的事儿。关于这方面,Google团队做了一定改进并保证更好的自动化,尽管效果不够完美,但针对相关问题总结后会有进一步提升。“坑坑洼洼”的规模商用尚待成熟话说,标准有了,测试做了,似乎说着说着还要落地到应用实践的层面。聊到这里,可能不少开发者有这样的想法。WebRTC并不算一个特别新的概念,就连1.0说话也就落地了,如今构建很多不同领域的应用,例如视频通话、远程医疗等,开发者们第一时间也可以想到WebRTC,证明这个普及程度还是十分令人欣喜额,此外关于一些to C产品的应用,例如Facebook message等,如此推测大规模商用的门槛高不高呢?对此,声网Agora首席WebRTC架构师陈功在演讲“WebRTC在大规模的商业应用中的实践”中提出,其实从WebRTC到大规模的商用,还是会遇到非常棘手的问题。首先可能就是通信质量的“那些事儿”。陈功表示,真正商用的场景中不可避免会有多人的场景,这就需要有一个KOS的优化策略。如果过程中所面向的用户客户是全球分布的,更需要智能路由以及全球化的部署服务节点的能力。除了质量之外,在可用性方面,全球化部署的服务节点必然需要高可用的运维,同时服务的终端不会是单纯的PC端浏览器, 这么看还要有跨平台互通的,包括与移动端、其他第三方接入的互通能力。关于以上这些问题的解决,从服务架构出发,陈功介绍,WebRTC协议站开发了WebRTC的Gateway网关,这个网关会负责浏览器端的Web用户和Agora大网进行接入,同时还负责一些频道的创建、媒体流的发布、媒体流的订阅、消息的传递和状态反馈,整个网关是一个就近接入的分布式部署,充分利用了Agora传输网络的优势,因为WebRTC本身是点对点的。“另外,由于整个服务体系中非常重要的就是数据驱动,从数据方面可以看到大体可以分成三部分。”他总结道。第一部分是在媒体服务器上或WebRTC网关上能看到的采集到的数据,包括延时、抖动、丢包,还包括网关和SD-RTN TM之间的传输状态。端上最重要的就是pc.getStats,会挑选其中大多数比较有意义的进行采集,包括非常重要的带宽估计、关键帧请求等信息。最后的数据是SDK的logger,对分析的用户真正真实场景遇到的问题非常重要。应用落地始终是打开大规模商用的第一步,所以针对不同场景的优化体验,声网把WebRTC用到大规模的商用要服务于不同垂直领域的客户,区分一些场景。例如,直播场景就比较要求高清的画质,通信场景的重要指标就是流畅性,所以针对这些不同的场景像采用编码选择参数的设置、传输策略上进行根据场景的定制等。此外,关于WebRTC前端应用中的经验和教训,TutorABC的资深架构师孙高朝列举了在线课堂系统中经常出现的问题,例如学生反映怎么看不到顾问,也听不到声音;顾问也反映听不到学生声音,看不到自己的影像。孙高朝对与会开发者们表示,总结之后发现上述这几类问题,基本上归功于设备问题和网络问题,其中设备问题占了绝大部分。通常提及的GetUserMedia并不能算真正的设备问题,只是调用这个函数会出现报错,这可能与设备相关;另外的设备异常就属于物理硬件上的异常。“关于WebRTC文档上的关键事件,我们都会给予一定容错,甚至有时候要多个接口一起协同使用,而不是对单一的接口做一些判断,往往会存在不精准的现象。WebRTC的信令协商非常重要,取决于WebRTC网络连接或其他东西能不能正常使用,所以网络层的处理要格外精细,要考虑到丢包以及重连。”他说。总体来说WebRTC文档可以参考,应用过程中需要因地制宜,还是需要根据自己的业务需求发现其中的问题做一些解决。那些典型的实时场景与后端架构,TA们都是咋做的?概括了应用层面的弯与坑之后,大家都知道,HQ Trivia直播答题掀起了今年一波实时热潮,但瞬间高并发的特点给系统架构提出了“新难题”。具体来说,在高并发场景下的实时状态同步,包括PK、答题、或者大型直播间等,在消息丢失、消息延迟情况下如何做到消息实时状态的同步呢?关于这个问题,李庆寿似乎最有发言权,花椒直播在产品中的技术实践更是值得探讨。通常来说,答题、连麦以及直播间的PK 活动都有可能带来长连接的不稳定性。试想瞬间增加服务器压力,处理能力有限导致数据丢失延迟等情况出现,由此出现长连接异常,用户体验自然不高。此外据了解,长连接的固有性质导致丢失或者乱序,开启实时消息控制会导致它更加严重。此外,长连接超时状态的判别延迟,其中超时比http这种接口请求的超时长得多,出现网络问题时不可能立马断线连接、重新建连,所以就出现了消息丢失和延迟问题。“我们当时考虑两个方案,首先转成IM消息,写扩散,进行消息编号等功能。但这个功能评估下来对系统的改造非常大;另外就是定时拉取接口做实时状态的同步,这个方案导致状态接口的请求量非常大。所以最后根据这个思路设计了Sync服务。”李庆寿说。具体操作第一步就是要增加ID的版本号,将Sync消息写入现成连系统中,由长连系统推送到APP端,与此同时将带有版本号的信息同步写入到Sync中去。作为APP端,要不就是网络特别好而且消息不是很多的情况下,正常接受消息可以展示出来;如果此时APP处于网络不稳定或者直播间消息众多,那就轮到Sync服务发挥作用了。具体来说,APP会寻找Sync服务的相关接口,如果版本号大于本地的最大版本号,就会用这个版本信息做业务处理。直播环节看似没有坑了,那点播如何才能做的顺当?沪江CCtalk CTO 杨继珩为现场开发者建议的解决方案是OCS。这套系统是一套播放系统,可以理解为一个播放器,但它播的内容不像其他机构播一个视频那么简单。作为一个富媒体播放器,就是把上课所有元素按直播时一个个放完,机制很复杂,但可以让录播用户得到更好的体验和学习效果更好。OCS的结构也很复杂,包括OCS的后台生成器、平台服务层的转码、打包、数据切片、富媒体包装等。未来关于在线视频教育的挑战,杨继珩认为这几点比较关键,给同行人带来些许建议。卡顿、低延迟优化的老生常谈的话题之一;此外,一些大型课程学生在场率超过50%的并没有很多,很多用户都是看录播,所以要保证MCU录制质量一定要高,这方面能力的建设以及稳定性比较重要。如今,8亿-9亿网民中有超过六成的使用者或多或少玩过游戏,尽管从国家层面对其进行了相对严格的管控,但体量巨大带来的影响仍然是不容小觑。更重要的一点,游戏对网络要求非常高。不像视频或其他电商类业务对网络的带宽、时延、抖动、丢包要求极致;常常玩FPS游戏的人们了解,如果网络不好的话基本没办法进行下去,客户体验会非常差,再加上如今公有云的网络基础设施还相对薄弱,这也是华为云游戏解决方案架构师王冰关注游戏网络质量优化的立足点。王冰表示,将数据采集完成进行分析、网络预测,去动态调整网络流量流向等环节确实很关键,但更重要的一点,还是要对网络质量整体提升。“网络出问题后,最终要改善网络,而不是总去预防,要总结、分析后对网络能力进行提升。例如可以从数据中心建设、骨干网的带宽和ISP带宽、POP点广泛覆盖、线路质量的提升、跨地域线路容灾能力以及IPV6的快速推广等方面着手。”他说。从技术层面出发,随着RTC技术在更多行业的应用落地,不断迸发出更多创新业务场景,后端架构设计与传输也将时刻面临新的挑战。小到教育画面的卡顿,大到工单以及客户系统的诸多问题, 声网Agora 首席数据架构师何丰作为RTC 大会的老朋友,这次带来了针对“质量透明” 的主题分享。在分享中,何丰强调,需要把服务质量透明给用户,质量透明以后用户可以了解事态;此外可以有效帮助定性是网络问题还是设备陈旧问题,对质量改进形成非常快速的迭代。具体来说,声网关于这方面的实践,主要是通过内部的工具和系统把这些问题定位诊断出来,因为有一套非常完善的质量数据体系。这个数据的体系会从用户通话的每一个环节针对质量收集, 例如用户行为、网络切换、音视频采集、上行网络丢包、抖动、延迟等质量数据。话说,中间的云作为传输大网,能够保障跨州、跨国传输的质量。大网中传输的质量指标、对方用户下行网络、对方接收解码播放渲染的运行状态……这些用户行为都会被全链路收集起来。何丰进一步补充道,这些收集到的数据还可以做些分类,例如用户行为一类,运行时状态为一类,以及QoE和QoS两方面的质量数据等。这代表可以通过全方面数据去判断通话的相关情况,脱离用户访谈就可以对通话质量进行全方位把控。此外,会上Callstack.ioCEO VarunSigh还带来了有关WebRTC领域质量监控和优化的经验分享。如今,实时互联网行业迎来爆发之年,很多创新的实时互动场景在RTC技术的激发下踏上风口,关于RTC 2018大会的相关报道后续会接踵而至,敬请期待。

原标题:直播连麦、智能音箱、一键求救……实时互动技术应用全面爆发!

2017 已过大半,从年初盛起的《王者荣耀》、《狼人杀》却依然是最火爆的游戏产品,其共同特性都在于集成了实时语音功能,前者左手走位右手技能,语音自然也就成为了非常必要的属性,而后者更不用说,本就是纯粹依靠实时语音进行下去的游戏。

本文观点仅作参考,请根据自已系统的应用场景合理地选择数据传输层协议即可,无需盲目崇拜大牛言论。

本文内容来自学霸君资深架构师袁荣喜的技术分享。

新匍京娱乐场官方下载 1

而从游戏到直播、在线教育/医疗以及 VR/AR、AI 等互联网垂直行业及创新技术,这样的例子还有很多。比如转型做直播的陌陌在最新的 8.0 版本中推出了“快聊”、“狼人杀”、“派对”等实时视频社交玩法;小米在新发布智能音箱中也集成了实时语音云服务。随着互联网服务越来越廉价易得,诸如网络电话、视频通话、全互动直播等实时场景已然成为用户的普遍需求,越来越多的规模化应用基于使用模式及场景集成了实时音视频功能,“实时”俨然已是互联网最热的标签词之一。

对于即时通讯开者新手来说,在开始着手编写IM或消息推送系统的代码前,最头疼的问题莫过于到底该选TCP还是UDP作为传输层协议。本文延续《网络编程懒人入门》系列文章的风格,通过快速对比分析 TCP 和 UDP 的区别,来帮助即时通讯初学者快速了解这些基础的知识点,从而在IM、消息推送等网络通信应用场景中能准确地选择合适的传输层协议。

最近和很多实时音视频领域的朋友交流中都有谈论到 RUDP(Reliable UDP),这其实是个老生常谈的问题,RUDP 在很多著名的项目上都有使用,例如 Google 的 QUIC 和 WebRTC。在 UDP 之上做一层可靠,很多朋友认为这是很不靠谱的事情,也有朋友认为这是一个大杀器,可以解决实时领域里大部分问题。

作者 | 唐小引 & 孙浩峰

从互联网发展历程看 —— 实时通信和互联网交叉融合所带来的改变

但实际上,始建于上世纪 60 年代的互联网本身并非为“实时”所设计,受限于当时的应用场景和技术,再加上不同国家、运营商之间人为制造的屏障,通信技术在实时传输、质量保证等各方面都可谓差强人意。

也正因如此,从互联网诞生之日起,一代又一代的技术人便在对通信技术进行不断地更新升级。1989年,还在欧洲粒子研究中心(CERN)的 Tim Berners-Lee 研制出了三项突破性的数字通信技术:可用于排列文本文件的 HTML 语言、连接文件的 HTTP 系统以及用来对特殊节点信息进行定位的 URL。这三项创新改变了整个通信系统,使得信息能够更容易地穿越计算机网络。而在1993年,Berners-Lee 更是建立起万维网联盟(World Wide Web Consortium,简称 W3C),负责 Web 相关标准的制定。浏览器的普及和 W3C 的推动,使得 Web 上可以访问的资源逐渐丰富起来,然而此时 Web 的主要通信还是浏览器向服务器请求静态 HTML 信息。

 

新匍京娱乐场官方下载 2

 

不过,同在 1993 年,CGI(Common Gateway Interface,通用网关接口)的出现带动了 Web 上动态信息服务的蓬勃兴起。CGI 定义了 Web 服务器与外部应用程序之间的通信接口标准,Web 服务器可以通过 CGI 执行外部程序,让外部程序根据 Web 请求内容生成动态的内容。

 

新匍京娱乐场官方下载 3

 

到了 1995 年,NetScape 公司设计的 JavaScript 被用作浏览器上运行脚本语言为网页增加动态性,不仅能够做出非常酷的页面动态效果,还可以减少与服务器端的通信开销,而十年后,也就是 2005 年,当 Google 的崛起掀开了 Web 2.0 的大幕,应运而生的 AJAX 更使得 javascript 再次大放异彩。

我们知道,在 Web 应用中,用户提交表单时就向 Web 服务器发送一个请求,服务器进行接收处理,并返回一个新的网页,前后两个页面中的大部分 HTML 代码往往是一样的,由此也就造成了返回时带宽资源的浪费。而 AJAX 应用仅向服务器发送并返回必要的数据,且在客户端采用 JavaScript 处理来自服务器的响应,更新页面的局部信息。这样不仅让浏览器和服务器的数据交换大大减少,且客户端也可以更快速地响应用户操作。

 

新匍京娱乐场官方下载 4

 

而到了移动互联网时代,通信技术标准化也就成为了水到渠成的自然现象。在《苹果终于入伙 WebRTC,新一代移动 Web 应用爆发路上还有哪些坑?》一文中,我们曾谈到的 WebRTC 标准便是典型案例之一。

在 2011 年以前,浏览器之间要想实现实时通信,需要私有技术,其中大部分都是通过插件和客户端来安装使用。对于许多用户而言,插件的下载、安装和更新是一个复杂、繁琐和容易出错的操作。而对于开发人员来说,插件的调试、测试、部署、错误修复和维护同样困难重重,且不提还涉及到一些受版权保护的技术,整合相当复杂。再者,很多时候,服务提供商很难说服用户去安装插件。

但这一两头吃力还不讨好的局面就这样被 Google 将 WebRTC 项目开源所打破。2011 年,WebRTC 基于 BSD 协议开源,同年,W3C 启动 WebRTC 计划,让 WebRTC 成为了 HTML5 标准的一部分(目前,该规范还在开发中)。

另一方面,在移动互联网创业大潮涌动之时,不少创业者选择从移动 SDK 切入,将实时通信工具化,开发者及团队无需顾及实时通信背后繁琐的技术原理与逻辑实现,只需在应用开发中集成相应的 SDK 即可轻松实现实时通信功能。这方面的代表性企业可见声网 Agora.io,其提供了一个极简 SDK,让开发者接入 SD-RTN™ 实时虚拟通信网,在任何 App 和网站实现高质量的音频通话、视频通话、全互动直播。

同时,随着网络基础设施到位、硬件配件发展成熟,以及 4G、Wi-Fi 的普及,用户开始对更丰富的功能、场景有了更多的需求。譬如在当前人工智能如火如荼之时,诸多智能设备都集成了实时音视频的功能,前文提到的小米 AI 音箱即是其中之一。

对此,声网 Agora.io CEO 赵斌如此总结道:

中国互联网发展迅猛,基础云服务、开源技术、html5、移动 SDK 等技术,让中国的开发者能最快速地开发移动和网页 App,与世界比肩。下一个风口,一定会是融合了实时通信技术的应用。

随着网络技术飞速发展,网速已不再是传输的瓶颈,UDP协议以其简单、传输快的优势,在越来越多场景下取代了TCP,如网页浏览、流媒体、实时游戏、物联网。本文作为《网络编程懒人入门》系列文章的第5篇,将为您快速梳理UDP协议在某些场景下对比TCP协议所具有的优势。

作为教育公司,学霸君APP在很多实时场景下确实使用了 RUDP 技术来解决我们的问题,不同场景我们采用的 RUDP 方式也不一样。

出品 | CSDN(ID:CSDNNews)

那么,在风口之上,实时通信还存在哪些技术难点尚待完全攻克?

接下来,我们进行具体分析。

  • 网络传输:现存的互联网作为冷战时代的产物最早其实是为了用于保障美国通信网络,其在网络传输方面的种种局限也直接导致了现在的互联网在大文件传输、实时传输方面的窒碍难行。而语/视频通信、直播连麦对实时性要求非常高,要求延迟低至几百毫秒,因此,现存的互联网并不能满足这种新型的实时应用场景。

  • 编解码:传统的编解码算法,也非应用于复杂的互联网实时场景的良选,就导致卡顿、模糊等不可用的情况发生。

  • 硬件适配:在音视频通话中,除了延迟,还有一个严重影响用户体验的问题 —— 回声。所谓“回声”,即是指自己的声音传到远端再通过远端的麦克风录音传回来。我们需要通过信号处理算法来进行回声消除,但由于手机的音量控制是非线性的,不同的手机材质、手机壳会导致声音传导性有差异,设备种类差异导致算法不能普适。且Android 手机碎片化严重,也就直接导致了移动端适配工作量庞杂。

  • QoE 质量保障: 来自北欧的实时通信数据测试公司 Callstats.io 曾分享过欧美市场实时通信行业现状的调研数据,基于公网的 WebRTC 通话中有 16% 通话质量不可接受。而实际情况中,类似东南亚、中东这些基建不发达地区会糟糕得多。如何保障 RTC 服务的高连通性、高质量,也就成为了 RTC 领域的一大技术难点。

另外,即时通讯网的文章:《简述传输层协议TCP和UDP的区别》、《为什么QQ用的是UDP协议而不是TCP协议?》、《移动端即时通讯协议选择:UDP还是TCP?》,更详细地阐述了类似的内容,可以为您提供更多的参考。

先来看看我们哪些场景使用了 RUDP:

今时今日,当我们使用着微信的音视频通话功能,在吃鸡、狼人杀剧本杀里语音对话、直播答题组队,以及在各类在线教育的 App 网站与老师一对一或一对多地课堂互动,并习以为常之时,已经很难记起曾经那个普遍使用着 2G 把上网叫作「网上冲浪」的年代里我们都是怎么生活学习与工作的,那时候,上网的成本甚高,通话的质量却低得今天回想起来都不敢置信。

想要从根源上解决这些问题,还需要先对 RTC 整个技术栈做个了解。

RTC 从功能流程上来讲,包含了采集、编码、前后处理、传输、解码、缓冲、渲染等诸多环节,下图是一个 RTC 通信的粗略流程,每一个细分环节还有更细分的技术模块。比如在前后处理环节,有美颜、滤镜、回声消除、噪声抑制等,采集有麦克风阵列等,编解码有 VP8、VP9、H.264 等。

 

新匍京娱乐场官方下载 5

 

在这里,来自声网的技术专家分享了他们的实践:

  • 通过专为内容实时传输而设计的网络架构 SD-RTN 解决网络传输问题。在互联网上不同地区的数据中心放置软件组网单元,相互连接互相调度,在现有的公共互联网基础上构建一层新的虚拟网络;
  • 针对互联网信道的实时一对一、多人通讯设计了专门的私有编解码,以适应互联网丢包、抖动、延迟等问题;

 

新匍京娱乐场官方下载 6

 

  • 将“免”适配和适配相互配合,依靠线上数据的反馈,判断“免”的效果;
  • 基于大数据开发了可供开发者 7*24 查看的“实时数据监控平台”。开发者可以查看的每个用户的通话质量情况,包括网路分布、设备分布、质量分布、通话质量、接通率、通话分钟数等。

值得一提的还有,不少开发者直接将 RTC 和 WebRTC 划上了等号。实际上,WebRTC 是 Google 的一个专门针对网页实时通信的标准及开源项目,只提供了基础的前端功能实现,包括编码解码和抖动缓冲等,开发者若要基于 WebRTC 开发商用项目,需要自行做服务端实现和部署,信令前后端选型实现部署,以及手机适配等一系列具体工作。除此之外,还要在可用性和高质量方面进行大量的改进和打磨,对自身开发能力的门槛要求非常高。而一个专业的 RTC 技术服务系统,除了涵盖上述的通信环节外,实际上还需要有解决互联网不稳定性的专用通信网络,以及针对互联网信道的高容忍度的音视频信号处理算法。当然,常规云服务的高可用、服务质量的保障和监控维护工具都只能算是一个专业服务商的基本模块。

学习交流:

1)全局 250 毫秒延迟的实时 1V1 答疑,采用的是 RUDP + 多点 relay 智能路由方案;

2)500 毫秒 1080P 视频连麦互动系统,采用的是 RUDP + PROXY 调度传输方案;

3)6 方实时同步书写系统,采用的是 RUDP+redo log 的可靠传输技术;

4)弱网 Wi-Fi 下 Pad 的 720P 同屏传输系统,采用的是 RUDP +GCC 实时流控技术;

5)大型直播的 P2P 分发系统,通过 RUDP + 多点并联 relay 技术节省了 75% 以上的分发带宽。

尽管这样的景象才过去十年有余,却如隔了半个世纪。

那么,当实时通信无处不在之时,我们该怎么做?

当各式智能硬件、移动应用以及 Web App 中的许多模块都越来越依赖于音视频技术,实时通信已然成为了所有行业的一大基础设施,不仅仅是在直播、游戏这些泛娱乐行业,更渗透到在线医疗、教育、金融等领域。在不同场景下,推动着人们沟通互动方式的改变。

但是,就是这样一个已与各个垂直行业进行深度融合需求庞大的技术领域,却仍然匮乏核心技术高端人才。RTC 核心技术最需求的是通信工程相关专业的人才,而这些专业的应届毕业生此前就业一般集中于华为、爱立信等传统通信行业厂商,也不具有 RTC 的经验,一般都是工作后二次学习。开发者需要对实时通信有更深层次的理解,建立起 RTC 技术体系,帮助自己在各个行业开拓创新的可能。


最后,对于想要进入 RTC 领域的开发者,推荐即将于 9 月 21 -22 日在北京万豪酒店举行的 RTC 2017 实时互联网大会,主要有两点:一是在于集结了实时通信领域非常重量级的大咖,比如 WebRTC 标准之父、IETF 的参与者 Daniel C. Burnett,还有来自Google、声网、Slack、Houseparty、Atlaissian、陌陌、花椒、熊猫等公司的技术专家,可以在现场收获实时通信最新的第一手资源,同时也与讲者们进行更深入的沟通交流。其次,这一会议的分会场设置完全围绕 RTC 技术栈来,从底层到前端,从架构到编解码,从移动开发到行业技术实践,能够帮助所有想要学习 RTC 的开发者建立起学习架构体系。

 

- 即时通讯开发交流群:320837163[推荐]

- 移动端IM开发入门文章:《新手入门一篇就够:从零开发移动端IM》

涉及到实时传输我们都会先考虑 RUDP,RUDP 应用在我们APP核心传输体系的各个方面,但不同的系统场景我们设计了不同的 RUDP 方式,所以基于那些激烈的讨论和我们使用的经验,我决定扒一扒 RUDP,来给大家分享如何让UDP变的可靠的实践经验。

而如今,语音聊天、视频社交,通过网络实时地与朋友家人乃至世界各地的人们互动都已经成为了我们的日常工作生活不可或缺的一部分,一如西北工业大学教授陈景东在 RTC 2018 实时互联网大会的主题演讲中所分享的,我们不仅实现了“通信+交互+控制+智能”,更有 Handsfree 和远场交互。从前单通道的声信号获取已经发展至今天的高保真、多方及具有沉浸感的临境体验。这背后的一切均离不开 RTC 实时通信技术,而其所带来的实时互动的能力,深入了从泛娱乐、教育、远程医疗到政务、公安等各行各业,正如声网 Agora 创始人 & CEO 赵斌在 RTC 2018 实时互联网大会上所言 —— “正在一点一滴地在线上创造一个新世界”。

(本文同步发布于:

学习交流:

新匍京娱乐场官方下载 7

本文是系列文章中的第4篇,本系列文章的大纲如下:

- 即时通讯开发交流群:320837163[推荐]

- 移动端IM开发入门文章:《新手入门一篇就够:从零开发移动端IM》

声网 Agora 创始人 & CEO 赵斌

《网络编程懒人入门:快速理解网络通信协议》

《网络编程懒人入门:快速理解网络通信协议》

《网络编程懒人入门:快速理解TCP协议一篇就够》

《网络编程懒人入门:快速理解TCP和UDP的差异》

《网络编程懒人入门:快速理解为什么说UDP有时比TCP更有优势》

(本文同步发布于:

实时互动技术应用已全面爆发!

如果您觉得本系列文章过于基础,您可直接阅读《不为人知的网络编程》系列文章,该系列目录如下:

本文是系列文章中的第7篇,本系列文章的大纲如下:

在不久前,笔者与大家曾分享过从游戏、直播到社交、教育这些社交需求极强的应用,以及微信开放了实时音视频能力后所带来的在小程序上的实时互动探索。而在正在举行的 RTC 2018 实时互联网大会上,笔者则看到了实时互动更加丰富的技术应用。

《不为人知的网络编程:浅析TCP协议中的疑难杂症》

《不为人知的网络编程:浅析TCP协议中的疑难杂症》

《不为人知的网络编程:关闭TCP连接时为什么会TIME_WAIT、CLOSE_WAIT》

《不为人知的网络编程:深入研究分析TCP的异常关闭》

《不为人知的网络编程:UDP的连接性和负载均衡》

《不为人知的网络编程:深入地理解UDP协议并用好它》

《TCP/IP详解-第11章·UDP:用户数据报协议》

《TCP/IP详解-第17章·TCP:传输控制协议》

《TCP/IP详解-第18章·TCP连接的建立与终止》

《TCP/IP详解-第21章·TCP的超时与重传》

《通俗易懂-深入理解TCP协议:理论基础》

《通俗易懂-深入理解TCP协议:RTT、滑动窗口、拥塞处理》

《理论经典:TCP协议的3次握手与4次挥手过程详解》

《理论联系实际:Wireshark抓包分析TCP 3次握手、4次挥手过程》

《技术往事:改变世界的TCP/IP协议(珍贵多图、手机慎点)》

《计算机网络通讯协议关系图》

《高性能网络编程:单台服务器并发TCP连接数到底可以有多少》

《高性能网络编程:上一个10年,著名的C10K并发连接问题》

《高性能网络编程:下一个10年,是时候考虑C10M并发问题了》

《高性能网络编程:从C10K到C10M高性能网络应用的理论探索》

《简述传输层协议TCP和UDP的区别》

《UDP中一个包的大小最大能多大?》

《为什么QQ用的是UDP协议而不是TCP协议?》

《移动端即时通讯协议选择:UDP还是TCP?》

《不为人知的网络编程:浅析TCP协议中的疑难杂症》

在大会现场,声网 Agora 创始人 & CEO 赵斌为我们带来了直播连麦、在线游戏房、智能 AR 眼镜、K12 家教一对一、视频急救 120 等诸多已经成型并落地的应用。其中在直播方面,声网专门推出了百万人实时大频道互动能力,从更高质量、更大规模、更低延时三个角度,实现线下巨型会议的线上化。从实际应用数据来看,实时大频道互动中,98.5% 的参与者延迟在200ms以内,优质传输率为 97.3%。在演唱会、体育比赛、讲座大课等超大型直播场景下,观众不仅能够观看直播,更可以把自己的现场反馈如欢呼、尖叫反馈给主播和其他观众,重现现场感受。

CDN服务商Akamai报告从2008年到2015年7年时间,各个国家网络平均速率由1.5Mbps提升为5.1Mbps,网速提升近4倍。网络环境变好,网络传输的延迟、稳定性也随之改善,UDP的丢包率低于5%,如果再使用应用层重传,能够完全确保传输的可靠性。

《不为人知的网络编程:浅析TCP协议中的疑难杂症》

众所周知,当前在国内的社交直播中,已经实现了动态实时滤镜支持,通过实时追踪人脸多个特征点,实现实时动态贴纸、360°无死角美颜、自带哈哈镜和颜色滤镜等功能。而声网还在帮助海外的平台实现这些功能,譬如被称为美国版“陌陌”的全美最大线上婚恋约会社交平台 MeetMe,即实现了互动直播,支持多人连麦互动,之后又陆续推出了人脸识别、脸部特效和虚拟礼物等动态功能。在大会现场,MeetMe 技术高级副总裁 Richard Friedman 分享了对于实时互动的见解:“实时视频是人与人之间的通信交流,表情和肢体语言是很重要的一部分,以前依赖于文字聊天,很多东西其实都没有传输出去。而有了 RTC 之后,这些部分能够有效地被表现出来,从而更好地解决沟通的问题。并且区别从前的长延时直播,低延时互动直播拉近了主播与观众的距离,重新定义了盈利的模式,不止于传统广告,还有用户打赏行为。而未来,实时互动将在生态系统上实现突破。”

为了提升浏览速度,Google基于TCP提出了SPDY协议以及HTTP/2。Google在Chrome上实验基于UDP的QUIC协议,传输速率减少到100ms以内。

《不为人知的网络编程:关闭TCP连接时为什么会TIME_WAIT、CLOSE_WAIT》

新匍京娱乐场官方下载 8

新匍京娱乐场官方下载 9

《不为人知的网络编程:深入研究分析TCP的异常关闭》

MeetMe 技术高级副总裁 Richard Friedman

Google采用QUIC后连接速率能有效提升75%;

Google搜索采用QUIC后页面加载性能提升3%;

YouTube采用QUIC后重新缓冲次数减少了30%。

《不为人知的网络编程:UDP的连接性和负载均衡》

而智能 AR 眼镜在国内外主流媒体都有过大幅报道,便是我国警方已经正式采用智能眼镜执法,只要戴上一副 AR 眼镜,就能实现执法记录、人脸识别、车牌识别、人证比对、实时语音指挥等功能。智能眼镜在实时互动方面的应用除了这点,亮亮视野联合创始人马寅还分享了一个远程医疗急救的例子,在卡塔尔通过 5G 网络与远程医院专家进行沟通,在急救车上解决如何生产婴儿、脑梗治疗等问题。

TCP为了实现网络通信的可靠性,使用了复杂的拥塞控制算法,建立了繁琐的握手过程以及重传策略。由于TCP内置在系统协议栈中,极难对其进行改进。

《不为人知的网络编程:深入地理解UDP协议并用好它》

新匍京娱乐场官方下载 10

使用UDP协议有三个优点 :

《不为人知的网络编程:如何让不可靠的UDP变的可靠?》

此外,赵斌现场分享的一个视频急救 120 的例子引起了诸多讨论。声网与重庆市联合推出的伤急救视频 120 自救互救服务,能够让伤者实现“一键求救”,医生可通过视频实时指导现场人员自救或互救。

1)能够对握手过程进行精简,减少网络通信往返次数;

2)能够对TLS加解密过程进行优化;

3)收发快速,无阻塞。

如果您觉得本系列文章过于专业,您可先阅读《网络编程懒人入门》系列文章,该系列目录如下:

赵斌表示,“这是对行业的一个穿透和改造。过去,打 120 只能在家里等着救护车到,你与医生之间的交流是非常有限的。通过这样的方式,电话结束后通过发送短信里的链接,打开手机浏览器,医生即可知道病人发生了什么,指导病人家属做紧急处理。这个场景一旦成熟,将会改变行业的经营方式和模型。有些幸运的患者经过视频指导后,甚至无须到医院处理,这对紧急情况下病人的福祉有深度影响。”

采用TCP,一旦发生丢包,TCP会将后续包缓存起来,等前面的包重传并接收到后再继续发送,延迟会越来越大。基于UDP的协议如实时音视频开源工程WebRTC是极佳的选择。

《网络编程懒人入门:快速理解网络通信协议》

当笔者闻此时,不禁想起了让人痛心的一再发生的滴滴顺风车乘客遇害事件。在此之后,滴滴大力推广通过添加紧急联系人夜间出行开启自动行程分享来解决这一安全痛点,笔者在电梯中常常会见到,从一定程度上来讲,应该是通过 Socket 长连接不断发送地理位置。

2010年google 通过收购 Global IP Solutions,获得了WebRTC(网页实时通信Web Real-Time Communication)技术,用于提升网页视频速率。关于WebRTC的介绍,请见:《访谈WebRTC标准之父:WebRTC的过去、现在和未来》,更多WebRTC文章点此进入。

《网络编程懒人入门:快速理解网络通信协议》

新匍京娱乐场官方下载 11

对实时要求较为严格的情况下,采用自定义的可靠UDP协议,比如Enet、RakNet(用户有 sony online game、minecraft)等,自定义重传策略,能够把丢包产生的延迟降到最低,尽量减少网络问题对游戏性造成的影响。

《网络编程懒人入门:快速理解TCP协议一篇就够》

顺风车事件后,笔者便常见到滴滴开启行程分享的广告

采用UDP的经典游戏如FPS游戏Quake、CS,著名的游戏引擎Unity3D采用的也是RakNet。

《网络编程懒人入门:快速理解TCP和UDP的差异》

那么,我们是不是可以通过集成这样的实时互动 SDK 服务,在滴滴中,只需一键操作,即可报警或求救,而对方可以实时地获取行程路径位置、车辆、司机等信息?当笔者就此疑问来请教赵斌时,他对此进行了肯定,不过要想在出行中实现这样的安全保障还需要从行业的对接与努力。

2014年google旗下的Nest建立Thread Group,推出了物联网通信协议Thread,完善物联网通信。

《网络编程懒人入门:快速理解为什么说UDP有时比TCP更有优势》

这一切应用的背后,是标准制定与技术的迭代

新匍京娱乐场官方下载 12

《TCP/IP详解 - 第11章·UDP:用户数据报协议》

去年 6 月,笔者在《苹果终于入伙 WebRTC,新一代移动 Web 应用爆发路上还有哪些坑?》一文中曾为大家详细解读了 WebRTC(网络实时通信)这项技术的来龙去脉,彼时在聊到“苹果 Safari 终于实现对于 WebRTC 的支持,究竟意味着什么?”时,声网创始人 & CEO 赵斌与我们分享道:“在 Safari 支持 WebRTC 后,过去只能在诸如 Chrome 浏览器之间实现的音视频通话,现在在 Safari 以及 Chrome 与 Safari 之间实现了,其影响一定是积极的。可以预见,很多网站及开发者将会更加认真地考虑将这类功能添加至网站及应用中。”

采用UDP有3个关键点:

《为什么QQ用的是UDP协议而不是TCP协议?》

在过去的一年里,我们不仅看到了苹果支持 WebRTC 所带来的各种音视频应用实现支持 WebRTC,并将浏览器作为音视频应用的入口,还迎来了 WebRTC 1.0 的 Feature Complete。赵斌表示,“这是一个里程碑的事件,这是行业多少年来的发展和推动走到了今天的成果”。此外,在 RTC 领域,还有几项重大技术事件的发生,包括 AV1 1.0 版定稿,苹果加入 AOM 联盟;AVS 2.0 音频标准颁布,中国原创音视频标准完成等。当笔者问到这些对于 RTC 意味着什么,将带来哪些改变时,赵斌如是说道:“WebRTC 的定稿意味着功能和能力上的最终固化,这势必将带来行业的标准统一,下一步是繁荣成长和互通互动能力的扩展。而新一代的视频编码是免费开源的能力开放,也会促进这个场景应用能力的延伸,就如同我们运营商每个月为开发者和创业者提供一万分钟的免费使用,给予他们非常大的自由度可以在没有成本顾虑的环境下做创新。”

1)网络带宽需求较小,而实时性要求高;

2)大部分应用无需维持连接;

3)需要低功耗。

《移动端IM/推送系统的协议选型:UDP还是TCP?》

而一直以来“延时”是横亘在通信面前的一大难题,笔者曾言过“现存的互联网作为冷战时代的产物最早其实是为了用于保障美国通信网络,其在网络传输方面的种种局限也直接导致了现在的互联网在大文件传输、实时传输方面的窒碍难行。而语/视频通信、直播连麦对实时性要求非常高,要求延迟低至几百毫秒,因此,现存的互联网并不能满足这种新型的实时应用场景。”

如今全球将近50%的人都在使用互联网,人们不断的追求更快、更好的服务,一切都在变化,在越来越多的领域,UDP将会抢占TCP的主导地位。

《简述传输层协议TCP和UDP的区别》

也是因为这点,从 IM 到实时通信,一直都在致力于解决传输问题,而赵斌也表示,“在过去的一年里声网的研发团队在持续改进和提高音视频处理方面的能力,其 Agora Solo™ 编码算法的升级版 Solo X™ 不仅能够改造丢包对抗的能力,现在还实现了与 WebRTC 默认标准的 OPUS 编码结合,帮助 OPUS 提高丢包对抗能力,且可以实现兼容互通。比如在浏览器上智能用标准的 OPUS,在客户端可以用其他编码算法,当这两者互通时,是不是能够平滑切换并继续使用丢包对抗能力。”

《Java新一代网络编程模型AIO原理及Linux系统AIO介绍》

《有关“为何选择Netty”的11个疑问及解答》

《开源NIO框架八卦——到底是先有MINA还是先有Netty?》

《选Netty还是Mina:深入研究与对比》

《选Netty还是Mina:深入研究与对比》

《NIO框架入门:服务端基于Netty4的UDP双向通信Demo演示》

《NIO框架入门:服务端基于MINA2的UDP双向通信Demo演示》

《NIO框架入门:iOS与MINA2、Netty4的跨平台UDP双向通信实战》

《NIO框架入门:Android与MINA2、Netty4的跨平台UDP双向通信实战》

《Netty 4.x学习:ByteBuf详解》

《Netty 4.x学习:Channel和Pipeline详解》

《Netty 4.x学习:线程模型详解》

《Apache Mina框架高级篇:IoFilter详解》

《Apache Mina框架高级篇:IoHandler详解》

《MINA2 线程原理总结》

《Apache MINA2.0 开发指南[附件下载]》

《MINA、Netty的源代码已整理发布》

《解决MINA数据传输中TCP的粘包、缺包问题》

《解决Mina中多个同类型Filter实例共存的问题》

《实践总结:Netty3.x升级Netty4.x遇到的那些坑》

《实践总结:Netty3.x VS Netty4.x的线程模型》

《详解Netty的安全性:原理介绍、代码演示》

《详解Netty的安全性:原理介绍、代码演示》

《详解Netty的优雅退出机制和原理》

《NIO框架详解:Netty的高性能之道》

《Twitter:如何使用Netty 4来减少JVM的GC开销》

《绝对干货:基于Netty实现海量接入的推送服务技术要点》

《Netty干货分享:京东京麦的生产级TCP网关技术实践总结》

>>更多同类文章 ……

《UDP中一个包的大小最大能多大》

郑重声明:本文版权归新匍京a奥门-最全网站手机版app官方下载所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。