HTTP协议总结

来源:互联网 发布:家装平面图软件 编辑:程序博客网 时间:2024/04/27 20:41

一. 概念:

  • http协议是基于tcp/ip的应用层协议,他定义了客户端浏览器和web服务器之间的数据传输规则。
  • 使网络传输减少,使得浏览器更加高效。
  • http还在提高传输效率之外定义了如web响应显示的规则,如在传输内容中同时包含文本和图形时,其显示先后问题。
  • 标准C/S模型,是一种无状态协议。
  • 由于所有的网络传输都是通过TCP/IP进行的,http协议是tcp/ip应用层协议,通常承载与tcp协议之上。当http承载于TLS或者SSL协议层只上时,就成了较之http协议更加安全的https协议。
  • http默认端口号为80,https默认端口号为443.
  • 他的实用价值并不只局限于网页浏览,如QQ,迅雷等也同时使用了http协议。

二. 特点:

2.1 http协议永远都是客户端发其请求,服务端会送响应的,因此,无法实现在客户端没有发送请求时给客户端推送内容。

2.2 http特点

  1. C/S模型,支持基本认证和安全认证。

  2. 简单快速:因为http请求时只需要发送路径和方法(常用方法像POST,GET,HEAD等),每种方法规定了客户端和服务器之间的联系类型。http协议程序简单,规模小,速度快。

  3. 灵活:http协议允许传送任意数据类型的数据,正在传输的数据的类型使用Content-Type标记。

  4. 持续链接和非持续链接:http0.9 和 http1.0版本不支持持续链接,每次请求后,服务端响应并发送响应的响应文件,然后立即关闭链接。而在http1.1之后,经过改进使用持续链接,这样可以使我们不必每次请求都握手,减少请求时间,一个链接就可以承载多个请求。

  5. 无状态:http协议无状态指的是http协议对事物的处理没有记忆能力,这样导致如果后续的处理需要前面请求的信息或者数据,则必须重传前面请求的信息。这样可能导致每次链接传送的数据两增大。

2.3 无状态

这个无状态就指的是http不会为了下一次链接而维护这一次的所传输的信息(为了保证服务器内存)。比如像客户获取了一张网页后关闭了浏览器,然后再一次启动浏览器登陆该网站,服务器这时候是并不知道客户关闭了一次浏览器。

由于web服务器要面对很多的浏览器并发访问,为了提高服务器对并发访问的处理能力,http在设计是规定,web服务器在响应请求应答时,不会保留发送请求的web服务器的任何状态信息。由于web服务器不保存web浏览器进程的任何信息,所以http协议是无状态协议(stateless protocol)。

2.3 无状态和Keep-alive区别

无状态指的是协议对事物的处理没有记忆能力,服务器不知道客户端是什么状态,也就是说,你所打开的服务器上的网页和你之前所打开的网页之间没有任何联系。

http是一种无状态面向链接协议,无状态不代表http不能保持tcp链接,也并不意味着http使用的是UDP协议。

Keep-alive:keep-alive是在http1.1版本中加入的一种为了使同一链接保持存活状态进而接收多个请求的一种状态信息。即当一个网页打开完成后,客户端和服务器之间的tcp链接不会关闭,后续请求该服务器网页仍然可以使用该链接。

keep-alive不会一直存在,而是拥有其存活时间,这个时间可以在不同的服务器软件中设置(比如apache).

四. 当你点击一个网页时,http服务其都做了什么?

4.1 http工作流程分为以下几步:

  1. 建立链接:当你点击一个超链接时,http开始工作。

  2. 请求: 建立链接之后,客户端给服务器发送一个请求,请求格式包括:统一的资源标识符(URL),协议版本号,后面是MIME信息(请求修饰符客户信息可能的内容)。

  3. 响应:服务器接收到请求后,给予相应的响应,响应格式为:一个状态行,包括信息协议的版本号一个成功或者失败的代码,后面是MIME信息(服务器信息实体信息可能的内容)。

  4. 回显:客户端将服务器返回的信息显示到客户端浏览器上,并断开链接。

  5. 错误信息:这个错误信息其实就是在第四步时服务器响应返回的错误代码,这个错误代码回显示在客户端的浏览器上,这上面一系列的步骤都是http服务器完成的,用户只要点击超链接,等待浏览器返回就好。

注意:http是一种P2P的面向链接协议,所以要在传输之前先建立链接。

1 0