超文本传输协议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:服务器端错误—服务器失效无法完成请求
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连接。