如何基于 RTMP 协议实现视频直播
网络协议

如何基于 RTMP 协议实现视频直播

主播在客户端采集视频后,照例客户端软件会对视频进行编码以压缩视频,然后通过 RTMP 协议将这个二进制的视频流打包成网络包发送给服务器,这个过程对应上述流程图中的推流(在实际开发中,通常通过 FFmpeg 进行推流)。

HTTP 认证实现方案介绍
网络协议

HTTP 认证实现方案介绍

HTTP 协议本身是无状态的,服务器并不知道客户端发起请求的用户身份,为了搞清楚对方是谁,就需要客户端自报家门。客户端表明自己身份的方式主要有以下几种

更安全的 HTTP —— HTTPS(下):实现原理篇
网络协议

更安全的 HTTP —— HTTPS(下):实现原理篇

非对称加密在性能上不如对称加密,但是安全性上要更好,因此 HTTPS 综合运用了这两种加密方式的优势,使用非对称加密传输对称加密需要用到的密钥,而真正的双方大数据量的通信都是通过对称加密进行的,结合数字证书(包含公钥信息)验证服务端公钥的真实性,HTTPS 的底层原理如下:

CDN 缓存概述及实现原理
网络协议

CDN 缓存概述及实现原理

浏览器缓存由于其局限性并不是主流的缓存实现方案,而网关缓存虽然解决了浏览器缓存的问题,但是所有请求仍然要发送到服务器部署的数据中心,而我们的用户是分散在天南海北的,距离数据中心越远网络延迟越大,能不能有一种缓存方案可以让用户可以就近获取缓存资源呢,这就引入了我们今天要介绍的主题 —— CDN 缓存。

HTTP 缓存的工作原理和实现机制(下)
网络协议

HTTP 缓存的工作原理和实现机制(下)

在 Cache-Control 字段中可以设置多个属性值,不同属性值之间通过逗号分隔,作为一个通用首部字段,请求头和响应头中都可以出现这个字段,并且通过不同的属性值来定义 HTTP 缓存策略。常见的属性及其含义如下所示

HTTP 缓存的工作原理和实现机制(上)
网络协议

HTTP 缓存的工作原理和实现机制(上)

在通过客户端访问服务器时,对于某些静态资源文件或页面(比如 HTML 文档、CSS、JavaScript 文件、图片等),它们变动的频率很小,同一个客户端发起多次请求返回的都是同一个文件,这样就会对服务器的带宽造成浪费,同时也会加重 Web 服务器的负载,降低 Web 服务器的性能。如果在客户端首次获取到这些静态文件后,将这些变动频率很低的静态文件缓存到客户端,这样,客户端下次发起请求时,就可以直接从本地获取对应的缓存文件,不必每次都从服务器获取,就可以提高服务器的负载,进而提升服务器的性能,同时还会减少网络流量,降低客户端请求等待延迟,从而提升客户端用户的体验,这就是 HTTP 缓存的意义。