【计算机网络】Http与Https
一、Http
1、定义
HTTP(HyperText Transfer Protocol,超文本传输协议)是应用层协议,是一个简单的请求-响应协议,它通常运行在TCP之上。
它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII码形式给出,而消息内容则具有一个类似MIME的格式。
协议的服务器端实现程序有httpd、nginx等,其客户端的实现程序主要是Web浏览器,例如Firefox、InternetExplorer、Google chrome、Safari、Opera等。
2、工作原理
- 客户与服务器建立连接;
- 客户向服务器提出请求;
- 服务器接受请求,并根据请求返回相应的文件作为应答;
- 客户与服务器关闭连接。
客户与服务器之间的HTTP连接是一种一次性连接,它限制每次连接只处理一个请求,当服务器返回本次请求的应答后便立即关闭连接,下次请求再重新建立连接。
HTTP是一种无状态协议,即服务器不保留与客户交易时的任何状态。这就大大减轻了服务器记忆负担,从而保持较快的响应速度。
3、请求方式
HTTP规范定义了9种请求方法,每种请求方法规定了客户和服务器之间不同的信息交换方式,常用的请求方法是GET和POST。
GET 和 POST 只是 HTTP 协议中两种请求方式,而 HTTP 协议是基于 TCP/IP 的应用层协议,无论 GET 还是 POST,用的都是同一个传输层协议,所以在传输上,没有区别。
- 报文格式上,不带参数时,最大区别就是第一行方法名不同, 仅仅是报文的几个字符不同而已。POST 方法请求报文第一行是这样的 POST /url HTTP/1.1 GET 方法请求报文第一行是这样的 GET /url HTTP/1.1;
- 带参数时报文的区别,在约定中,GET 方法的参数应该放在 url 中,POST 方法参数应该放在 body 中。
GET | POST | |
---|---|---|
后退按钮/刷新 | 幂等 | 数据会被重新提交(浏览器应该告知用户数据会被重新提交)。 |
书签 | 可收藏为书签 | 不可收藏为书签 |
缓存 | 能被缓存 | 不能缓存 |
编码类型 | application/x-www-form-urlencoded | application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。 |
历史 | 参数保留在浏览器历史中。 | 参数不会保存在浏览器历史中。 |
对数据长度的限制 | 是的。当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。 | 无限制。 |
对数据类型的限制 | 只允许 ASCII 字符。 | 没有限制。也允许二进制数据。 |
安全性 |
与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。 在发送密码或其他敏感信息时绝不要使用 GET ! |
POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。 |
可见性 | 数据在 URL 中对所有人都是可见的。 | 数据不会显示在 URL 中。 |
二、Https
1、定义
HTTPS(Secure Hypertext Transfer Protocol,安全超文本传输协议)是以安全为目标的HTTP通道,即HTTP下加入SSL层。
2、工作原理
- 客户端使用https访问服务器,请求与Web服务器建立SSL连接;
- 服务器收到客户端请求后,会将网站的证书信息(包含公钥)传送给客户端;
- 客户端浏览器与服务器协商SSL连接的安全等级,也就是信息加密等级;
- 客户端浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站;
- 服务器利用自己的私钥解密出会话密钥;
- 服务器利用会话密钥加密与客户端之间的通信。
3、Http与Https的区别
- https协议需要到CA申请证书,一般免费证书较少,因而需要一定费用;
- http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议;
- http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443;
- http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输建立安全信息通道、身份认证的网络协议,比http协议安全。
4、优势
- 可认证用户和服务器,确保数据发送到正确的客户端和服务器;
- HTTPS协议是由SSL+HTTP协议构建的可加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性;
- HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但大幅增加了中间人攻击的成本;
- 谷歌曾在2014年8月份调整搜索引擎算法,并称“比起同等HTTP网站,采用HTTPS加密的网站在搜索结果中的排名将会更高”。