http请求过程
我们在浏览器输入http://www.baidu.com想要进入百度首页,但是这是个域名,没法准确定位到服务器的位置,所以需要通过域名解析,把域名解析成对应的ip地址,然后通过ip地址查找目的主机。整个访问过程可以概括为:
- 域名解析
- 发起TCP三次握手建立连接
- 建立连接后发起http请求
- 服务器响应请求,浏览器获取html源码
- 浏览器解析html代码,并请求相关css,js和图片资源
- 浏览器渲染页面
- 释放TCP连接
http状态码
- 1xx :指示信息,表示请求已接收,继续处理
- 2xx:成功,表示请求已被成功接收,理解,接收
- 3xx:重定向,要完成请求必须进行更进一步操作
- 4xx:客服端错误,请求有语法错误或请求无法实现
- 5xx:服务端错误,服务器未能实现合法的请求
常见状态码
- 200 :正常返回信息
- 400 :户端请求有语法错误,不能被服务器所理解
- 401 :请求未经授权
- 403:服务器收到请求,但是拒绝提供服务
- 404:请求资源不存在
- 500:服务器发生不可预期的错误
- 503:服务器当前不能处理客户端的请求,一段时间后可能恢复正常
GET请求与POST请求的区别
- http报文层面:get请求信息放在url,post放在报文中。
- 数据库层面:get请求符合幂等性和安全性,post不符合。
- 其他层面:get可以被缓存、存储,post不行
cookie与session的区别
cookie简介
- 是由服务器发给客户端的特殊信息,以文本的形式存放在客户端
- 客户端再次请求的时候,会把cookie回发
- 服务器接收到后,会解析cookie生成与客户端对应的内容
session简介
- 服务器端的机制,在服务器上保存的信息
- 解析客户端请求并操作session id,按需保存状态信息
session实现方式
- 使用cookie实现:服务器给每个session分配一个唯一的jsessionid,并同cookie分配给客户端。
- 使用url回写实现:在url上携带jsessionid参数
http与https的区别
- https需要ca申请证书,http不需要
- https密文传输,http明文传输
- 连接方式不同,https默认使用443端口,http使用80端口
- https=http+加密+认证+完整性保护,较安全
SSL (Security Sockets Layer 安全套接层)
- 为网络通信提供安全及数据完整性的一种安全协议
- 是操作系统对外的API,SSL3.0后更名为TLS
- 采用身份验证和数据加密保证网络通信的安全和数据的完整性
加密方式
- 对称加密:加密和解密都使用同一个密钥
- 非对称加密:加密使用的密钥和解密使用的密钥是不同的
- 哈希算法:讲仁义长度的信息转换为固定长度的值,算法不可逆
- 数字签名:证明某个消息或文件是某人发出/认同的
https数据传输流程
- 浏览器将支持的加密算法信息发送给服务器
- 服务器选择一套浏览器支持的加密算法,以证书的形式回发浏览器
- 浏览器验证证书合法性,并结合证书公钥加密信息发送给服务器
- 服务器使用私钥解密信息,验证哈希,加密响应消息回发浏览器
- 浏览器解密响应消息,并对消息进行验真,之后进行加密交互数据