HTTP协议

HTTP协议

概述

超文本传送协议HTTP(HyperText Transfer Protocol)。HTTP 是一个应用层协议,使用TCP进行可靠传送。

统一资源定位符URL

统一资源定位符URL是用来表示从因特网上得到的资源位置和访问这些资源的方法。URL给资源的位置提供一种抽象的识别方法,并用这种方法给资源定位。

<协议>://<主机>:<端口>/<路径>

HTTP协议操作过程

HTTP协议定义了浏览器怎样向万维网请求万维网文档,以及服务器怎样把文档传送给浏览器。从层次的角度来看,HTTP是面向事务(transaction-oriented)的应用层协议,它是万维网上能够可靠地交互文件的重要基础。

每个万维网网点都有一个服务器进程,它不断地监听TCP的端口80,以便发现是否有浏览器向其发出建立连接的请求。一旦监听到连接建立的请求并建立了TCP连接后,浏览器就向万维网发出浏览某个页面的请求,接着浏览器返回所请求页面作为响应。最后TCP,连接释放。

工作过程

  1. 建立TCP连接
  2. 客户端发出HTTP请求报文
  3. 服务器端回应HTTP响应报文
  4. 释放TCP连接

具体连接的过程为

  1. 浏览器分析连接指向页面的URL
  2. 浏览器向DNS请求解析域名的IP地址
  3. 由解析得到的IP地址,客户端与服务器端建立TCP连接
  4. 浏览器端通过HTTP协议发出命令
  5. 服务器对于命令进行响应,并通过HTTP协议向浏览器端返回结果
  6. 释放TCP连接

无连接和无状态

HTTP使用了面向连接的TCP作为运输层协议,保证了数据的可靠传输,但是HTTP协议不考虑丢失重传。HTTP协议本身是无连接的,虽然使用TCP连接,但是通信的双方在交换HTTP报文之前不需要先建立HTTP连接。

HTTP协议是无状态(stateless)的。也就是说,同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时的相同。HTTP的无状态特性,使服务器支持大量并发的HTTP请求。

请求时间

浏览器请求一个万维网文档所需要的时间。用户在点击某个万维网文档后,HTTP协议首先要和服务器建立TCP连接。这需要使用三次握手。当三次握手的前两部分完成后(即经过一个RTT时间之后),客户就会把HTTP请求报文作为三次握手的第三个报文数据发送给万维网服务器。服务器收到HTTP请求报文后,就把所有请求的文档作为响应报文返回客户。

HTTP/1.0的主要缺点:

  • 就是每请求一个文档就要有两倍的 RTT往返时延(Round-Trip Time) 的开销。若一个主页上面很多链接的对象(图片等),那么对于每一次链接下载都要导致2*RTT的开销。
  • 万维网客户和服务器为每次建立新的TCP连接都要分配缓存和变量。当万维网服务器服务大量客户请求时,这种 非持续的连接 会使服务器负担很重。

HTTP/1.1的解决方案:

使用了持续连接(persistent connection),即万维网服务器在发送响应后仍然在一段时间内保存这条连接,使同一客户和该服务器可以继续在这条连接上继续传送后续的HTTP请求报文和响应报文。

持续连接两种工作方式:

  • 非流水线方式(without pipelining):客户在收到前一个响应之后,才能发出下一个请求,浪费了服务器资源
  • 流水线方式(with pipelining):客户在收到HTTP的响应报文之前就能够接着发送新的请求报文。减少了TCP连接中的空闲时间,提高了下载效率。

你可能感兴趣的:(计算机网络)