理解HTTP协议

标签: http协议

在互联网时代HTTP协议的重要性无需多言,对于技术岗位的同学们来说理解掌握HTTP协议是必须的。本篇博客就从HTTP协议的演进、特性、重要知识点和工作中常见问题的总结等方面进行简单的介绍。理解掌握了这些点工作中就OK了,当然在面试中也是少不了的,如果能结合实践掌握这篇博客的80%应对一般的面试应该是够了。如果要深入学习HTTP协议的细节请看那本经典的《HTTP权威指南》。

一、HTTP协议的演进

  HTTP(HyperText Transfer Protocol)协议是基于TCP的应用层协议,它不关心数据传输的细节,主要是用来规定客户端和服务端的数据传输格式,最初是用来向客户端传输HTML页面的内容。默认端口是80。

  1.HTTP 0.9版本  1991年

  这个版本就是最初用来向客户端传输HTML页面的,所以只有一个GET命令,然后服务器返回客户端一个HTML页面,不能是其他格式。利用这个版本完全可以构建一个简单的静态网站了。

  2.HTTP 1.0版本  1996年

  1.0版本是改变比较大的,奠定了现在HTTP协议的基础。这个版本的协议不仅可以传输HTML的文本页面,还可以传输其他二进制文件,例如图片、视频。而且还增加了现在常用的POST和HEAD命令。请求消息和响应消息也不是单一的了,规定了一些元数据字段。例如字符集、编码、状态响应码等。

  3.HTTP 1.1版本  1997年

  实际上是在1.0版本之后半年时间又发布了一个版本,这个版本在1.0版本的基础上更加完善了。这个版本增加了持久连接,就是说之前版本的协议一次请求就是一次TCP连接,请求完成后这个连接就关闭掉了。众所周知TCP协议是可靠的,建立连接需要3次握手,断开连接需要4次挥手,并且TCP有流量控制和拥塞控制,有慢开始机制,刚建立连接时传输比较慢,这是比较耗费资源的。一个丰富的页面会有许多图片、表单和超链接。这样的话就会有多次的HTTP请求,所以在这个版本上默认不关闭TCP连接也不用声明Connection: keep-alive字段。如果确实要关闭可以指定Connection: close字段。还引入了管道机制,就是说在一个TCP连接里可以同时发送多个HTTP请求,而不必等待上一个请求响应成功再发送。还增加了PUT、PATCH、HEAD、 OPTIONS、DELETE等命令,丰富了客户端和服务端交互动作。还增加了Host字段。

  4.HTTP 2版本  2015年

  这个版本也是随着互联网的发展,有了新的需求制定了新的功能还有对上一个版本的完善。1.1版本有了管道机制,但是正在服务端还是要对请求进行排队处理。这个版本可以多工的处理。还有了头信息压缩和服务器的主动推送。

  5.HTTPS

  HTTPS是HTTP协议的安全版本,HTTP协议的数据传输是明文的,是不安全的,HTTPS使用了SSL/TLS协议进行了加密处理。

  关于HTTP协议历史演进的详细介绍请参考:http://www.ruanyifeng.com/blog/2016/08/http.html

  下面介绍没有特殊说明默认HTTP/1.1版本

二、HTTP协议的特点

  1.HTTP协议是无状态的

  就是说每次HTTP请求都是独立的,任何两个请求之间没有什么必然的联系。但是在实际应用当中并不是完全这样的,引入了Cookie和Session机制来关联请求。

  2.多次HTTP请求

  在客户端请求网页时多数情况下并不是一次请求就能成功的,服务端首先是响应HTML页面,然后浏览器收到响应之后发现HTML页面还引用了其他的资源,例如,CSS,JS文件,图片等等,还会自动发送HTTP请求这些需要的资源。现在的HTTP版本支持管道机制,可以同时请求和响应多个请求,大大提高了效率。

  3.基于TCP协议

  HTTP协议目的是规定客户端和服务端数据传输的格式和数据交互行为,并不负责数据传输的细节。底层是基于TCP实现的。现在使用的版本当中是默认持久连接的,也就是多次HTTP请求使用一个TCP连接。

三、HTTP报文

  1.请求报文
  这里写图片描述

HTTP/HTTPS协议分析工具(Http Analyzer)7.5.3.455 汉化特别版 HTTP Analyzer 分两部份,可以集成在IE浏览器中抓包,也可以单独的安装应用程序的包,非常实用。 压缩包内有注册机,大家根据需要选择相应的产品获取注册码。 这是一款实时分析 HTTP/HTTPS 数据流的工具。它可以实时捕捉HTTP/HTTPS 协议数据,可以显示许多信息(包括:文件头、内容、Cookie、查询字符窜、提交的数据、重定向的url地址),可以提供缓冲区信息、清理对话内容、HTTP状态信息和其他过滤选项。同时还是一个非常有用的分析、调试和诊断的开发工具。 Http Analyzer是一个HTTP/HTTPS协议分析工具,用此工具可以非常快速的分析出绝大多数视频博客的视频地址。尽管有一些网站提供了诸如 YouTube ,Google Video 等视频网站的php解码程序,不过那些php程序并不是通用的。当博客视频网站对视频地址加密算法做些变动时,php程序又需要大规模改动才能对应解码。 使用类似Http Analyzer协议分析工具就不同了,所有的博客视频都是http方式提供的,最终的http路径是肯定要明文出现的,所以获取此路径是可能的。 HTTP/HTTPS协议分析工具(Http Analyzer)使用方法 第一步:设置好Http Analyzer的过滤器选项大部分的视频博客的Type都是 video/flv ,video/x-flv ,application/octet-stream 极少部分采用application/x-shockwave-flash 或干脆不表明类型。http的返回结果肯定是2XX,所以在Result 要设置成<300。返回的Size最好采用倒序排列,视频博客的大小一般比较大,倒序容易发现。 第二步:运行Http Analyzer:(点击工具栏第一个绿色箭头图标)打开YouTube 或6rooms视频博客网站。回到Http Analyzer窗口,看你需要的视频地址是不是老老实实的呆在里面呢?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值