超文本传输协议HTTP
# 掌握HTTP的报文格式
# 掌握HTTP的工作原理
# 掌握HTTP常用方法
万维网体系结构
万维网,全称为World Wide Web,是一个由许多互相链接的超文本组成的系统,通过互联网访问。
- 在这个系统中,每个有用的事物,称为“资源”,由全局“统一资源标识符(URL)”标识;这些资源通过超文本传输协议传送给用户,用户通过点击超链接来获得资源
- 每一个网站保存有一个或多个文档,叫做万维网页面。浏览器用来读取万维网上的文档
- 客户需要查看网站A的某些信息,它向网站A发送一个请求,请求包含了网站A和其中万维网页面的地址,称为统一资源定位符(URL)
- 网站A收到请求后,将指定的文档发送给这个客户。

WWW服务是分布式的客户/服务器模式
**浏览器:**客户端程序,可以解释和显示万维网页面。
服务器:
- 万维网页面存储在服务器上,当客户请求到达时,对应的页面就发送给客户
- 为了提高效率,服务器通常在其高速缓存中存放被请求过的页面
- 通过多线程或多进程可使服务器的效率更加提高,服务器在同一时间可回答多个请求
统一资源定位符(URL)
Uniform Resource Locator,用于表示Internet上资源的位置和访问方法
- URL由4部分组成:
-
协议:指定了用这个URL的客户/服务器程序。如,HTTP、FTP和TELNET等
-
主机:指明了信息所存放的地址,可以是逻辑地址也可以是相应的域名
-
端口:指定了使用主机的某个端口,端口是可选的。
如果包含了端口,那么端口就插入在主机和路径之间,和主机用冒号分隔开
-
路径:指定了文件存放的位置。路径本身可以包含斜线,用于将目录与子目录和文件分隔开。
-

内容固定的文档,由服务器创建。文档的内容是在创建文档时就确定的,而不是在使用它时。
动态文档
在浏览器请求该文档时才由万维网服务器创建出来。当请水到丛的,力维网服务器就运行创建动态文档的应用程序。服务器返回这个程序或脚本的输出,把它作为对请求该文档的浏览器的响应。
对每个请求都创建出新的文档,所以每个请求得到的动态文档内容可能不同。
活动文档
有些文档需要程序在客户端运行,称为活动文档。当浏览器请求活动文档时,服务器就发送这个文档的一个副本或脚本,然后这个文档就在客户(浏览器)端运行。
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:服务器端错误—服务器失效无法完成请求

持久与非持久链接
非持久连接
- 对每一个请求/响应都要建立一次TCP连接
- 非持久连接策略给服务器造成了很大的开销,因为服务器需要N个不同的缓存,而每次打开连接时都要使用慢开始过程
- 版本1.1以前的HTTP协议默认是非持久连接
持久连接
-
在使用持久连接时,服务器在发送响应后,让连接继续为一些请求打开
-
服务器可以在客户发送关闭请求时等待或关闭这个连接。
-
服务器可在相同的TCP连接上向客户发送多个对象
HTTP版本1.1默认使用持久连接策略。
万维网的工作过程:
每个万维网网点都有一个服务器,它不断地监听TCP的端口80,以便发现是否有浏览器(即万维网客户)向它发出连接建立请求。一旦监听到连接请求并建立了TCP连接之后,浏览器就向万维网服务器发出浏览某个页面的请求,服务器接着就返回所请求的页面作为响应。最后释放TCP连接。
