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协议