1. HTTP和HTTPS

1.1 HTTP常用方法

  1. GET :返回报文主体信息,不会对数据产生任何影响。
    2. POST : 传输实体主体,用于给服务器发送数据,如表单提交等
    3. HEAD :获取报文头部信息。
    4. OPTIONS : 询问支持方法
    5. PUT :传输文件,报文主体中包含文件内容,保存到指定URI资源的存放位置
    6. DELETE : 删除指定URI下的指定资源。

    1.2 常用Status Code

  • 100:请求已收到,正等待后续资源
    200: OK 请求已完成
    301: 永久重定向
    403: Forbidden 没有访问资源的权限
    404: Not Found 找不到请求资源
    500: Not Implement 服务端不支持或不能被处理。
    502: Bad Getaway 网关错误

    1.3 HTTP与HTTPS区别

    https是http加上ssl的应用层协议。在http的基础上增加了安全性和可靠性。
  • 端口:http默认是80端口, https默认是443端口
  • 安全性:http是明文传输,https是密文传输。
  • 认证:http没有认证,https在建立TCP连接前会进行ssl层的握手,在这个过程中需要认证。
  • 成本:https的证书需要成本,同时加密和解密时对CPU和内存开销增加。

    1.4 HTTPS的原理

  1. https通信时,首先建立ssl层的连接,客户端将ssl版本号和加密组件发到服务端服务端收到后对ssl版本号和加密组件进行匹配,同时将CA证书及密钥发送到客户端
  2. 客户端对证书进行验证,验证通过后使用非对称加密对数据通信时的密钥进行协商。
  3. 协商后得到一致的获得一致的对称加密密钥。然后使用对称加密算法进行TCP连接,后续的过程跟http的过程一致。三次握手,数据交换,四次挥手,通信结束。

详细可参考:https://zhuanlan.zhihu.com/p/56663184

HTTPS是HTTP经由加入SSL层来提高数据传输的安全性。其中SSL依靠证书来验证服务器的身份,并对浏览器与服务器之间的 通信进行数据加密。HTTP不适合传输敏感信息。
HTTP的cookie是明文传送的,HTTPS的cooike是密文传送的。

websocket是基于tcp的协议,websocket只需要服务端和客户端一次握手,就可以自由进行数据传送和接收,允许服务端主动发送数据,不需要使用轮询的方式

2. 协议

DNS域名服务

  • 主要使用UDP
  • 从域名到ip的解析
  • DNS占用53号端口,同时使用TCP和UDP协议。那么DNS在什么情况下使用这两种协议?

(DNS在区域传输的时候使用TCP协议,其他时候使用UDP协议。)

  1. 辅域名服务器会定时(一般3小时)向主域名服务器进行查询以便了解数据是否有变动。如有变动,会执行一次区域传送,进行数据同步。区域传送使用TCP而不是UDP,因为数据同步传送的数据量比一个请求应答的数据量要多得多。
  2. 域名解析时使用UDP协议:客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可。不用经过三次握手,这样DNS服务器负载更低,响应更快。理论上说,客户端也可以指定向DNS服务器查询时用TCP,但事实上,很多DNS服务器进行配置的时候,仅支持UDP查询包。