Web开发中,HTTP概念讲解!

39次阅读

共计 2012 个字符,预计需要花费 6 分钟才能阅读完成。

什么是 HTTP?
HTTP (超文本传输协议) 是用来在 Web 上传输文件的基础 协议,最典型的是在浏览器和服务器之间传递以至于上网人员可以浏览他们。
作为 URI 的一部分,“http://”被称为模式,通常位于地址的开头,例如“https://developer.mozilla.org”,就是指示浏览器利用 HTTP 协议请求文档。https 在这个例子中指的是 HTTP 协议的安全版本,被称为 SSL,或者 TLS。
HTTP 是基于文本 (所有的通信都是以纯文本的形式进行) 以及无状态的 (当前通信不会发现以前的通信状态)。这个特点对在 www 上访问网页的人是很理想的。而且,HTTP 也可以让网站更加的灵活多变,利用在 AJAX 上等。
一、基于 HTTP 的组件系统
在一个浏览器和处理请求的服务器之间,由于 Web 的层次设计,那些在网络层和传输层的细节都被隐藏起来了。HTTP 位于最上层的应用层。虽然底层对于分析网络问题非常重要,但是大多都跟对 HTTP 的描述不相干。

user-agent:就是任何能够为用户发起行为的工具。
Web 服务端:Web Server 来服务并提供客户端所请求的文档
代理(Proxies):在浏览器和服务器之间,有许多计算机和其他设备转发了 HTTP 消息。由于 Web 栈层次结构的原因,它们大多都出现在传输层、网络层和物理层上,对于 HTTP 应用层而言就是透明的,虽然它们可能会对应用层性能有重要影响。还有一部分是表现在应用层上的,被称为代理

1、缓存(可以是公开的也可以是私有的,像浏览器的缓存)
2、过滤(像反病毒扫描,家长控制 …)
3、负载均衡(让多个服务器服务不同的请求)
4、认证(对不同资源进行权限管理)
5、日志记录(允许存储历史信息)

二、HTTP 的基本性质

HTTP 是无状态的,使用 Cookies 可以创建有状态的会话。
把 Cookies 添加到头部中,创建一个会话让每次请求都能共享相同的上下文信息,达成相同的状态,将两个请求相关联,如购物车实现两个商品添加!

HTTP 和连接
两个最常用的传输层协议:TCP 是可靠的,而 UDP 不是。因此,HTTP 依赖于面向连接的 TCP 进行消息传递,但连接并不是必须的。为了更好的适合 HTTP,设计一种更好传输协议的进程一直在进行。Google 就研发了一种以 UDP 为基础,能提供更可靠更高效的传输协议

三、HTTP 能控制什么
以下是可以被 HTTP 控制的常见特性:

缓存:文档如何缓存能通过 HTTP 来控制。

开放同源限制:
为了防止网络窥听和其它隐私泄漏,浏览器强制对 Web 网站做了分割限制。只有来自于相同来源的网页才能够获取网站的全部信息。这样的限制有时反而成了负担,HTTP 可以通过修改头部来开放这样的限制,因此 Web 文档可以是由不同域下的信息拼接成的(某些情况下,这样做还有安全因素考虑)

认证:
一些页面能够被保护起来,仅让特定的用户进行访问。基本的认证功能可以直接通过 HTTP 提供,使用 Authenticate 相似的头部即可,或用 HTTP Cookies 来设置指定的会话。

代理和隧道:
通常情况下,服务器和 / 或客户端是处于内网的,对外网隐藏真实 IP 地址。因此 HTTP 请求就要通过代理越过这个网络屏障。但并非所有的代理都是 HTTP 代理。例如,SOCKS 协议的代理就运作在更底层,一些像 FTP 这样的协议也能够被它们处理。

会话:使用 HTTP Cookies 允许你用一个服务端的状态发起请求,这就创建了会话。

四、HTTP 流
当客户端想要和服务端进行信息交互时(服务端是指最终服务器,或者是一个中间代理),过程表现为下面几步:

打开一个 TCP 连接
发送一个 HTTP 报文
读取服务端返回的报文信息
读取服务端返回的报文信息

五、HTTP 报文
有两种 HTTP 报文的类型,请求与响应,每种都有其特定的格式。1、请求
请求由以下元素组成:
一个 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 类似。
2、响应
响应报文包含了下面的元素:
HTTP 协议版本号。
一个状态码(status code),来告知对应请求执行成功或失败,以及失败的原因。
一个状态信息,这个信息是非权威的状态码描述信息,可以由服务端自行设定。
HTTP headers,与请求头部类似。
可选项,比起请求报文,响应报文中更常见地包含获取的资源 body。

正文完
 0