精华内容
下载资源
问答
  • 网络协议 -- UDP协议(2)单播

    万次阅读 2017-12-29 16:01:51
    一、发送端 因为UDP不是面向连接的,且不可靠的,所以发送端在调用sendto之后,就算sendto...如果需要数据传输的可靠性得到保证,可以使用TCP或者通过业务逻辑来保证。 #include #pragma comment(lib, "Ws2_32.lib

    一、发送端

    因为UDP不是面向连接的,且不可靠的,所以发送端在调用sendto之后,就算sendto返回成功,也不代表接收端一定收到了数据,可能接收端压根都没启动,也是有可能的。不能根据sendto的返回值来确保接收端一定收到了数据。如果需要数据传输的可靠性得到保证,可以使用TCP或者通过业务逻辑来保证。

    #include <WinSock2.h>
    #pragma comment(lib, "Ws2_32.lib")
    
    void SendLogic() {
        WSADATA wsaData;
        WORD wVersionRequested = MAKEWORD(1, 0);
        WSAStartup(wVersionRequested, &wsaData);
    
        SOCKET socket = ::WSASocket(AF_INET, SOCK_DGRAM, IPPROTO_UDP, nullptr, 0, 0);
        if (socket == INVALID_SOCKET) {
            
    展开全文
  • 直播网络协议选择

    千次阅读 2018-04-02 01:07:17
    转自:http://www.cnblogs.com/ningskyer/articles/5534512.html上篇我们讲述了如何让直播内容以“最短”路径从主播到观众上,传输层面获得最低延迟,在本篇中我们会介绍直播应用层协议及传输层协议...RTMP协议:是A...

    转自:http://www.cnblogs.com/ningskyer/articles/5534512.html

    上篇我们讲述了如何让直播内容以“最短”路径从主播到观众上,传输层面获得最低延迟,在本篇中我们会介绍直播应用层协议及传输层协议的选择以及对直播体验影响的分析。

    直播协议选择

    国内常见公开的直播协议有几个:RTMP、HLS、HDL(HTTP-FLV)、RTP,我们来逐一介绍。

    RTMP协议:是Adobe的专利协议,现在大部分国外的CDN已不支持。在国内流行度很高。原因有几个方面:1、开源软件和开源库的支持稳定完整。如斗鱼主播常用的OBS软件,开源的librtmp库,服务端有nginx-rtmp插件。2、播放端安装率高。只要浏览器支持FlashPlayer就能非常简易的播放RTMP的直播,协议详解可以Google了解。相对其他协议而言,RTMP协议初次建立连接的时候握手过程过于复杂(底层基于TCP,这里说的是RTMP协议本身的交互),视不同的网络状况会带来给首开带来100ms以上的延迟。基于RTMP的直播一般内容延迟在2~5秒。

     

    HTTP-FLV协议:即使用HTTP协议流式的传输媒体内容。相对于RTMP,HTTP更简单和广为人知,而且不担心被Adobe的专利绑架。内容延迟同样可以做到2~5秒,打开速度更快,因为HTTP本身没有复杂的状态交互。所以从延迟角度来看,HTTP-FLV要优于RTMP。

    HLS 协议:即Http Live Streaming,是由苹果提出基于HTTP的流媒体传输协议。HLS有一个非常大的优点:HTML5可以直接打开播放;这个意味着可以把一个直播链接通过微信等转发分享,不需要安装任何独立的APP,有浏览器即可,所以流行度很高。社交直播APP,HLS可以说是刚需,下来我们分析下其原理。

    基于HLS的直播流URL是一个m3u8的文件,里面包含了最近若干个小视频TS(一种视频封装格式,这里就不扩展介绍)文件,如http://www.ucloud.cn/helloworld.m3u8 是一个直播留链接,其内容如下:

    #EXTM3U

    #EXT-X-VERSION:1

    #EXT-X-TARGETDURATION:10

    #EXT-X-MEDIA-SEQUENCE:0

    #EXTINF:3,

    4.ts

    #EXTINF:8,

    6.ts

    #EXTINF:8,

    8.ts

    #EXTINF:8,

    10.ts

    假设列表里面的包含5个TS文件,每个TS文件包含5秒的视频内容,那么整体的延迟就是25秒。当然可以缩短列表的长度和单个TS文件的大小来降低延迟,极致来说可以缩减列表长度为1,1秒内容的m3u8文件,但是极易受网络波动影响造成卡顿。通过公网的验证,目前按同城网络可以做到比较好的效果是5~7秒的延迟,也是综合流畅度和内容延迟的结果。那么HTML5是否可以有更低延迟直接打开的直播流技术呢?我们在最后会探讨这个问题。

    RTP协议:即Real-time Transport Protocol,用于Internet上针对多媒体数据流的一种传输层协议。实际应用场景下经常需要RTCP(RTP Control Protocol)配合来使用,可以简单理解为RTCP传输交互控制的信令,RTP传输实际的媒体数据。RTP在视频监控、视频会议、IP电话上有广泛的应用,因为视频会议、IP电话的一个重要的使用体验:内容实时性强。 对比与上述3种或实际是2种协议,RTP和它们有一个重要的区别就是默认是使用UDP协议来传输数据,而RTMP和HTTP是基于TCP协议传输。为什么UDP 能做到如此实时的效果呢?关于TCP和UDP差别的分析文章一搜一大把,这里不在赘述,简单概括:

    UDP单个数据报,不用建立连接,简单,不可靠,会丢包,会乱序

    TCP流式,需要建立连接,复杂,可靠 ,有序

    实时音视频流的场景不需要可靠保障,因此也不需要有重传的机制,实时的看到图像声音,网络抖动时丢了一些内容,画面模糊和花屏,完全不重要。TCP为了重传会造成延迟与不同步,如某一截内容因为重传,导致1秒以后才到,那么整个对话就延迟了1秒,随着网络抖动,延迟还会增加成2秒、3秒,如果客户端播放是不加以处理将严重影响直播的体验。

    总结一下:在直播协议的选择中,如果选择是RTMP或HTTP-FLV则意味着有2~5秒的内容延迟,但是就打开延迟开,HTTP-FLV 要优于RTMP。HLS则有5~7秒的内容延迟。选择RTP进行直播则可以做到1秒内的直播延迟。但就目前所了解,各大CDN厂商没有支持基于RTP直播的,所以目前国内主流还是RTMP或HTTP-FLV。

    是否有除了HLS外更低延迟的方案?

    HLS的优点点是显而易见的:移动端无需安装APP使用兼容HTML5的浏览器打开即可观看,所有主流的移动端浏览器基本都支持HTML5,在直播的传播和体验上有巨大的优势。而看起来唯一的缺点:内容延迟高(这里也有很多HLS限制没有提到,比如必须是H264+AAC编码,也可认为是“缺点”之一)。如果能得到解决,那将会是直播技术非常大的一个进步。或者换个说法,有没有更低延迟可直接用链接传播的直播方案?不局限于HLS本身。

    对于浏览器直接的视频互动,Google一直在推WebRTC,目前已有不少成型的产品出现,可以浏览器打开即实时对话、直播。但来看看如下的浏览器覆盖图:

     

    非常遗憾的说,在直至iOS 9.3上的Safari仍然不能支持WebRTC。继续我们的探索,那Websocket支持度如何呢?

     

    除了老而不化的Opera Mini外,所有的浏览器都支持WebSocket。这似乎是个好消息。梳理一下HTML5 WebSocket直播需要解决的问题:

    #1、后端兼容

    #2、传输

    #3、解码播放

    对于#1似乎不是特别大问题,对于做过RTMP转HLS、RTP来说是基本功。#2对于浏览器来说使用HTTP来传输是比较好的选项。对于#3 这里推荐一个开源的JS解码项目jsmpeg: https://github.com/phoboslab/jsmpeg,里面已有一个用于直播的stream-server.js的NodeJS服务器。

    从测试结果看,该项目的代码相对较薄,还没达到工业级的成熟度,需要大规模应用估计需要自填不少坑,有兴趣的同学可以学习研究。

    以上就是直播云:直播应用层协议及传输层协议的选择以及对直播体验影响的分析 。关于接入网络优化、内容缓存与传输策略优化、终端优化,请参阅接下来发布的其他部分。

     

    预告:延迟与卡顿的矛盾关系如何解决?有的时候需要主动丢包?欲知内容缓存与传输策略优化技巧,请关注下篇:《关于直播,所有的技术细节都在这里了(三)》

    展开全文
  • ZMQ提供了一组单播传输协议(inporc, ipc, tcp),和两个广播协议(epgm, pgm)。广播协议是比较高级的协议,我们会在以后讲述。如果你不能回答我扇出比例会影响一对多的单播传输时,就先不要去学习广播协议了吧。 ...

    ZMQ提供了一组单播传输协议(inporc, ipc, tcp),和两个广播协议(epgm,pgm)。广播协议是比较高级的协议,我们会在以后讲述。如果你不能回答我扇出比例会影响一对多的单播传输时,就先不要去学习广播协议了吧。
    一般而言我们会使用tcp作为传输协议,这种TCP连接是可以脱机运作的,它灵活、便携、且足够快速。为什么称之为脱机,是因为ZMQ中的TCP连接不需要该端点已经有某个服务进行了绑定,客户端和服务端可以随时进行连接和绑定,这对应用程序而言都是透明的。

    进程间协议,即ipc,和tcp的行为差不多,但已从网络传输中抽象出来,不需要指定IP地址或者域名。这种协议很多时候会很方便,本指南中的很多示例都会使用这种协议。ZMQ中的ipc协议同样可以是脱机的,但有一个缺点——无法在Windows操作系统上运作(所以在这里说明,如果是windows的机器,协议使用请直接使用tcp,其余暂时都不可行),这一点也许会在未来的ZMQ版本中修复。我们一般会在端点名称的末尾附上.ipc的扩展名,在UNIX系统上,使用ipc协议还需要注意权限问题。你还需要保证所有的程序都能够找到这个ipc端点。

    进程内协议,即inproc,可以在同一个进程的不同线程之间进行消息传输,它比ipc或tcp要快得多。这种协议有一个要求,必须先绑定到端点,才能建立连接,也许未来也会修复。通常的做法是先启动服务端线程,绑定至端点,后启动客户端线程,连接至端点。

    展开全文
  • 网络协议 -- UDP协议(4)组

    万次阅读 2017-12-29 17:12:43
    网络协议–UDP协议(1)介绍可以知道,适用于分组的IP有224.0.0.0 ~ 239.255.255.255。 同样,发送端就需要将数据发送到该分组IP。 一、发送端 #include #pragma comment(lib, "Ws2_32.lib") void SendLog

    组播就是将数据发送到一组主机。接收端如果要接收消息,则需要加入到该分组,分组是用IP来标识的。
    网络协议–UDP协议(1)介绍可以知道,适用于分组的IP有224.0.0.0 ~ 239.255.255.255
    同样,发送端就需要将数据发送到该分组IP。

    一、发送端

    #include <WinSock2.h>
    #pragma comment(lib, "Ws2_32.lib")
    
    
    void SendLogic() {
        WSADATA wsaData;
        WORD wVersionRequested = MAKEWORD(1, 0);
        WSAStartup(wVersionRequested, &wsaData);
    
        SOCKET socket = ::WSASocket(AF_INET, SOCK_DGRAM, IPPROTO_UDP, nullptr, 0, 0);
        if (socket 
    展开全文
  • 计算机网络协议——通信协议综述

    万次阅读 多人点赞 2019-09-03 23:20:58
    通信协议综述概述一、为什么学习网络协议1.1 常见的网络协议二、网络分层的真正含义2.1 为什么网络要分层?2.2 浏览点击请求过程2.3 揭秘层与层之间的关系三、ifconfig 命令行的由来3.1 ip地址3.2 无类型域间选路...
  • 思维导图1.IP数据报的三种传输方式2.IP组地址3.IGMP协议与组路由选择协议(1)网际组管理协议---IGMP(2)IGMP工作的两个阶段(3)组路由选择协议(4)组路由选择选择协议常用的三种路由算法 0.思维导图 1...
  • 视频播放相关的网络协议

    千次阅读 2014-11-08 15:06:47
    视频相关的协议有很多,不同的公司,甚至有自己的协议标准。本文尽量涵盖目前常见的视频相关的协议。 1,RTSP/RTP/RTCP协议族 本协议族是最早的视频传输协议。其中RTSP协议用于视频点播的会话控制,例如发起点播...
  • 单播路由及组路由协议及就用

    千次阅读 2014-11-12 16:30:17
    单播路由及组路由协议及就用  分类: 系统运维 单播路由概述 单播路由概述 http://technet.microsoft.com/zh-cn/library/cc786079(WS.10).aspx 单播路由是通过路由器将到...
  • 最近有不少人在EasyDarwin的交流群里面问关于花椒、映客手机直播技术的问题,还有RTSP、RTMP协议选择的问题,这里个人谈一下自己的愚见。 1、不管是RTSP/RTP、RTMP、HTTP,亦或是私有协议,都是可以进行流媒体传输...
  • 播协议与现在广泛使用单播协议的不同之处在于,一个主机用单播协议向n个主机发送相同的数据时,发送主机需要分别向n个主机发送,共发送n次。一个主机用组播协议向n个主机发送相同的数据时,只要发送1次,其数据...
  • Android使用VideoView播放网络视频

    千次阅读 2017-10-17 15:47:34
    Android支持播放网络上的视频。在播放网络上的视频时,牵涉到视频流...Android中自带的播放器,以及VideoView等都支持上述两种协议,因此,可以直接播放网络上的视频,唯一不同的就是URI。 代码如下: Ja
  • HLS 直播协议m3u8详解

    万次阅读 多人点赞 2018-08-24 09:44:16
    HTTP Live Streaming(缩写是HLS)是一个由苹果公司提出的基于HTTP的流媒体网络传输协议。​是苹果公司QuickTime X和iPhone软件系统的一部分。 它的工作原理是把整个流分成一个个小的基于HTTP的文件来下载,每次只...
  • 网络协议之UDP 多

    千次阅读 2009-09-29 11:23:00
    UDP: User Datagram Protocol(用户数据报协议) 从另一方面说,UDP要简单得多。它做了IP所做的工作,但又增加了端口的概念,因此您...但实际上,在通过相同的网络段,或者在通过具有良好质量调整并且没有过多通信量的
  • 单播,组技术及协议

    千次阅读 2013-06-08 09:50:44
    broadcast是广播 同一广播域的所有电脑都会处理这个数据 multicast是组 同一组域的电脑都会处理这数据 unicast是单播 目的地址只有一个...组单播时,即组优先, MediaUrl : igmp:// addr : port | rtsp://
  • TCP/IP协议单播, 多, 广播

    万次阅读 2016-01-29 22:49:53
    TCP/IP协议单播, 多, 广播
  • 1、IP多需要两种协议 为了使路由器知道多组成员的信息,需要利用网际组管理协议IGMP (Internet Group Management Protocol)。...IGMP的使用范围:IGMP 并非在互联网范围内对所有多组成员进行管理的协议...
  • 一、组(Multicast)传输  在发送者和每一接收者之间实现点对多点网络连接。  如果一台发送者同时给多个的接收者传输相同的数据,也只需复制一...它是现今网络应用最为广泛,通常所使用网络协议或服务大多采用
  • 网络视频播放
  • 当ip网络中某Rx主机需要接收信息时,若采用组方式,组源tx仅需要发送一份信息,借助组路由协议建立组分发树,被传递的信息在距离组源尽可能远的网络节点才开始复制和分发。复制分发节点如下图所示: ...
  • 主机使用IP地址进行一对一(单播)、一对多(多)或一对所有(广播)的通信。  单播地址是IP网络中最常见的。包含单播目标地址的分组发送给特定主机,一个这样的例子是,IP地址为192.168.1.5(源地址)的主机向...
  • 当前的网络中有三种通讯模式:单播、广播、组,其中的组出现时间最晚但同时具备单播和广播的优点,最具有发展前景。 单播 单播是客户端与服务器之间的点到点连接。“点到点”指每个客户端都从服务器接收...
  • Zigbee单播、组、广播使用

    千次阅读 2017-07-17 10:58:11
    Zigbee网络中进行数据通信主要有三种类型:单播、组、广播。那这三种方式如何设置呢,在哪里设置呢,还记得之前学习的 Zigbee协议栈进行数据发送是调用AF_DataRequest这个函数:  afStatus_t AF_DataRequest( ...
  • 播协议

    千次阅读 2009-06-16 19:35:00
    一、组播协议的要素 通过和广播,单播的数据传输方式的比较,我们可以发现组中最关键的两个部分:1. 组的管理和维护在组这套协议中,在网络设备和所连接的子网需要有一套协议或机制来保证网络设备知道所连接的...
  • 计算机网络理论知识:IP多播协议

    千次阅读 2019-06-26 10:55:07
    每种物理网络都有封装多分组的方法: 对于点到点网络,把IP多分组直接封装成帧然后从接口发出去; 对于以太网,用IP多地址的低23位替换地址01-00-5E-00-00-00的低23位得到多MAC地址,然后封装成帧。 帧...
  • 音视频直播的基本流程都是采集 → 编码推流 → 网络分发 → 解码 → 播放这五大环节,其中又会涉及平台硬件、编解码、网络传输、服务并发、数字信号处理、在线学习等多方面技术。从交互模式上,又可以泛分为...
  • 路由协议基础——组分发树

    千次阅读 2020-04-19 17:02:25
    组播报文是由组播源产生并且发向一组接收者的,组播报文一旦进入组播网络后,组播网络设备(例如组播路由器等)负责拷贝及转发这些报文,直至报文到达组播接收者。 组播流量在组播网络中传递时,应该要考虑如下问题: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 141,480
精华内容 56,592
关键字:

使用单播的网络协议