HTTP

184 阅读4分钟

HTTP协议

1.Http重要性:

无论以后用webserverice,还是用rest做大型架构,都离不开对http协议的认识

可以简化的说:

1. webservice=http协议+XML
2. Rest=http协议+json

各种API,也一般是用http+XML/JSON来实现的·

往小了说:做采集,小偷站,也需要对http协议有所了解

以及Ajax对http协议有了了解之后,学习Ajax是非常容易理解的

2.什么是协议?

计算机中的协议和现实中的协议是一样的,一式双份/多份,双方/多方都遵从共同的一个规范,这个规范就可以称之为协议

计算机之所以能全世界互通,协议功不可没,如果没有协议,计算机各说各话,根本谁都听不懂谁

计算机世界里有

ftp  http  stmp  pop  tcp/ip协议
3.http协议工作流程

1.当你打开页面发生了什么?

原始状态(0):客户端和服务器之间没有关系

2.建立连接

什么叫连接:连接就是网络上的虚拟电路

3.返回响应信息

4.响应完成之后

断开连接,两者再次没有关系

4.http请求信息和响应信息的格式

1.请求:

​ 1.请求行

​ 2.请求头信息

​ 3.请求主体信息(可以没有)

​ 4.头信息结束后和主体信息之间要空一行

2.请求行又分为三部分

​ 1.请求方法

​ 2.请求路径

​ 3.所用的协议

3.请求的方法有:

GET 、POST、PUT、DELETE、TRACE、OPTIONS

问题:浏览器能发送http协议,http协议一定要浏览器来发送么?

答:不是  http既然是一种协议,那么只要满足这种协议,什么工具都可以发送

1.打开命令行

​ telnet 192.168.1.125 80

请求路径:就是URL的一部分

请求所用的协议:目前一般是http/1.1 (0.9 1.0 已经基本不用)

5.post请求

请求方法:

GET 、POST、PUT、DELETE、TRACE、OPTIONS

​ HEAD和GET基本一致,只是返回内容

比如我们只是确认一个内容(比如照片)不正常存在,不需要返回照片内容,这是用HEAD比较合适
6.http与https的一些区别:
1.http是超文本传输协议,传输比较简单,数据应用层的信息传输
2.https则是具有SSL/TLS加密后的超文本传输安全协议,传递数据进行了加密,更加不容易被窃取
3.证书方面:http的传输不需要证书验证,而https的传输需要到证书颁发机构申请证书;
4.本质上它们是两种不同的传输协议和连接方式,在端口号上也是有区别的http使用的是80端口号,https则使用的是443端口号
5.http属于无状态传输,每两个请求之间没有任何联系,都是独立的;https协议是由加密传输与身份验证,比http协议更加安全
6.https是被浏览器更加推荐的,在主流浏览器中可以看到,http的协议会被浏览器标上不安全的警告;
7.https很安全,但为什么有些大公司还是使用http呢?

问题:https很安全,但为什么有些大公司还是使用http呢?

主要是用户体验和成本考虑:

1.SSL证书需要购买申请,功能越强大的证书费用越高
2.SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个小号(SSL有扩展可以部分解决这个问题,但比较麻烦,而且要求浏览器和操作系统的主持,Windows XP就不支持这个扩展,考虑到XP的装机量,这个特性几乎没用)
3.根据ACM CoNEXT数据显示,使用HTTPS协议会使页面加载时间延长50%,增加10%到20%的耗电。
4.HTTPS连接缓存不如http高效,流量成本高,
5.HTTPS链接服务器端资源占用高很多,支持访客多的网站需要投入更大的成本。
6.HTTPS协议握手阶段比较费时,对网站响应速度有影响,影响用户体验。**比较好的方式是采用分而治之,比如某些大型公司,首页使用的是http协议,而比较敏感的页面使用的是https协议