网络编程

286 阅读5分钟

RPC

即远程过程调用, 主要解决远程通信间的问题,负责屏蔽底层的传输方式(TCP或者UDP)、序列化方式、以及通信细节。

  • 如何实现远程调用:interface 通过向上转型并指向某个实例动态代理 通过Proxy.newProxyInstance()创建了一个实例InvocationHandler.invoke在该方法中完成远程方法调用并获取结果

image.png 网络通信 netty 注册中心 服务发现如何保持服务 序列化 负载的策略

RPC框架

  1. 服务层,Service,其中主要部分就是动态代理,主要用于将服务提供者的接口封装成远程服务调用。上层的服务接口用于 Spring 之类的业务框架使用,也是 Spring 的 bean.
  2. 过滤器层,服务调用职责链,提供多种调用切面供框架自身和使用者扩展,例如负载均衡,性能统计,服务调用完成通知,失败重试等。
  3. RPC 层,这里就是 RPC 框架的核心部分,包括通信框架,序列化框架,还有用于屏蔽底层通信框架和序列化框架的抽象接口。
  • 服务注册中心:负责服务的发布和通知,通常支持对等集群部署,某个节点宕机不会影响整个集群不可用。即使全部宕机,只影响新的节点注册和发布,不影响现有的,因为客户端需要缓存服务路由信息。
  • 服务治理中心: 服务治理中心通常包括服务治理接口和服务治理 Portal,架构师,测试人员和系统运维人员通过服务治理 Portal 对服务的运行状态,历史数据,健康度和调用关系等进行可视化的分析和维护,目标是要持续优化服务,防止服务架构腐化,保证服务高质量运行。

image.png

RPC合集

dubbo

官方文档

RPC核心功能

虽然每个服务框架不尽相同,但是还有有一些核心功能是相同的,比如以下功能:

  1. 服务订阅发布:比如,配置化发布和引用服务,服务自动发现,服务在线注册和取消注册。
  2. 服务路由:比如,默认提供随机路由,轮询,基于权重的路由,粘滞连接,路由定制功能。
  3. 集群容错:比如,Failover(失败自动切换),Failback(失败自动恢复),Failfast(快速失败)。
  4. 服务调用:需要支持:同步调用,异步调用,并行调用。
  5. 多协议:包括私有协议,公有协议。
  6. 序列化方式:需要支持二进制和文本类序列化方式。
  7. 统一配置:支持本地静态配置,支持基于配置中心的动态配置。

分布式算法

引用

TCP/IP

QUIC 是如何解决TCP 性能瓶颈的

常见攻击 image.png

HTTP

HTTP 是一个超文本传输协议。它基于 TCP/IP 来传输文本、图片、视频、音频等 HTTP 不提供数据包的传输功能,也就是数据包从浏览器到服务端再来回的传输和它没关系。这是 TCP/IP 干的。HTTP只是规定了浏览器和服务器之间的通信交互的一种格式

HTTP演进历史

image.png

Http/3 QUIC

image.png

HTTPS

  • http与https的区别,并具体说明https的原理
  • https原理,数字签名,数字证书,非对称加密算法过程,有什么问题:超文本传输协议http以明文在客户端与服务器之间传递信息,不安全

https是基于http,通过ssl/tls协议进行文本加密传输;通过CA证书身份认证的协议.相比于http,网站加解密开销增大,使用端口不同,安全性提高. image.png https使用CA证书避免中间人伪造私钥,通过数字证书和数字签名. server拥有公钥,将公钥发给CA认证机构获取数字证书,server将数字证书以及公钥发给client 传输数据采用对称加密,建立连接采用非对称加密

  • TLS 的密码套件命名格式为 密钥交换算法 + 签名算法 + 对称加密算法 + 摘要算法:ECDHE-RSA-AES256-GCM-SHA384

HTTPS涉及的计算环节

  • 1、非对称密钥交换。比如RSA, Diffie-Hellman, ECDHE.这类算法的主要作用就是根据客户端和服务端不对称的信息,经过高强度的密钥生成算法,生成对称密钥,用于加解密后续应用消息。

  • 2、对称加解密。服务端使用密钥A对响应内容进行加密,客户端使用相同的密钥A对加密内容进行解密,反之亦然。

  • 3、消息一致性验证。每一段加密的内容都会附加一个MAC消息,即消息认证码。简单地说就是对内容进行的安全哈希计算,接收方需要校验MAC码。

  • 4、证书签名校验。这个阶段主要发生在客户端校验服务端证书身份时,需要对证书签名进行校验,确保证书的真实性。

  • 打开网站的网络过程

相关资料