HTTP (超文本传输协议) 是用来在 Web 上传输文件的基础 协议 ,最典型的是在浏览器和服务器之间传递以致于上网人员能够浏览他们。浏览器
做为URI的一部分,“http://”被称为模式,一般位于地址的开头,例如“https://developer.mozilla.org”,就是指示浏览器利用HTTP协议请求文档。https在这个例子中指的是HTTP协议的安全版本,被称为SSL,或者TLS。缓存
HTTP 是基于文本 (全部的通讯都是以纯文本的形式进行) 以及无状态的 (当前通讯不会发现之前的通讯状态)。这个特色对在www上访问网页的人是很理想的。并且,HTTP也可让网站更加的灵活多变,利用在AJAX上等。安全
在一个浏览器和处理请求的服务器之间,因为Web的层次设计,那些在网络层和传输层的细节都被隐藏起来了。HTTP位于最上层的应用层。虽然底层对于分析网络问题很是重要,可是大多都跟对HTTP的描述不相干。服务器
一、缓存(能够是公开的也能够是私有的,像浏览器的缓存) 二、过滤(像反病毒扫描,家长控制...) 三、负载均衡(让多个服务器服务不一样的请求) 四、认证(对不一样资源进行权限管理) 五、日志记录(容许存储历史信息)
HTTP是无状态的,使用Cookies能够建立有状态的会话。网络
把Cookies添加到头部中,建立一个会话让每次请求都能共享相同的上下文信息,达成相同的状态,将两个请求相关联,如购物车实现两个商品添加!
HTTP 和链接负载均衡
两个最经常使用的传输层协议:TCP是可靠的,而UDP不是。所以,HTTP依赖于面向链接的TCP进行消息传递,但链接并非必须的。为了更好的适合HTTP,设计一种更好传输协议的进程一直在进行。Google就研发了一种以UDP为基础,能提供更可靠更高效的传输协议
如下是能够被HTTP控制的常见特性:dom
开放同源限制:工具
为了防止网络窥听和其它隐私泄漏,浏览器强制对Web网站作了分割限制。只有来自于相同来源的网页才可以获取网站的所有信息。这样的限制有时反而成了负担,HTTP能够经过修改头部来开放这样的限制,所以Web文档能够是由不一样域下的信息拼接成的(某些状况下,这样作还有安全因素考虑)
认证:性能
一些页面可以被保护起来,仅让特定的用户进行访问。基本的认证功能能够直接经过HTTP提供,使用Authenticate类似的头部便可,或用HTTP Cookies来设置指定的会话。
代理和隧道:网站
一般状况下,服务器和/或客户端是处于内网的,对外网隐藏真实 IP 地址。所以 HTTP 请求就要经过代理越过这个网络屏障。但并不是全部的代理都是 HTTP 代理。例如,SOCKS协议的代理就运做在更底层,一些像 FTP 这样的协议也可以被它们处理。
当客户端想要和服务端进行信息交互时(服务端是指最终服务器,或者是一个中间代理),过程表现为下面几步:
有两种HTTP报文的类型,请求与响应,每种都有其特定的格式。
一、请求
请求由如下元素组成:
一个HTTP的method,常常是由一个动词像GET, POST 或者一个名词像OPTIONS,HEAD来定义客户端的动做行为。一般客户端的操做都是获取资源(GET方法)或者发送HTML form表单值(POST方法),虽然在一些状况下也会有其余操做。
要获取的资源的路径,一般是上下文中就很明显的元素资源的URL,它没有protocol (http://),domain(developer.mozilla.org),或是TCP的port(HTTP通常在80端口)。
HTTP协议版本号。
为服务端表达其余信息的可选头部headers。
对于一些像POST这样的方法,报文的body就包含了发送的资源,这与响应报文的body相似。
二、响应
响应报文包含了下面的元素:
HTTP协议版本号。
一个状态码(status code),来告知对应请求执行成功或失败,以及失败的缘由。
一个状态信息,这个信息是非权威的状态码描述信息,能够由服务端自行设定。
HTTP headers,与请求头部相似。
可选项,比起请求报文,响应报文中更常见地包含获取的资源body。