文章目录
**
HTTP协议简介
**
超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。
**
认识URL
**
平时我们俗称的 “网址” 其实就是说的 URL
urlencode和urldecode
像 / ? : 等这样的字符, 已经被url当做特殊意义理解了. 因此这些字符不能随意出现.
比如, 某个参数中需要带有这些特殊字符,
就必须先对特殊字符进行转义. 转义的规则如下:
将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每2位做一位,前面加上%, 编码成%XY格式
urldecode就是urlencode的逆过程;
**
HTTP协议格式
**
**
HTTP请求消息Request
**
http请求包括:首行、请求头、空行、请求体
请求行:用来说明请求类型,要访问的资源以及所使用的HTTP版本.
请求头部:用来说明服务器要使用的附加信息
(请求头和请求体之间一定有一行空格)
请求体:即请求数据,可以添加任意的其他数据。
http请求
- 首行: [方法] + [url] + [版本] Header: 请求的属性,
- 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分 结束 Body: 空行后面的内容都是Body.
- Body允许为空字符串. 如果Body存在, 则在Header中会有 一个Content-Length属性来标识Body的长度;
**
HTTP之响应消息Response
**
http响应包括:响应行、响应头、空行、响应体
(报文头和报文体之间有空格行,即使响应数据为空,也必须有空行。)
响应行:也叫状态行,由HTTP协议版本号, 状态码, 状态消息 三部分组成。
响应头:也叫消息报头,用来说明客户端要使用的一些附加信息
响应体:服务器返回给客户端的文本信息
HTTP响应
- 首行: [版本号] + [状态码] + [状态码解释] Header: 请求的属性,
- 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分 结束 Body: 空行后面的内容都是Body.
- Body允许为空字符串. 如果Body存在, 则在Header中会有一个Content-Length属性来标识Body的长度;如果服务器返回了一个html页面, 那么html页 面内容就是在body中.
**
HTTP协议请求方法:
**
**
常见响应状态及含义
**
**
常见HTTP头
**
Content-Type: 数据类型(text/html等)
Content-Length: Body的长度
Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上;
User-Agent: 声明用户的操作系统和浏览器版本信息;
referer: 当前页面是从哪个页面跳转过来的;
location: 搭配3xx状态码使用, 告诉客户端接下来要去哪里访问;
Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能;
HTTPS
HTTPS是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立全信道,加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。
TLS是传输层加密协议,前身是SSL协议,由网景公司1995年发布,有时候两者不区分。
HTTPS实现原理
客户端在使用HTTPS方式与Web服务器通信时有以下几个步骤,如图所示。
(1)客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。
(2)Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。
(3)客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
(4)客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
(5)Web服务器利用自己的私钥解密出会话密钥。
(6)Web服务器利用会话密钥加密与客户端之间的通信。
Http VS Https
简单理解,http传送数据(包括账号和密码),都是明文传送,很容易被窃取或者侦听,在现有的互联网应用中,很明显有不安全因素,所以有了https,可以简单理解成https多了一层加密解密层,在发送前加密,在收到后解密,在网络里传输的都是经过加密的数据
- http的URL以 http:// 开头,而https的URL以 https:// 开头
- http是不安全的,而https是安全的
- http标准端口是 80 ,而https的标准端口是 443
- 在 OSI 网络模型中,http工作于应用层,而https工作在传输层
- http无法加密,而https对传输的数据进行加密
- http无需证书,而https需要认证证书(SSL证书)
一次完整的HTTP请求过程
1.DNS域名解析,拿到IP进行访问
2…TCP 3次握手
3…HTTP协议Request内容发送(首行,head, 空行,body)
4.服务器接收到请求,并且进行相应的业务处理(浏览器得到html代码)
5.服务器端将结果返回给客户端
6…浏览器拿到返回结果,并调用浏览器的内核实现前端页面的渲染
7.TCP 4 次挥手
密钥
密钥它是在明文转换为密文或将密文转换为明文的算法中输入的参数。密钥分为对称密钥与非对称密钥。
对称密钥信息的发送方和接收方使用同一个密钥去加密和解密数据。它的最大优势是加/解密速度快,适合于对大数据量进行加密,但密钥管理困难。
非对称密钥加密它需要使用不同的密钥来分别完成加密和解密操作,一个公开发布,即公开密钥,另一个由用户自己秘密保存,即私用密钥。信息发送者用公开密钥去加密,而信息接收者则用私用密钥去解密。公钥机制灵活,但加密和解密速度却比对称密钥加密慢得多。