# 交互协议
# Flag
端到端、服务到服务、端到服务之间的交互协议规范
- https://github.com/schemaorg (opens new window)
 - OpenAPI规范 https://github.com/OAI (opens new window)
 - https://github.com/graphql (opens new window) 
- https://graphql.org (opens new window)
 - https://github.com/chentsulin/awesome-graphql (opens new window)
 - https://github.com/apollographql (opens new window)
 - https://github.com/dotansimha/graphql-yoga (opens new window)
 - https://github.com/n1ru4l/envelop (opens new window)
 - https://github.com/zhnd/query-box (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)
 
# 数据传输模型
该模型用于帮助人们解决应用程序与服务器传递数据的问题
- API架构风格对比:SOAP vs REST vs GraphQL vs RPC (opens new window)
 - REST 和 gRPC 的详细比较 (opens new window)
 - JMS Java消息服务(Java Message Service) (opens new window)
 - 技术概念大揭秘-RPC/Restful/HTTP/SOAP/WebService傻傻分不清楚? (opens new window)
 - 既然有 HTTP 请求,为什么还要用 RPC 调用? (opens new window)
 
- Web Services 模型 (opens new window)(理念/领域)
- SOAP(Simple Object Access Protocol,简单对象访问协议) (opens new window) https://www.w3.org/TR/soap
- WSDL (Web Services Description Language) https://www.w3.org/TR/wsdl20 描述服务接口
 - SOAP over HTTP
 - SOAP over TCP
 - SOAPover Message Queues
 - RSS Syndication Services
 - WS-Discovery
 - WS-Addressing 提供消息寻址功能
 - WS-AtomicTransaction 支持分布式事务
 - WS-ReliableMessaging 确保消息的可靠传输
 - WS-Security 用于消息级的安全,包括加密、签名和身份验证
 - JAX-WS(Java API for XML-based Web services)
 - UDDI (Universal Description, Discovery and Integration) (opens new window)
 
 - RPC(Remote Procedure Call)模型(面向方法)https://en.wikipedia.org/wiki/Remote_procedure_call#General (opens new window) 
- XML-RPC (opens new window) SOAP 本质上是 XML-RPC 的升级版
 - JSON-RPC (opens new window) https://www.jsonrpc.org (opens new window)
 - JAX-RPC
 - gRPC (Google Remote Procedure Call)
 
 - REST(Representational State Transfer) 模型(面向资源)(现代 Web API 风格)
- REST API
 - RestFul API/RESTful Web Service
 - GraphQL
 
 - Windows Communication Foundation (WCF),以前称为Indigo
 
 - SOAP(Simple Object Access Protocol,简单对象访问协议) (opens new window) https://www.w3.org/TR/soap
 - SOA(Service Oriented Architecture)面向服务的架构
 - RCON (opens new window)
 - CORBA (Common Object Request Broker Architecture) 分布式对象技术规范
- IDL (Interface Definition Language)
 - IIOP (Internet Inter-ORB Protocol, TCP)
 
 
- RPC(remote procedure call,远程过程调用):一种通过网络从远程计算机程序上跨语言跨平台的请求服务。主要是分布式式系统中应用。
- RPC按通信协议,可以分为:基于HTTP的、基于TCP等;
 - 按报文协议可以分为:基于XML文本的、基于JSON文本的,二进制的;
 - 按照是否跨平台语言,可以分为:平台专用的,平台中立的
 
 - 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)Java 消息服务
 - 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)
 
# 网络通信协议
- HTTP状态码 https://github.com/leonlarsson/http-raccoons (opens new window)
 - https://evertpot.com/http (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-Sent 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)
 - SSL为何改名为TLS (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?后面