HTTP概述
HTTP使用的是可靠的数据传输协议。
web内容都是存储在web服务器上的,web服务器所使用的是http协议,故被称为http服务器。
web服务器是web资源的宿主,web资源是web内容的源头。
因特网上有数以千种的数据类型,http仔细的给每种要通过web传输的对象搭上了mime类型的数据格式标签。
web服务器会为所有的http对象附加一个mime类型,当web浏览器从服务器张去回忆额对象的时候,回去查看相关的mime类型,大多数浏览器都可以处理对象类型。
MIME类型
MIME类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间使用一条斜线来表示。
HTML: text/html
ASCII: text/plain
JPEG: image/jpeg
GIF: image/gif
URI
统一资源标识符:URI
URL
统一资源定位符: URL
URL描述了一台特定的服务器上某资源的特定位置,可以明确说明如何从一个精确,固定的位置获取资源。
URN
统一资源名URN。作为特定内容的唯一名称使用的,与目前的资源所在地无关,使用这些位置无关的URN,就可以将资源四出搬运,通过URN,还可以使用一个名字通过多种网络访问协议来访问资源。
事务
一个http事务由一条从客户端发往服务器的请求命令和一个从服务器发回客户端的响应结果组成,这种通信是通过http报文的格式化数据块进行的
状态码
每条http都会携带一个状态码,状态码是一个三位数字的代码,告知客户端请求是否成功,或者需要采用其他的动作。
web页面中可以包含多个对象
应用程序完成一项任务的时候会发布多个http事务。
报文
http报文是由一行一行的简单字符串构成的。http报文是纯文本,不是二进制代码。
HTTP报文包括起始行,首部字段,主体。
连接
TCP/IP
http是应用层协议,http无需操行网络通信的具体细节,联网的细节交给了tcp/ip协议
TCP提供了
- 无差错的数据传输
- 按序传输(数据总是会按照发送的顺序到达)
- 为分段的数据流(可以在任意时刻内以任何尺寸将数据发送出去)
只要建立了tcp连接,客户端和服务器之间的报文交换就不会丢失,不会被破坏,也不会在接收的时候出现错序
连接,ip地址和端口号
在http客户端向服务器发送报文之前,需要使用ip地址和端口号在客户端和服务器中建立一条tcpip连接
协议版本
HTTP/0.9仅仅支持GET方法。
HTTP/1.0添加了版本号,各种HTTP的首部,以及对多媒体对象的处理。
HTTP/1.0+持久的Keep-alive连接,虚拟主机连接,代理连接支持都被加到http中。
HTTP/1.1
HTTP-NG(HTTP/2.0)
web的结构组件
代理: 位于客户端和服务器之间的HTTP中间实体
缓存: HTTP的仓库,使用页面的副本可以保存在离客户端最近的地方
网关: 连接其他引用程序的特殊web服务器
隧道: 对HTTP同行报文转发的特殊代理
Agent代理: 发起自动的HTTP请求的半智能体Web客户端
代理
首先来看http代理服务器,这是web安全,应用继承以及性能优化的重要组成模块。代理位于客户端和服务器之间,接受所有的客户端的HTTP请求,并将这些请求转发给服务器(可能对请求进行修改之后转发),对于用户来说,这些应用程序就是一个代理,代表用户访问服务器。
出于安全考虑,通常会将代理作为转发所有web流量的可信任中间节点使用,代理还可以作为请求和响应进行过滤。
缓存
web缓存或代理缓存是一种特殊的http代理服务器,可以经过代理传送的常用文档复制保存起来。下一个请求就可以享受缓存的私有副本提供的服务。
客户端从附近的缓存下载文档比从远程web服务器下载更快。
网关
网关是一种特殊的服务器,作为其他服务器的中间实体使用,通常用于将http流量转换为其他的协议,网关接受请求的时候就好像自己是资源的源服务器一样。
隧道
隧道是建立起来之后,就会在两条连接中间对原始数据进行盲转发的http应用程序,HTTP隧道通常用来在一条或者多条HTTP连接上转发非HTTP数据,转发的时候不会窥探数据。
http隧道的一种常见的用途是通过http连接承载加密的安全套接字层流量,这样ssl流量就可以穿过只允许web流量铜鼓殴打防火墙了
Agent代理
用户agent代理是代表用户发起http请求的客户端程序,所有发布web请求的应用程序都是HTTP Agent代理,HTTP Agent代理: Web 浏览器。但是用户代理还有很多其他的类型