RPC 框架是如何实现 RPC 通信的
网络协议

RPC 框架是如何实现 RPC 通信的

微服务解决单体应用瓶颈的同时也引入了新的问题,即远程方法调用过程中协议约定、服务发现以及网络传输的复杂度增加,必须要解决这些问题才能保证远程方法调用的可靠性,在工程实践中,我们通常使用一些优秀的开源 RPC 框架来处理这些底层问题(如 Spring Cloud、Dubbo、gRRC、Thrift、Hprose 等),作为一般开发者,只需要基于这些框架专注上层服务实现即可,但是作为一个有追求的开发者,最好能够理解 RPC 框架底层的实现,这样才能更好的使用这些框架。

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

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

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

常见的流媒体协议介绍
网络协议

常见的流媒体协议介绍

HTTP 视频协议是在互联网普及之后在互联网上看视频的需求下形成的。最初的 HTTP 视频协议,没有任何特别之处,就是通用的 HTTP 文件渐进式下载,但是在这种情况下,视频无法快进或者跳转到文件尚未被下载到的部分,这就对 HTTP 协议提出了范围请求(Range Request)的要求,目前几乎所有 HTTP 服务器都支持范围请求。所谓范围请求指的是请求文件的部分数据,这可以在 HTTP 请求头中通过 Range 字段设置偏移量来实现。

视频编码与直播的实现原理介绍
网络协议

视频编码与直播的实现原理介绍

说到视频播放,其实就是快速播放一系列连续的图片而已,其中的每一张图片称之为一帧,只要每秒钟帧的数量足够多,也即播放得足够快,比如每秒 30 帧,以人眼的敏感程度,就看不出这是一张张独立的图片,我们把每秒的帧数叫做帧率(FPS)。

HTTP 性能优化篇(三):HTTP/2.0 简介
网络协议

HTTP 性能优化篇(三):HTTP/2.0 简介

目前主流的 HTTP 通信都是基于 HTTP/1.1 的,而 HTTP/1.1 自 1999 年发布的 RFC2616 之后再未进行过修订,而随着互联网的蓬勃发展,HTTP/1.1 自身所暴露的问题也越来越多,于是负责互联网技术标准的 IETF 组织创建了专门的工作组来推进下一代 HTTP —— HTTP/2.0 的标准化,其首要目标就是解决 HTTP 的性能瓶颈,缩短 Web 页面的加载时间。

HTTP 性能优化篇(二):WebSocket 客户端和服务端的简单实现
网络协议

HTTP 性能优化篇(二):WebSocket 客户端和服务端的简单实现

WebSocket 复用了 HTTP 协议来实现握手,通过 Upgrade 字段将 HTTP 协议升级到 WebSocket 协议来建立 WebSocket 连接,一旦 WebSocket 连接建立之后,就可以在这个长连接上通过 WebSocket 数据帧进行双向通信,客户端和服务端可以在任何时候向对方发送报文,而不是 HTTP 协议那种服务端只有在客户端发起请求后才能响应,从而解决了在 Web 页面实时显示最新资源的问题。

HTTP 性能优化篇(一):从 Ajax 到 WebSocket
网络协议

HTTP 性能优化篇(一):从 Ajax 到 WebSocket

在建立 HTTP 标准规范的时候,设计者的初衷主要是想把 HTTP 当做传输静态 HTML 文档的协议,但是随着互联网的发展,Web 应用的用途更加多样性,逐渐诞生了电商网站(如淘宝、亚马逊)、社交网络(如Facebook、Twitter)等功能更加复杂的应用,这些网站的功能单纯靠静态 HTML 显然是实现不了的,因此又产生了通过 CGI 将 Web 服务器与后台动态应用连接起来

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

HTTP 认证实现方案介绍

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

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

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

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