HTTP协议基础(一)

来源:互联网 发布:java语言与basic 编辑:程序博客网 时间:2024/05/16 04:33

应用层HTTP协议基础(一)

 

WebHTTP

     Web应用遵循的是HTTP协议(超文本传输协议);HTTP版本有1.01.1两种版本。

     C/S结构:即客户/服务器结构;客户:发出请求、接收、展示Web对象。服务器:响应客户的请求,发送对象。

 

HTTP协议使用TCP传输服务:

   1、服务器在80端口等待客户的请求;

   2、浏览器发起到服务器的TCP连接(创建套接字Socket);

   3HTTP客户端与HTTP服务器交换HTTP消息;

   4HTTP服务器关闭TCP连接;

 

HTTP连接的两种类型

  1、非持久性连接

     每个TCP连接最多允许传输一个对象。比如:1.0版本

   2、持久性连接;可分为无流水的持久性连接/有流水的持久性连接。

     每个TCP连接允许传输多个对象。比如:1.1版本

非持久性连接的工作过程

比如www.school.edu/department/class.index;文件中包括文本和100个指向jpg图片的链接;

RTT(Round Trip Time)

     即客户端发送一个很小的数据包到服务器,并返回消息到客户端所经历的时间。

响应时间:

    从发起开始的总的响应时间为  总响应时间 = 2*RTT +文件发送时间。

 

非持续性连接的缺点

       1、时间开销大,每个对象至少需要2RTT

       2、操作系统为每个TCP连接开销资源(TCP连接是一种宝贵资源);

       3、为了优化这个缺点浏览器会并行发出多个请求,会给服务器造成很大负担;


为了克服以上缺点进行改进;

持久性连接:

      1、发送响应之后,TCP保持连接不断开;

      2、后续的HTTP消息通过这个TCP连接发送;

持久性连接又可分为:

⑴无流水线的持久性连接:

      a、只有当客户端接收到前一个请求的响应消息后,才能发送下一个HTTP请求;

      b、每个被引用的对象需要消耗1RTT

⑵有流水线的持久性连接:

      a、只要客户端发现了一个引用对象就会尽快发出请求,客户端就可以接连不断的发送请求;

      b、消耗时间大大减少,理想情况下,收到所有引用对象只消耗1RTT

      c、应用于HTTP协议1.1版本。

HTTP有两类响应消息:

 ⑴、请求消息;

       ASCII :用户直接可读;

请求消息通用格式:


 例如:

        Get/somedir/class.html  HTTP/1.1

        Host : www.someschool.edu

        User-agent : InternetExplorer/11.0

        connection: close

        Accept-language: fr

      ………………….

Get:请求方法:

      1、POST方法:请求消息放在实体当中上传客户端输入;

      2、URL 方法:即使用Get方法,客户输入信息通过URL字段上传;

      3、HEAD方法:请求服务器不要把请求的对象放入响应消息当中;

      ………………………..

URL:(Uniform Resource Locator)统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址

Version:协议及版本。

 

⑵、响应消息:

       响应消息通用格式:


例如:

     HTTP/1.1 200  OK

     Connection:  close

     Date: Thu,05 Aug 2008 12:00:15 GMT

     Server:Apache/1.3.0 (Unix)

     Last-Modified:  Mon,22 Jun 2007 …….

     content-Length:  6821

     content-Type:  text/html

 

     data data data ………….


Status code: 状态码,

例如:

    "200" : OK

    "302" : Found     重定向.

    "400" : Bad Request   错误请求,发出错误的不符合Http协议的请求

    "403" : Forbidden   禁止

    "404" : Not Found   未找到。演示访问一个不存在的页面看报文

    "500" : Internal Server Error   服务器内部错误。演示页面抛出异常。

    "503" : Service Unavailable。 一般是访问人数过多

   备注:请求消息/响应消息的头部行是可扩展的

 

HTTP协议是一种无状态协议

即服务器不维护任何有关客户端过去所发请求的信息;(有状态的协议更复杂)。

 

      当前很多应用是需要服务器掌握客户端的状态的,比如:当浏览器为购物浏览器时,就不希望HTTP协议是一种无状态协议。为了解决了HTTP协议的这种无状态性,在HTTP中引入Cookie技术;网站上需要用户辨别身份,及进行session跟踪而存储在用户本地终端上的数据。

 

Cookie技术组件

1.   HTTP请求消息的Cookie头部行;

2.   HTTP响应消息的Cookie头部行;

3.   保存在客户端主机上的Cookie文件,由浏览器管理;

4.   服务器端的后台数据库;

 

 Cookie基本原理示意图:


Cookie的应用:

1. 身份认证;

2. 购物车;

3. 推出更具针对性的广告;

4. 实现社交媒体的共享;

…….……

 

Cookie技术的隐私问题:

1.  跟踪客户端的网站使用情况;

2.  记忆用户优先选项、搜索和收藏;

3.  Cookie中可能包含一些用户名、电脑名、邮箱地址等敏感信息;

……………….  

       当今社会计算机的普及可以每个人都有自己的计算机,而当访问服务器只访问原始服务器时,访问量一大会给服务器造成很大的负担。如果可以在不访问原始服务器的情况下满足HTTP请求,为了解决这一问题,采用了Web缓存/代理服务器技术;

Web缓存/代理服务器技术:

好处:

1.  缩短客户请求的响应时间;

2.  减少机构或者公司的流量;

3.  在大范围内实现有效的内容分发;

.....................................................

Web缓存/代理服务器技术原理图:


1.  用户设定浏览器通过缓存进行Web访问;

2.  浏览器向缓存/代理服务器发送HTTP请求;

      a、如果所请求对象在缓存中,则缓存返回对象;

      b、如果请求对象不在缓存中,则缓存对原始服务器发出HTTP请求,原始服务器响应消息发给代理服务器(同时在代理服务器中进行缓存),然后代理服务器响应浏览器的请求;

3. 缓存即充当客户端也充当服务器;

备注:HTTP协议更具体内容请参考 RFC2616;