1. HTTP和HTTPS
1.1 HTTP常用方法
- 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的原理
- https通信时,首先建立ssl层的连接,客户端将ssl版本号和加密组件发到服务端,服务端收到后对ssl版本号和加密组件进行匹配,同时将CA证书及密钥发送到客户端。
- 客户端对证书进行验证,验证通过后使用非对称加密对数据通信时的密钥进行协商。
- 协商后得到一致的获得一致的对称加密密钥。然后使用对称加密算法进行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协议。)
- 辅域名服务器会定时(一般3小时)向主域名服务器进行查询以便了解数据是否有变动。如有变动,会执行一次区域传送,进行数据同步。区域传送使用TCP而不是UDP,因为数据同步传送的数据量比一个请求应答的数据量要多得多。
- 域名解析时使用UDP协议:客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可。不用经过三次握手,这样DNS服务器负载更低,响应更快。理论上说,客户端也可以指定向DNS服务器查询时用TCP,但事实上,很多DNS服务器进行配置的时候,仅支持UDP查询包。
