HTTP协议基础(一)
应用层HTTP协议基础(一)
Web与HTTP:
Web应用遵循的是HTTP协议(超文本传输协议);HTTP版本有1.0、1.1两种版本。
C/S结构:即客户/服务器结构;客户:发出请求、接收、展示Web对象。服务器:响应客户的请求,发送对象。
HTTP协议使用TCP传输服务:
1、服务器在80端口等待客户的请求;
2、浏览器发起到服务器的TCP连接(创建套接字Socket);
3、HTTP客户端与HTTP服务器交换HTTP消息;
4、HTTP服务器关闭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、时间开销大,每个对象至少需要2个RTT;
2、操作系统为每个TCP连接开销资源(TCP连接是一种宝贵资源);
3、为了优化这个缺点浏览器会并行发出多个请求,会给服务器造成很大负担;
为了克服以上缺点进行改进;
持久性连接:
1、发送响应之后,TCP保持连接不断开;
2、后续的HTTP消息通过这个TCP连接发送;
持久性连接又可分为:
⑴无流水线的持久性连接:
a、只有当客户端接收到前一个请求的响应消息后,才能发送下一个HTTP请求;
b、每个被引用的对象需要消耗1个RTT;
⑵有流水线的持久性连接:
a、只要客户端发现了一个引用对象就会尽快发出请求,客户端就可以接连不断的发送请求;
b、消耗时间大大减少,理想情况下,收到所有引用对象只消耗1个RTT;
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;