超文本传输协议HTTP


超文本传输协议HTTP

#	掌握HTTP的报文格式
#	掌握HTTP的工作原理
#	掌握HTTP常用方法

万维网体系结构

万维网,全称为World Wide Web,是一个由许多互相链接的超文本组成的系统,通过互联网访问。

  • 在这个系统中,每个有用的事物,称为“资源”,由全局“统一资源标识符(URL)”标识;这些资源通过超文本传输协议传送给用户,用户通过点击超链接来获得资源
  • 每一个网站保存有一个或多个文档,叫做万维网页面。浏览器用来读取万维网上的文档
    • 客户需要查看网站A的某些信息,它向网站A发送一个请求,请求包含了网站A和其中万维网页面的地址,称为统一资源定位符(URL)
    • 网站A收到请求后,将指定的文档发送给这个客户。
用户访问万维网的示意图
>

WWW服务是分布式的客户/服务器模式

**浏览器:**客户端程序,可以解释和显示万维网页面。

服务器:

  • 万维网页面存储在服务器上,当客户请求到达时,对应的页面就发送给客户
  • 为了提高效率,服务器通常在其高速缓存中存放被请求过的页面
  • 通过多线程或多进程可使服务器的效率更加提高,服务器在同一时间可回答多个请求

统一资源定位符(URL)

Uniform Resource Locator,用于表示Internet上资源的位置和访问方法

  • URL由4部分组成:
    1. 协议:指定了用这个URL的客户/服务器程序。如,HTTP、FTP和TELNET等

    2. 主机:指明了信息所存放的地址,可以是逻辑地址也可以是相应的域名

    3. 端口:指定了使用主机的某个端口,端口是可选的。

      如果包含了端口,那么端口就插入在主机和路径之间,和主机用冒号分隔开

    4. 路径:指定了文件存放的位置。路径本身可以包含斜线,用于将目录与子目录和文件分隔开。

统一资源定位符格式:
##### 静态文档

内容固定的文档,由服务器创建。文档的内容是在创建文档时就确定的,而不是在使用它时。

动态文档

在浏览器请求该文档时才由万维网服务器创建出来。当请水到丛的,力维网服务器就运行创建动态文档的应用程序。服务器返回这个程序或脚本的输出,把它作为对请求该文档的浏览器的响应。
对每个请求都创建出新的文档,所以每个请求得到的动态文档内容可能不同。

活动文档

有些文档需要程序在客户端运行,称为活动文档。当浏览器请求活动文档时,服务器就发送这个文档的一个副本或脚本,然后这个文档就在客户(浏览器)端运行。

HTTP报文格式:

超文本传输协议,Hyperlext Transfer Protocol,用于访问万维网上的数据

它是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。
协议以普通文本、超文本、音频、视频等格式传输数据,它可以快速的在文档之间跳转

  • HTTP是一个应用层协议,它使用TCP连接进行可靠的传送,在熟知端口80上提供服务。

HTTP报文有两种类型:请求报文和响应报文

- 两种报文格式只有开始行不同。
  • 首部行

  • 用来说明浏览器、服务器或报文主体的一些信息。

  • 由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔,结束的地方都要有回车换行

  • 首部可以有好几行,但也可以不使用。

  • 整个首部行结束时,还要有一个空行将首部行和后面的实体主体分

  • 实体主体

    • 在请求报文中一般不用,而在响应报文中也可能没有这个字段

HTTP请求报文:

  • 方法:

    • 常见的有GET和POST方法,在地址栏中输入网址访问网页时,浏览器采用GET方法向服务器获取资源,POST方法要求服务器接受附在请求后面的数据,常用于提交表单。

  • URL:向服务器请求的资源

  • HTTP版本:目前是http/1.1。

  • 首部字段:

    • Accept:指定客户端接受哪些类型的信息,如text/html,image/gif等
    • Accept-Language:指定一种自然语言。
    • Accept-Encoding:指定可接受的内容编码,如gzip, deflate。
    • User-Agent: 允许客户端将它的操作系统、浏览器和其它属性告诉服务器
    • Host:目标服务器
    • Connection:连接状态,如Keep-Alive,Close。

HTTP回应报文

  • 版本:与请求报文相同

  • 状态码:表示服务器的响应类型,有三位数字组成,其中第一个数字定义了响应的类别,有五种可能取值:

    • 1xx:通知信息—表示请求已接收,继续处理
    • 2xx:成功—表示请求已被成功接收、理解、接受
    • 3xx:重定向一用于已经移动的文件
    • 4xx:客户端错误—请求有语法错误或请求无法实现
    • 5xx:服务器端错误—服务器失效无法完成请求
HTTP协议状态码:
- 短语:解释状态码的简单短语 - 首部字段 - Date:消息产生时间 - Server:服务器用来处理请求的软件 - Set- cookie:设置Cookie及其路径 - Content-Length:实体正文的长度,十进制 - Connection:连接状态。 - Content-Type:发送给接收者的实体正文的媒体类型,如Content-Type:text/html;charset=GB2312。

持久与非持久链接

非持久连接

  • 对每一个请求/响应都要建立一次TCP连接
  • 非持久连接策略给服务器造成了很大的开销,因为服务器需要N个不同的缓存,而每次打开连接时都要使用慢开始过程
  • 版本1.1以前的HTTP协议默认是非持久连接

持久连接

  • 在使用持久连接时,服务器在发送响应后,让连接继续为一些请求打开

  • 服务器可以在客户发送关闭请求时等待或关闭这个连接。

  • 服务器可在相同的TCP连接上向客户发送多个对象

    HTTP版本1.1默认使用持久连接策略。

万维网的工作过程:

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


文章作者: 十二惊惶
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 十二惊惶 !
  目录