码迷,mamicode.com
首页 > Web开发 > 详细

HTTP基础

时间:2015-07-01 06:22:17      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:http   http基础   web基础   http详解   

HTTP简介

HTTPHyperText Transfer Protocol),即超文本传输协议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。通过HTTP或者HTTPS协议请求的资源由统一资源标识符(Uniform Resource Identifiers,URI)来标识。通过HTTP协议,服务器端可以将用户请求的资源(包括图片,文本,多媒体文件等)以一定的格式显示在浏览器上。


HTTP协议版本

http0.9

只接受GET一种请求方法,没有在通讯中指定版本号,且不支持请求头。由于该版本不支持POST方法,因此客户端无法向服务器传递太多信息。已不再使用。

http/1.0

     引入了MIME技术,使得能够支持多媒体功能

     引入keep-alive

至今仍被广泛采用,特别是在代理服务器中。

http/1.1

持久连接被默认采用,并能很好地配合代理服务器工作。还支持以管道方式在同时发送多个请求,以便降低线路负载,提高传输速度。

HTTP/1.1相较于HTTP/1.0协议的区别主要体现在:

缓存处理

带宽优化及网络连接的使用

错误通知的管理

消息在网络中的发送

互联网地址的维护

安全性及完整性


统一资源标识符URI

URI是uniform resource identifier的缩写,统一资源标识符,用来唯一的标识一个资源。URL是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。我们一般都使用URL来定位所请求的资源。


URL的通用语法:

<scheme>://<user>:<password>@<host>:<port>/<path>:<params>?<query>#<frag>

用字符?将其与URL的其余部分分隔开来.例如?key1=value1&key2=value2 片段制定了URL资源中的某个章节

例如:ftp://prep.ai.mit.edu/pub/gnu;type=d

            http://www.joes-hardware.com/inventory-check.cgi?item=12345


HTTP的一次响应过程

技术分享

1)建立连接

2)接收请求

3)处理请求

4)访问资源

5)构建响应报文

6)发送响应

7)记录日志


Cookie

这个东西由网景公司发明,用来辨别用户身份,存储在客户端中,由浏览器来维护。由于HTTP协议是无状态的,即每一次的资源请求都是独立的,服务器不知道客户端上一次的请求做了什么,这阻碍了交互式Web应用程序的实现,然后cookie就出现了。

当用户第一次访问网站时,服务器进程会为用户生成一个唯一的标识信息,并且将这个标识信息添加到响应报文的首部予以响应(),客户端收到这个Cookie信息后,就把这个Cookie信息保存至浏览器进程能够访问到的缓存目录下,并把它保存为一个小文件,只要浏览器不关闭,访问同一个域名下的每一个链接时,浏览器在发送请求报文时,在请求报文中置一个首部,这个首部就是Cookie或者Cookie2。服务器端收到这个Cookie后,就可以识别客户端。


Http的连接管理

        对于Http的连接管理,涉及到很多概念,这里简单解释两种,其一:并行连接;其二:持久连接。

并行连接:一个完整的HTML页面包括很多个资源,由各种格式的图片,js文件,css样式文件,文本信息....,每一个资源的请求都是独立的,如果一个一个加载,会显得非常慢;所以,Http支持并行的加载,即同时加载很多个资源,这样给用户的体验是,整个页面都在加载,显得很“快”(这是个错觉:)),并行连接会受到带宽的限制,因为如果带宽一定,会出现多个连接争夺带宽的情况。


持久连接:用户在短时间内请求多个同一个站点的资源,例如请求一个完整的HTML页面,里面包括了很多个资源,如果没一个资源的请求都需要3次握手建立连接,资源收到之后4次断开,这样响应的苏杜辉非常慢。因此,HTTP/1.1(及HTTP/1.0)允许HTTP设备在事务处理结束之后将TCP连接保持在打开的状态,以便下一个HTTP请求重用现在的连接,直到客户端或服务器端决定将其关闭为止。

        实现持久连接的常见方式就是keep-alive(在HTTP/1.0开始出现),即在Request Header中添加一个名为Connection:Keep-Alive的首选项,服务器端在应答的时候如果支持,则在首选项中也添加一个名为Connection:Keep-Alive的首部,如果没有,客户端则认为服务器端不支持持久连接。


HTTP请求报文和相应报文

一个HTTP报文由3部分组成,分别是:

  (1)、起始行(start line)

  (2)、首部(header)

  (3)、主体(body)

HTTP请求报文格式

<method> <request-URL> <version>
<headers>

<entity-body>

技术分享

<method>             #请求方法,希望对服务器端的资源执行的动作

<request-URL>     #请求的资源的URL

<version>              #报文所使用的HTTP版本,格式HTTP/<major>.<minor>,通常都是HTTP/1.1

<headers>             #请求首部,下面是各种请求首部

<entity-body>       #实体,一般是数据块,请求的报文一般实体为空

1)请求行

1.1方法

get          #用于请求服务器发送某个资源,为安全方法,该方法对应的主体为空

head       #与GET方法类似,但服务器在响应中只返回首部,不会返回实体的主体部分. 安全方法,主体为空

               #使用HEAD可以做到

               #在不获取资源的情况下了解资源的情况

               #通过查看响应中的状态码,看看某个对象是否存在

              #通过查看首部,测试资源是否被修改了.

put         #PUT方法往服务器写入文档,该方法的语义就是用让服务器用主体部分来创建或替代一个由所请

               #求的URL命名的新文档.

post        #向服务器发送数据,常用于POST HTML的表单数据

trace       #

options   #

delete     #

lock         #

mkcol      #

copy        #

move       #



HTTP响应报文格式

<version> <status> <reason-phrase>
<headers>

<entity-body>

技术分享

<version>

<status>

<reason-phrase>

<headers>

<entity-body>






参考:http://lujun9972.github.io/linux/http%E5%9F%BA%E7%A1%80/

          http://blog.csdn.net/anger_coder/article/details/12794189

HTTP基础

标签:http   http基础   web基础   http详解   

原文地址:http://ljbaby.blog.51cto.com/10002758/1669549

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!