HTTP协议总结

来源:互联网 发布:算法 lookup table 编辑:程序博客网 时间:2024/06/03 16:49

超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。

HTTP是一客户端服务器端请求和应答的标准(TCP)。客户端是终端用户,服务器端是网站。通过使用Web浏览器网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请求。(我们称这个客户端)叫用户代理(user agent)。应答的服务器上存储着(一些)资源,比如HTML文件和图像。(我们称)这个应答服务器为源服务器(origin server)。在用户代理和源服务器中间可能存在多个中间层,比如代理,网关,或者隧道(tunnels)。尽管TCP/IP协议是互联网上最流行的应用,HTTP协议并没有规定必须使用它和(基于)它支持的层。 事实上,HTTP可以在任何其他互联网协议上,或者在其他网络上实现。HTTP只假定(其下层协议提供)可靠的传输,任何能够提供这种保证的协议都可以被其使用。

通常,由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口的TCP连接。HTTP服务器则在那个端口监听客户端发送过来的请求。一旦收到请求,服务器(向客户端)发回一个状态行,比如"HTTP/1.1 200 OK",和(响应的)消息,消息的消息体可能是请求的文件、错误消息、或者其它一些信息。HTTP使用TCP而不是UDP的原因在于(打开)一个网页必须传送很多数据,而TCP协议提供传输控制,按顺序组织数据,和错误纠正。

通过HTTP或者HTTPS协议请求的资源由统一资源标示符(Uniform Resource Identifiers)(或者,更准确一些,URLs)来标识。我们在浏览器的地址栏里输入的网站地址叫做URL (Uniform Resource Locator,统一资源定位符)。就像每家每户都有一个门牌地址一样,每个网页也都有一个Internet地址。当你在浏览器的地址框中输入一个URL或是单击一个超级链接时,URL就确定了要浏览的地址。浏览器通过超文本传输协议(HTTP),将Web服务器上站点的网页代码提取出来,并翻译成漂亮的网页。

在网络上发送和接收的数据已经被分成一个或多个数据包(packet),每个数据包包括:要传送的数据;控制信息,即告诉网络怎样处理数据包。TCP/IP决定了每个数据包的格式。如果事先不告诉你,你可能不会知道信息被分成用于传输和再重新组合起来的许多小块。

HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应在请请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。 

1)在HTTP 1.0中,客户端的每次请求都要求建立一次单独的连接,在处理完本次请求后,就自动释放连接。 

2)在HTTP 1.1中则可以在一次连接中处理多个请求,并且多个请求可以重叠进行,不需要等待一个请求结束后再发送下一个请求。 

由于HTTP在每次请求结束后都会主动释放连接,因此HTTP连接是一
短连接要保持客户端程序的在线状态,需要不断地向服务器发起连接请求。通常的做法是即使不需要获得任何数据,客户端也保持每隔一段固定的时间向服务器发送一次保持连接的请求服务器在收到该请求后对客户端进行回复,表明知道客户端在线若服务器长时间无法收到客户端的请求,则认为客户端下线,若客户端长时间无法收到服务器的回复,则认为网络已经断开。
HTTP定义的事务处理由以下四步组成:

1.建立连接。

2.客户端发送HTTP请求头。

3.服务器端响应生成结果回发。

4.服务器端关闭连接,客户端解析回发响应头,恢复页面。

客户端,也就是我请求一个地址时,即打开了到 Web 服务器的HTTP端口的一个套接字。

一旦建立了TCP连接,Web浏览器就会向Web服务器发送请求命令,是一个ASCII文本请求行,后跟0个或多个HTTP头标,一个空行和实现请求的任意数据。四个部分:请求行,请求头标,空行和请求数据。

3.服务器端接受请求,处理数据后生成响应返回数据到客户端

4.响应数据:HTML文档和图像等,也就是HTML本身。

5.服务器端关闭连接,客户端解析回发响应头,恢复页面

WEB使用HTTP协议作应用层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发到网络上。”

统一资源定位符(URL,英语Uniform Resource Locator的缩写)也被称为网页地址,是因特网上标准的资源的地址。Internet上的每一个网页都具有一个唯一的名称标识,通常称之为URL地址,这种地址可以是本地磁盘,也可以是局域网上的某一台计算机,更多的是Internet上的站点。简单地说,URL就是Web地址,俗称“网址”。

下面摘自http://blog.csdn.net/ns_code/article/details/17066361

   1HTTP规定在HTTP客户与HTTP服务器之间的每次交互,都由一个ASCII码串构成的请求和一个MIMEMIME—like的相应组成。HTTP报文通常都是用TCP连接

    2.从层次的角度看,HTTP是面向事务的应用层协议。所谓事务,就是指一系列的信息交换,而这一系列的信息交换是一个不可分割的整体,即要么所有信息交换都完成,要么一次交换都不进行。

    3HTTP协议本身是无连接的,虽然HTTP使用了TCP连接,但通信的双方在交换HTTP报文前不需要建立HTTP连接。

    4HTTP协议时无状态的,也就是说,同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时的相同。

    5.万维网客户把HTTP请求报文作为TCP连接三次握手的第三个报文的数据发送给万维网服务器,服务器收到HTTP请求报文后,就把所请求的文档作为响应报文返回给客户。

    6HTTP/1.0的主要缺点,是每请求一个文档就要有两倍RTT的开销。HTTP/1.1使用持续连接。所谓持续连接,就是万维网服务器在发送响应后仍然在一段时间内保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文,这并不局限于传送同一个页面上链接的文档,而是只要这些文档都在同一个服务器上就行。

    7HTTP/1.1协议的持续连接有两种方式,即非流水线方式和流水线方式。非流水线方式的特点是,客户在收到前一个响应后才能发出下一个请求;流水线方式的特点是,客户在收到HTTP的响应报文之前就能接着发送新的请求报文。

    8HTTP请求报文和响应报文都由三个部分组成:开始行、首部行、实体主题。开始行用于区别报文时响应报文还是请求报文,在请求报文中,开始行叫做请求行,而在响应报文中,开始行叫做状态行。

    9.请求报文请求行只有三个内容:方法、请求资源的URLHTTP的版本。响应报文的状态行也包括三项内容:HTTP的版本、状态码、解释状态码的简单短语。

    10.状态码都是三位数字的,分为5大类共33种,例如:

    1xx表示通知信息的,如请求收到了或正在进行处理

    2xx表示成功,如接受或知道了;

    3xx表示重定向,如果完成请求,还必须采取进一步的行动;

    4xx表示客户端错误,如请求中有错误的语法或不能完成;

    5xx表示服务端错误,如服务器失效无法完成请求。

    11.在浏览器地址栏键入URL,按下回车之后发生的几个事件:

    1)浏览器向DNS服务器请求解析该URL中的域名所对应的IP地址;

    2)解析出IP地址后,根据该IP地址和默认端口80,和服务器建立TCP连接;

    3)浏览器发出读取文件(URL中域名后面部分对应的文件)的HTTP请求,该请求报文作为TCP三次握手的第三个报文的数据发送给服务器;

    4)服务器给出相应,把对应的html文本发送给浏览器;

    5)释放TCP连接;

    6)浏览器将该文本显示出来。


0 0
原创粉丝点击