# 交互协议

# Flag

端到端、服务到服务、端到服务之间的交互协议规范

# 数据传输模型

该模型用于帮助人们解决应用程序与服务器传递数据的问题

WebService是RPC的一种,RPC使用非常广泛(RPC和MQ是分布式两大基石),目前基本上各大场都有自己的RPC,开源成熟的RPC也非常多。

RPC按通信协议,可以分为:基于HTTP的、基于TCP等; 按报文协议可以分为:基于XML文本的、基于JSON文本的,二进制的; 按照是否跨平台语言,可以分为:平台专用的,平台中立的

  • RPC(remote procedure call,远程过程调用):一种通过网络从远程计算机程序上跨语言跨平台的请求服务。主要是分布式式系统中应用。
  • Web Service:一种跨编程语言和跨操作系统平台的远程调用技术。
  • SOAP(Simple Object Access Protocol,简单对象访问协议):基于 HTTP或 SMTP等多种网络标准规约,它是向网络上的其他计算机传送 XML文档而定义标准Package结构的通信规约息。
  • WSDL (WebServices Description Language):WEB服务描述语言,它是Web Service服务端使用说明书,说明服务端接口、方法、参数和返回值,随服务发布自动生成
  • RMI(remote method invocation,面向对象的远程方法调用)
  • REST(representational state transfer,表达性状态转移)
  • Restful:一种接口规范,符合这套规范编写的接口就是restful 接口
  • JMS(Java Messaging Service)
  • EJB(enterprise java bean)
  • JNDI(Java naming and Directory Interface)
  • JRMP(Java Remote Method Protocol)

# 网络通信协议

应用层

Gopher -> HTTP -> Gemini

通信层

网络层

  • IP(Internet Protocol)
  • ICMP(Internet Control Message Protocol,主要用于路由发送错误报告)
  • IGMP

链接层

  • MAC(media access control)
  • ARP
  • RARP

Proxy代理协议

  • VMess
  • VLESS
  • VLite
  • Trojan
  • Shadowsocks
  • Socks
  • HTTP
  • Freedom
  • Dokodemo
  • Blockhole
  • DNS
  • Loopback

# HTTP

Content-Type只会存在于POSTPATCHPUT等有请求数据实体时指定数据类型和数据字符集编码, 而GETDELETEHEADOPTIONSTRACE等没有请求数据实体

Content-Length则视Content-Type而定,如text/htmltext/javascript等请求数据没有Content-Length

POSTPATCHPUT等请求有请求数据实体的数据为表单参数, GETDELETEHEADOPTIONSTRACE等没有请求数据实体的查询参数拼接在URL?后面