http简介
超文本传输协议(英语:HyperText Transfer Protocol,缩写:HTTP)HTTP是一个客户端(用户)和服务端(网站)之间请求和应答的标准,通常使用TCP协议
http状态码,用户任然可以自定义相应的信息
- 1xx消息——请求已被服务器接收,继续处理
- 2xx成功——请求已成功被服务器接收、理解、并接受
- 3xx重定向——需要后续操作才能完成这一请求
- 4xx请求错误——请求含有词法错误或者无法被执行
- 5xx服务器错误——服务器在处理某个正确请求时发生错误
http保持连接
客户端通过tcp三次握手与服务器建立连接,四次挥手断开连接;在HTTP 0.9和1.0中,TCP连线在每一次请求/回应对之后关闭。在HTTP 1.1中,引入了保持连线的机制,一个连接可以重复在多个请求/回应使用。持续连线的方式可以大大减少等待时间 需要添加请求头 Connection:keep-alive
http Post请求
提交数据的类型根据 Content-Type 来区分
- application/x-www-form-urlencoded :浏览器的原生 <form> 表单,提交的数据按照 key1=val1&key2=val2 的方式进行编码,key 和 val 都进行了 URL 转码
- multipart/form-data : 这种提交方式,对于每个字段内容以 ----boundary开始和结束,来分割字段,中间部分为字段内容,和描述信息
- application/json :body传输的是json格式的数据
https简介
超文本传输安全协议(英语:HyperText Transfer Protocol Secure,缩写:HTTPS;常称为HTTP over TLS、HTTP over SSL或HTTP Secure) HTTPS经由HTTP进行通信,但利用SSL/TLS来加密数据包。HTTPS开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。
https优势
- 内容加密,建立一个信息安全的通道保证数据安全.
- 添加了身份认证,确认服务器的真实性
- 验证数据完成性,避免数据别中间人修改或者冒充
https劣势
因为多了对数据的加密,和验证的身份过程,比http较慢,但是这个对于安全的取舍是值得的
https的传输
https是在 http->tls-tcp 在http与tcp之间添加了 一层 tls协议,这个协议是独立的,可以应用在其它的协议之间. https 是在建立握手的阶段是通过非对称加密方式进行通讯的,在传输的阶段依然是使用的是对称加密,因为对称加密的key是在非对称加密阶段产生的,这个是不可能别窃取的
TLS建立握手的过程
单双向认证
单向认证指的是只有一段效验证书的合法性,一般都是client来效验服务器的合法性,客户端一般为 存方 ca.crt 和服务器存放 server.crt 和 server.key
双向认证
客户端和服务端都需要互相效验,客户端有 server.crt client.crt client.key ,服务端有 server.key,server.crt ,ca.crt,类似单向认证,每个端都做了依次效验。
证书的效验
首先验证公钥是否是发布者的公钥,然后用公钥对密文进行解密,得到摘要(这个是唯一性),使用发布者对文本同样的摘要算法得到摘要文本,比对摘要是否一致即可确认信息是否被篡改或者是指定发布者发布的。
参考:
*
- http://www.wxtlife.com/2016/03/27/%E8%AF%A6%E8%A7%A3https%E6%98%AF%E5%A6%82%E4%BD%95%E7%A1%AE%E4%BF%9D%E5%AE%89%E5%85%A8%E7%9A%84%EF%BC%9F/
http://www.enkichen.com/2016/02/26/digital-certificate-based/