趣谈网络协议
刘超
网易研究院云计算技术部首席架构师
立即订阅
39583 人已学习
课程目录
已完结 51 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 想成为技术牛人?先搞定网络协议!
免费
第一模块 通信协议综述 (4讲)
第1讲 | 为什么要学习网络协议?
第2讲 | 网络分层的真实含义是什么?
第3讲 | ifconfig:最熟悉又陌生的命令行
第4讲 | DHCP与PXE:IP是怎么来的,又是怎么没的?
第二模块 底层网络知识详解:从二层到三层 (5讲)
第5讲 | 从物理层到MAC层:如何在宿舍里自己组网玩联机游戏?
第6讲 | 交换机与VLAN:办公室太复杂,我要回学校
第7讲 | ICMP与ping:投石问路的侦察兵
第8讲 | 世界这么大,我想出网关:欧洲十国游与玄奘西行
第9讲 | 路由协议:西出网关无故人,敢问路在何方
第二模块 底层网络知识详解:最重要的传输层 (4讲)
第10讲 | UDP协议:因性善而简单,难免碰到“城会玩”
第11讲 | TCP协议(上):因性恶而复杂,先恶后善反轻松
第12讲 | TCP协议(下):西行必定多妖孽,恒心智慧消磨难
第13讲 | 套接字Socket:Talk is cheap, show me the code
第二模块 底层网络知识详解:最常用的应用层 (4讲)
第14讲 | HTTP协议:看个新闻原来这么麻烦
第15讲 | HTTPS协议:点外卖的过程原来这么复杂
第16讲 | 流媒体协议:如何在直播里看到美女帅哥?
第17讲 | P2P协议:我下小电影,99%急死你
第二模块 底层网络知识详解:陌生的数据中心 (6讲)
第18讲 | DNS协议:网络世界的地址簿
第19讲 | HTTPDNS:网络世界的地址簿也会指错路
第20讲 | CDN:你去小卖部取过快递么?
第21讲 | 数据中心:我是开发商,自己拿地盖别墅
第22讲 | VPN:朝中有人好做官
第23讲 | 移动网络:去巴塞罗那,手机也上不了脸书
第三模块 热门技术中的应用:云计算中的网络 (5讲)
第24讲 | 云中网络:自己拿地成本高,购买公寓更灵活
第25讲 | 软件定义网络:共享基础设施的小区物业管理办法
第26讲 | 云中的网络安全:虽然不是土豪,也需要基本安全和保障
第27讲 | 云中的网络QoS:邻居疯狂下电影,我该怎么办?
第28讲 | 云中网络的隔离GRE、VXLAN:虽然住一个小区,也要保护隐私
第三模块 热门技术中的应用:容器技术中的网络 (3讲)
第29讲 | 容器网络:来去自由的日子,不买公寓去合租
第30讲 | 容器网络之Flannel:每人一亩三分地
第31讲 | 容器网络之Calico:为高效说出善意的谎言
第三模块 热门技术中的应用:微服务相关协议 (5讲)
第32讲 | RPC协议综述:远在天边,近在眼前
第33讲 | 基于XML的SOAP协议:不要说NBA,请说美国职业篮球联赛
第34讲 | 基于JSON的RESTful接口协议:我不关心过程,请给我结果
第35讲 | 二进制类RPC协议:还是叫NBA吧,总说全称多费劲
第36讲 | 跨语言类RPC协议:交流之前,双方先来个专业术语表
第四模块 网络协议知识串讲 (4讲)
第37讲 | 知识串讲:用双十一的故事串起碎片的网络协议(上)
第38讲 | 知识串讲:用双十一的故事串起碎片的网络协议(中)
第39讲 | 知识串讲:用双十一的故事串起碎片的网络协议(下)
第40讲 | 搭建一个网络实验环境:授人以鱼不如授人以渔
答疑与加餐 (9讲)
协议专栏特别福利 | 答疑解惑第一期
协议专栏特别福利 | 答疑解惑第二期
协议专栏特别福利 | 答疑解惑第三期
协议专栏特别福利 | 答疑解惑第四期
协议专栏特别福利 | 答疑解惑第五期
加餐1 | 测一测:这些网络协议你都掌握了吗?
加餐2 | 创作故事:我是如何创作“趣谈网络协议”专栏的?
加餐3 | “趣谈网络协议”专栏食用指南
第2季回归 | 这次我们来“趣谈Linux操作系统”
结束语 (1讲)
结束语 | 放弃完美主义,执行力就是限时限量认真完成
趣谈网络协议
登录|注册

第16讲 | 流媒体协议:如何在直播里看到美女帅哥?

刘超 2018-06-22
最近直播比较火,很多人都喜欢看直播,那一个直播系统里面都有哪些组成部分,都使用了什么协议呢?
无论是直播还是点播,其实都是对于视频数据的传输。一提到视频,大家都爱看,但是一提到视频技术,大家都头疼,因为名词实在是太多了。

三个名词系列

我这里列三个名词系列,你先大致有个印象。
名词系列一:AVI、MPEG、RMVB、MP4、MOV、FLV、WebM、WMV、ASF、MKV。例如 RMVB 和 MP4,看着是不是很熟悉?
名词系列二:H.261、 H.262、H.263、H.264、H.265。这个是不是就没怎么听过了?别着急,你先记住,要重点关注 H.264。
名词系列三:MPEG-1、MPEG-2、MPEG-4、MPEG-7。MPEG 好像听说过,但是后面的数字是怎么回事?是不是又熟悉又陌生?
这里,我想问你个问题,视频是什么?我说,其实就是快速播放一连串连续的图片。
每一张图片,我们称为一。只要每秒钟帧的数据足够多,也即播放得足够快。比如每秒 30 帧,以人的眼睛的敏感程度,是看不出这是一张张独立的图片的,这就是我们常说的帧率FPS)。
每一张图片,都是由像素组成的,假设为 1024*768(这个像素数不算多)。每个像素由 RGB 组成,每个 8 位,共 24 位。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《趣谈网络协议》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(34)

  • Jason
    写的特别清楚明白,超哥绝对适合当老师。问题1,rtmp的问题是基于tcp连接的,不适合做实时流传输?改进方法,那就是把UDP引进?

    作者回复: 赞

    2018-06-22
    1
    42
  • fang
    RTMP握手的图是不是有点问题?服务器收到客户端c0发来的版本号才回s0,图上服务器啥也没收到就发s0,它怎么知道给谁发?
    2018-06-27
    1
    19
  • anzaikk
    一开始看不懂,看了五六遍感觉很清晰,赞👍
    2018-09-22
    12
  • Jealone
    优化方式就是QUIC协议
    2018-06-22
    11
  • 咖啡猫口里的咖啡猫🐱
    直播用TCP延迟太高了吧,,,他的保证有序,拥塞机制,,导致current等待之前的包

    作者回复: 是的,赞

    2018-06-22
    8
  • wahaha
    一般说的看视频其实包含了音频,不然成了哑巴剧了,请老师讲下音频。

    作者回复: 有机会补充一下

    2018-06-23
    6
  • Jason
    再度一遍,还是很牛,以rtmp为例很系统的讲述了流媒体服务的原理,其实rtsp、hls也是类似的原理,只是交互形式的不同。每个视频从业者都应该拿去读读。
    2018-07-12
    5
  • yan华建
    思考题
    2.在线看视频之前,大家都是把电影下载下来看的,电影这么大,你知道如何快速下载吗?
      采用p2p的方式,
    2019-05-09
    3
  • 小白
    前面看得很顺,这篇开始就开始懵了,主要是没有做过相互的业务,老师,有什么方法来理解谢谢吗
    2018-07-28
    3
  • 吃鳄鱼的猫
    现在好像都是http-flv, rtmp和hls延迟太高
    2018-06-23
    3
  • July
    RTMP 沟通的版本号是指什么的版本号呢?

    作者回复: 对于版本号的定义:当前rtmp协议的版本号一致为“3”,0、1、2是旧版本号,已经弃用。

    2018-08-22
    2
  • 夏洛克的救赎
    老师 是不是忘记说视频混流了🙃

    作者回复: 没说音频

    2018-06-22
    2
  • zKerry
    写的很好,看了之后,不敢说对流媒体入门,但至少有点方向

    作者回复: 有方向就好,通过一节入门还是有难度的

    2019-09-04
    1
  • 天王
    流媒体协议:1视频是一张张图片连续播放组成的图片,如果按照图片保存,占用空间很大,传输和存储都会占用大量空间,所以需要对图片进行处理,去空间化,去冗余化,编码处理2 直播,首先主播端把视频推流到服务器,服务器进行视频分发,客户端拉流,将视频拉取到本地用播放器进行播放。3 编码 将组成视频的图片进行编码,编码就是压缩过程。每张图片都是一帧,都是由像素组成的,每个像素由RGB组成,共24位,大小比如:1024×768×24约等于70M,视频和图片编码基于以下的特点,像素间的空间冗余,可以计算出来,视频序列播放间的时间冗余,视觉冗余,视觉不敏感,可以丢失一些数据,编码冗余,出现概率高的像素用的字节码少,低的用的字节码多,霍夫曼编码。4 视频如何压缩成图片的 视频序列将帧分为3种 I帧又叫关键帧,B帧又叫双向预测内插压缩帧,P帧单向预测内插编码帧,P帧要依赖前一个I帧,存的是和前一个I帧的差异,B帧依赖前后帧,压缩率更高,解码需要缓存之前的画面,还需要之后的画面,叠加得到最终画面。帧分成多个片,片分成多个宏块,宏块分成多个子块,传输,要转成二进制,网络提取层单元,NALU,网络提取层单元,传输的时候拆成一个个的单元,一个NALU由起始标识符,标识NALU的间隔,NALU header,主要包含NALU type,包括SPS,PPS或者帧类型,NALU payload,如果是SPS,则是图片尺寸,视频格式,如果是PPS,图像分片的信息,如图像类型,序列号,如果是帧,payload包含真正的图像数据。5如何将视频打包传输到对端 推流基于RTMP协议,是基于TCP协议,tcp建立以后要创建一个RTMP连接,建立这个连接是为了处理单独的事情,版本号和时间戳,如果客户端和服务端版本号不一致,直接断开连接。客户端发送C0,c1,c2,服务端发送s0,s1,s2,连接上以后,需要传输ckunk块大小和窗口大小,正式传输数据之前还需要创建流stream,通过这个流来推流。NALU需要放在message进行发送,message称为RTMP package包,message由message type,时间戳,stream id,payload和message body组成,message传输的时候拆成一个个的trunk,每个trunk有message id,接收到以后组装成message 6客户端先接收到解码参数,对NALU进行解码,交给播放器播放。
    2019-06-11
    1
  • jztong
    老师,每个NALU是一片吗?不应该是几个宏块或者子块吗?

    作者回复: 宏块和子块构成payload,由NALU传输

    2019-05-08
    1
  • 新征程
    rtmp与dash hls. dash与mp4这些是啥关系
    2018-10-09
    1
  • Malcolm
    感谢老师!讲的很透彻!
    2018-09-11
    1
  • byte
    希望补充在线视频网站的使用协议以及音频的协议。
    2018-07-06
    1
  • orangleliu
    1 tcp拥塞控制 优化的话 quic kcp这种基于udp的协议

    2 p2p 网络 bt或者电驴这种
    2018-07-04
    1
  • Hulk
    讲解清晰,大赞
    2018-07-01
    1
收起评论
34
返回
顶部