# 交互协议
# Flag
端到端、服务到服务、端到服务之间的交互协议规范
- https://github.com/schemaorg (opens new window)
- OpenAPI规范 https://github.com/OAI (opens new window)
- https://github.com/graphql (opens new window)
- C# https://github.com/dotnet/wcf (opens new window)
- Java https://github.com/apache/cxf (opens new window)
- https://axis.apache.org (opens new window)
# 数据传输模型
该模型用于帮助人们解决应用程序与服务器传递数据的问题
WebService是RPC的一种,RPC使用非常广泛(RPC和MQ是分布式两大基石),目前基本上各大场都有自己的RPC,开源成熟的RPC也非常多。
RPC按通信协议,可以分为:基于HTTP的、基于TCP等; 按报文协议可以分为:基于XML文本的、基于JSON文本的,二进制的; 按照是否跨平台语言,可以分为:平台专用的,平台中立的
- API架构风格对比:SOAP vs REST vs GraphQL vs RPC (opens new window)
- REST 和 gRPC 的详细比较 (opens new window)
- JMS Java消息服务(Java Message Service) (opens new window)
- Web Service 模型 (opens new window)
- SOAP(Simple Object Access Protocol,即简单对象访问协议) (opens new window)
- SOAP over HTTP
- SOAP over TCP
- SOAPover Message Queues
- RSS Syndication Services
- WS-Discovery
- WS-Addressing
- WS-ReliableMessaging
- WS-Security
- JAX-WS(Java API for XML-based Web services)
- UDDI (opens new window)
- RPC 模型(面向方法)https://en.wikipedia.org/wiki/Remote_procedure_call#General (opens new window)
- XML-RPC (opens new window)
- JSON-RPC (opens new window) https://www.jsonrpc.org (opens new window)
- SOAP (opens new window) + WSDL (opens new window) [SOAP 本质上是 XML-RPC 的升级版]
- JAX-RPC
- REST Web Service
- RESTful Web Service
- Windows Communication Foundation (WCF),以前称为Indigo
- SOAP(Simple Object Access Protocol,即简单对象访问协议) (opens new window)
- WEB API
- REST(Representational State Transfer) 模型(面向资源)
- REST API
- RestFul API
- GraphQL
- REST(Representational State Transfer) 模型(面向资源)
- SOA(Service Oriented Architecture)面向服务的架构
- RCON (opens new window)
- 技术概念大揭秘-RPC/Restful/HTTP/SOAP/WebService傻傻分不清楚? (opens new window)
- 既然有 HTTP 请求,为什么还要用 RPC 调用? (opens new window)
- 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)
- Webservice RPC风格 SOAP,REST风格 各之间的对比 (opens new window)
- 什么是 RESTful ?到底 REST 和 SOAP、RPC 有何区别? (opens new window)
- 正确甄别API & REST API & RESTful API & Web Service之间的差异与联系 (opens new window)
- 远程通信的几种选择(RPC,Webservice,RMI,JMS的区别) (opens new window)
- SOAP webserivce 和 RESTful webservice 对比及区别 (opens new window)
- 如何通俗易懂地解释什么是SOA? (opens new window)
- RESTful API设计参考文献列表 https://github.com/aisuhua/restful-api-design-references (opens new window)
- https://zh.wikipedia.org/wiki/HATEOAS (opens new window)
- RESTful API设计规范 https://github.com/godruoyi/restful-api-specification (opens new window)
- RESTful API设计规范 (opens new window)
- RESTful跟WebService的区别 (opens new window)
# 网络通信协议
应用层
Gopher -> HTTP -> Gemini
- WebDav/CalDav/CardDav/WebCal/iCalendar (opens new window)
- WebDAV (opens new window)
- https://github.com/JackJiang2011/MobileIMSDK (opens new window)
- Server-Send Events(SSE)只支持服务端->客户端的单向通讯 Server-Sent Events 详解及实战 (opens new window)
- WebSocket(SignalR)支持服务端<->客户端的双向实时通讯
- HTTP(Hypertext Transfer Protocol)超文本传输协议,显示网页,只支持客户端->服务端的单向通讯
- Gemini https://gemini.circumlunar.space (opens new window)
- DNS(Domain Name System)
- FTP(File Transfer Protocol)
- SFTP(SSH File Transfer Protocol)和FTP不一样
- SCP(Secure copy)基于SSH
- ASCII
- Xmodem
- Ymodem
- Zmodem
- Kermit
- SSH (Secure Shell)
- SMTP(Simple Mail Transfer Protocol)
- SNMP(simple Network Management Protocol)
- Socket (opens new window) 是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。
- 在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面
- AMQP(Advanced Message Queuing Protocol,高级消息队列协议)
- XMPP(Extensible Messaging and Presence Protocol,Jabber)
- OTR(Off-the-Record Messaging,不留记录即时通讯协议) https://hardenedlinux.github.io/cryptography/2018/02/01/pidgin_xmpp_otr_debian.html
- OMEMO
- IMPP(Instant Messaging and Presence Protocol,即时消息和在线状态协议)
- STOMP(Streaming Text Oriented Messaging Protocol,流文本定向消息协议)
- MQTT(Message Queuing Telemetry Transport,消息队列遥测传输):是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议
通信层
- TCP(Transmission Control Protocol)三次握手传输协议
- UDP(User Datagram Protocol)用户数据报协议
- mKCP
- gRPC
- QUIC
- meek
- TCP、Socket、WebSocket、HTTP (opens new window)
- 网络编程 socket详解 TCP socket和UDP socket (opens new window)
- 【Socket学习】1. TCP与UDP (opens new window)
- socket通信 tcp协议和udp协议 C++ (opens new window)
- UDP 和 TCP 的 socket 分别一般用在什么地方? (opens new window)
- https://wicg.github.io/direct-sockets (opens new window)
- https://github.com/NetAsmCom/Socketify (opens new window)
网络层
- 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
- https://github.com/topics/server (opens new window)
- https://github.com/topics/http-server (opens new window)
- https://github.com/topics/http-client (opens new window)
- https://github.com/search?q=WebSocket (opens new window)
- https://github.com/topics/websockets (opens new window)
- 互联网号码分配机构(IANA)官方MIME类型列表 (opens new window)
- 常用对照表 (opens new window)
- https://www.runoob.com/http/http-tutorial.html (opens new window)
- https://developer.mozilla.org/zh-CN/docs/Web/HTTP (opens new window)
- https://github.com/httpcats/http.cat (opens new window)
- HTTPS的工作原理 https://stephanietang.github.io/2020/04/19/how-https-works (opens new window)
- 图解QUIC连接 https://cangsdarm.github.io/illustrate/quic (opens new window)
- 谈谈HTTP协议中的短轮询、长轮询、长连接和短连接 (opens new window)
Content-Type
只会存在于POST
、PATCH
、PUT
等有请求数据实体时指定数据类型和数据字符集编码, 而GET
、DELETE
、HEAD
、OPTIONS
、TRACE
等没有请求数据实体
Content-Length
则视Content-Type
而定,如text/html
、text/javascript
等请求数据没有Content-Length
- HTTP协议中的Accept与Content-Type的区别 (opens new window)
- https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Accept (opens new window)
- HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP (opens new window)
- https://zh.wikipedia.org/wiki/分块传输编码 (opens new window)
POST
、PATCH
、PUT
等请求有请求数据实体的数据为表单参数,GET
、DELETE
、HEAD
、OPTIONS
、TRACE
等没有请求数据实体的查询参数拼接在URL?
后面