http

42 阅读2分钟

http1.0  需要等待服务端响应了 才可以继续发送请求

http1.1  回送数据给客户端的时候,  客户端还是需要按照 响应的顺序来一一接收

http2.0  pipelining链接

把多个http请求放到一个tcp连接中发送, 客户端还是要按照发送请求的顺序来 接收响应

传输协议

传输协议这块,gRPC使用HTTP/2作为底层传输协议,据说也可替换为其他协议,但目前还未考证;而RestFul则使用HTTP。

RPC over HTTP 和restful

  1. 过程的名字,过程的参数以及它们的类型、顺序等
  2. rpc操作的是方法和过程、restful操作的是资源

RPC over TCP和restful

rpc over tcp 通过长连接减少连接的建立所产生的花费

restful 可以通过keep-alive实现长连接  问题:request-response模型是阻塞的(http1.0 /http1.1)发送一个请求后只有等到response返回才能发第二个请求

HTTPS 请求过程

用 非对称加密算法来 传递 对称加算的秘钥,同时用摘要算法保证数据的完整性

对称加密算法:des aes           Data Encryption Standard

非对称加密算法 rsa   ecc

常见的hash 算法

md5  sha-1

1、首先,客户端向服务端发出加密(安全连接)请求

2、服务端用自己的私钥加密网页后,连同本身的数字证书,一起发送给客户端

3、客户端(浏览器)的证书管理器,有"受信任的根证书颁发机构"列表。客户端会根据这张列表,查看解开数字证书的公钥是否在列表之内。如果数字证书记载的网址,与你正在浏览的网址不一致,就说明这张证书可能被冒用,浏览器会发出警告。如果这张数字证书不是由受信任的机构颁发的,浏览器会发出另一种警告。

4、如果数字证书是可靠的,客户端就可以使用证书中的服务器公钥,对信息进行加密,然后与服务器交换加密信息。

ln, err := net.Listen("tcp", addr)

for {

   rw, err := l.Accept()

    c := srv.newConn(rw)

    go c.serve(connCtx)

}