HTTP概述
HTTP是超文本传输协议,以此为基础进行Web流量传输。
其内容大致包括:
资源
事务
报文
连接
Web结构组件
由于只是对第一章的基础内容的记录,并不会过多的深入。同时也可能有错误,如果有错的话,请联系我,我会第一时间发个1元钱的红包(穷学生一个,再多就困难了)。
流量传输过程
一次Web流量传输,是在Web客户端和Web服务器之间完成的。客户端向服务器发送HTTP请求,服务器对此做出HTTP响应。响应如果成功,就会将对象、对象类型、对象长度以及其他信息放到HTTP响应中,发送给客户端。
资源与媒体类型
Web资源存放在Web服务器中,是Web内容的源头。其大致可以分为两种:
静态文件:包含任意内容,比如文本文件、HTML文件等等
动态内容:根据需要生成内容的软件程序,其可以是根据身份、所请求的信息产生的内容。
而媒体类型则是通过Web传输的对象的数据格式标签,在请求头里面,以Content-type:image/jpeg
的形式存储,名为MIME类型。每个HTTP对象数据都会附加一个对象数据类型,由Web客户端查看,并以此决定处理的方式。
MIME类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,由反斜杠分开。常见的有:
HTML格式的文档:text/html
ASCII格式的文档:text/plain
JPEG格式的图片:image/jpeg
GIF格式的图片:image/gif
QuickTime电影:video/quicktime
PPT演示文档:application/vnd.ms-powerpoint
Web服务器资源的名字为URI(Uniform Resource Idenfier),即统一资源标识符。URI又分为URL和URN两种类型。
URL(Uniform Resource Location)统一资源定位符
用来描述服务器上的特定子牙un的位置及其访问方式,如下网址:http://news.xinhuanet.com/photo/2016-01/20/128646070_14532435238961n.jpeg即可分为三部分:http:/。称为方案,说明访问资源使用的协议类型。
news.xinhuanet.com。是服务器的因特网地址。
photo/2016-01/20/128646070_14532435238961n.jpeg。是服务器上某个资源存储的位置。
URN(Uniform Resource Name)统一资源名
用来指定特定内容的的唯一名称,与位置无关。该形式有两个好处:可以四处移动资源
允许通过多种协议访问同一资源。
事务
HTTP事务是由一个请求命令和响应结果构成的,通过格式化数据块HTTP报文(HTTP Message)进行。不同的请求命令,被称为方法,由HTTP请求报文所包含。常见的HTTP方法有:
HTTP方法 | 描述 |
---|---|
GET | 从服务器项客户端发送命名资源 |
PUT | 将来自客户端的数据存储到一个命名的服务器资源中 |
DELETE | 从服务器中删除命名资源 |
POST | 将客户端的数据发送到一个服务器网关应用程序 |
HEAD | 仅发送命名资源中的HTTP响应头 |
而HTTP响应报文则会返回一个状态码,由三位数字构成,告知客户端请求的响应状态。常见的有以下几种:
状态码 | 描述 |
---|---|
200 | OK。文档正确返回 |
302 | 重定向,到其他地方获取资源 |
404 | 没找到。无法找到资源 |
HTTP的状态码之外,还有一个原因短语文本,但是处理的时候使用的是数字码。
注意!!!Web页面中可以包含多个HTTP对象,所以实际上可以发布一系列HTTP事务来实现该要求。
报文
HTTP报文是纯文本,由起始行,头部和可选的主体构成。
起始行
报文的第一行。请求报文中说明命令,而响应报文包含状态码。头部字段
零个或者多个头部字段包含其中,字段由一个名字和值组成,用冒号:隔开,以一个空行结束。主体
包含所有类型的数据。请求主题中包含发送给服务器的数据;响应主体包含返回客户端的数据。其可以包含任意二进制数据。
可以通过在浏览器中查看信息,来获取一个简单的报文,并对齐进行上述分析。
连接
生成报文以后,需要通过一个TCP(Transmission Control Protocol)传输控制协议,连接并发送到各个地方。其中,因特网传输协议是指TCP/IP,提供以下内容:
无差错的数据传输
按顺序传输
未分段的数据流
要发送报文,这需要在收发两端使用IP(Internet Protocol)网际协议建立一条TCP/IP连接。可以通过URI来获得资源的地址,其中,域名,或者说主机名可以通过DNS(Domain Name Server)域名服务来进行转换,默认端口为80,可以指定端口。
Web结构组件
Web应用程序主要是Web浏览器和Web服务器,而其他重要的程序有:
代理:位于客户端和服务器之间的中间实体
缓存:在客户端附近保存常用的页面副本
网关:连接其他应用程序的服务器
隧道:对HTTP通信报文进行盲转发的特殊代理
Agent代理:发起自动HTTP请求的Web客户端
代理
对服务器和客户端之间的请求进行转发和访问。同行用于对请求和响应进行过滤,如绿坝。所以,可以通过换代理来科学上网。
缓存
Web缓存或者代理缓存是一种特殊的HTTP代理服务器,可以存储常用文档,从而在下次请求同一个文档的时候享受私有副本提供的服务。
网关
网关是服务器之间的中间实体,用于将HTTP流量转换为其他协议。其从服务器中获取资源,而后于客户端进行通信。
隧道
是在两条连接之间对原始数据进行盲转发的应用程序,不会窥探数据。
常用于通过HTTP连接承载加密的安全套接字层(SSL, Secure Sockets Layer)流量,使得SSL流量穿过只允许Web流量通过的防火墙。
Agent代理
代表用户发起HTTP请求的应用程序,如浏览器、爬虫和网页机器人
协议版本
HTTP协议现在有以下几个版本:
HTTP/0.9
是HTTP的1991原型版本,有很多严重的设计缺陷,只应用于老客户端的交互,只支持GET方法。初中是获取简单的HTTP对象,很快被HTTP/1.0取代。HTTP/1.0
第一个得到广泛使用的HTTP版本。添加了版本号、各种HTTP头和一些额外的方法还有多媒体处理。规范没有得到良好的说明,集合一系列最佳的实践。HTTP/1.0+
在90年代,各个浏览器为了适应需求而自定义添加的特性,比如keep-alive连接、虚拟主机支持和代理连接支持等,是非官方的事实标准。HTTP/1.1
校正HTTP设计中的结构性缺陷而引入的性能优化措施的集合,并对当时(90年代)正在发展的Web应用进行支持和部署方式进行支持。在当前被广泛使用。HTTP-NG(已破产)
HTTP/1.1后继结构的原型建议,但是终止于1998年,后来没有用此建议取代前者的的推广计划。不过后来推出了HTTP/2协议(草案),由于成书时间,没有录入。
HTTPS是HTTP协议加上SSL协议,属于加密文本传输协议,与本文关系不大(因为是初学),暂时略过不提。
HTTP权威指南至少第一章比较亲民,就是不知道后面如何,为了学习(zhuangbi)我也是拼了!