一、基于Axis的WebService协议
- WebService协议是一个相对较老的协议,使用xml标记语言协议的格式,基于soap协议封装消息。可使用任一传输协议来传输数据,最常使用的传输协议是HTTP协议。
- 相较于HTTP协议,WebService协议可封装的数据类型更多,比如数组和对象,但是对于xml的解析效率肯定大大不如HTTP使用json数据格式的解析效率
- 由于xml协议本身是独立的应用,可兼容任意平台和语言,因此WebService协议也是可实现跨平台跨语言
wsdl
服务端在发布服务后,会自动生成wsdl文件,形似于站点地图用于定位网络服务 、描述接口信息等,访问"服务url+?wsdl" 即可即时预览到wsdl信息。
测试工具soapUI
soapUI是一款可用于测试WebService协议通信的工具,它可以根据wsdl的url自动解析该远程服务中所有的接口服务以及自动封装访问该服务的xml数据。其传输协议使用的是HTTP协议,对返回的报文可自动进行html信息解码。
·
二、HTTP3协议
出现HTTP3是因为HTTP2的传输层协议依然是TCP,而TCP协议存在着头阻塞以及握手协议过于僵化耗时长的问题。谷歌开发的HTTP3使用基于UDP的QUIC协议实现HTTP,其优势在于:
- QUIC相比于TCP协议单管道顺序传输,使用了多管道无序传输,但保证每个管道里是顺序传输,这样客户端不会因为某一条数据,没有发送而导致阻碍后续所有信息传输。总结起来就是实现了并发下异步消息传输其异步效果形似于ajax或线程池。
- QUIC在第一次连接时只使用了两次握手,在第一次握手时,如果客户端没有发送服务端的长期公钥,服务端会返回拒绝消息,伴随着的还Diffie-Hellman算法的公钥、用被信任的证书链中的证书加密后的签名,服务器时间等,客户端收到消息后立刻生成一对短期秘钥,并使用服务端公钥和短期秘钥生成一个初始秘钥,便开始将初始秘钥加密后的信息和短期秘钥发送给服务端,这里是第二次进行握手,服务端拿到后通过客户端的短期秘钥和自己的公钥也可以生成相同的初始秘钥加密信息并返回给客户端,但长久的使用这对初始秘钥肯定会不安全,之后服务端自己也会生成一对短期的秘钥来,服务端将自己短期公钥发给客户端,而后续的请求发送都会基于客户端和服务端的短期秘钥进行加解密,当再次连接时,客户端只需将缓存中的服务端长期公钥与重新生成的秘钥发送给服务端,则会立马进行数据传输。这样便最大限度地减少了传输时间与消耗同时也增加了传输的安全性。 总结起来就像是客户端保存了服务器端的token一样,只要客户端在建立连接时发送了这个token则可以立即传输加密数据。
缺陷:缺点在于大多数平台都有自动限流UDP协议传输的数据包,因为毕竟UDP流量包常用于流量型DOS攻击。
|