HTTP

78 阅读2分钟

HTTP 概述

HTTP 是一种用作获取诸如 HTML 文档这类资源的协议。它是 Web 上进行任何数据交换的基础,同时,也是一种客户端—服务器(client-server)协议,也就是说,请求是由接受方——通常是浏览器——发起的。一个完整网页文档是由获取到的不同文档组件——像是文本、布局描述、图片、视频、脚本等——重新构建出来的。

一个网页文档是多种不同资源的组合

客户端与服务端之间通过交换一个个独立的消息(而非数据流)进行通信。由客户端——通常是个浏览器——发出的消息被称作请求(request),由服务端发出的应答消息被称作响应(response)。

HTTP 作为应用层协议,处于 TCP(传输层)和 IP(网络层)之上,表示层之下

20 世纪 90 年代,HTTP 作为一套可扩展的协议被设计出来,并随时间不断演进。HTTP 是一种应用层的协议,通过 TCP,或者是 TLS——一种加密过的 TCP 连接——来发送,当然,理论上来说可以借助任何可靠的传输协议。受益于 HTTP 的可扩展性,时至今日,它不仅可以用来获取超文本文档,还可用来获取图片、视频或者向服务端发送信息,比如填写好的 HTML 表单。HTTP 还可以用来获取文档的部分内容,以便按需更新 Web 页面。

基于 HTTP 的组件系统

HTTP 是一个客户端—服务器协议:请求由一个实体,即用户代理(user agent),或是一个可以代表它的代理方(proxy)发出。大多数情况下,这个用户代理都是一个网页浏览器,不过它也可能是任何东西,比如一个爬取网页来充实、维护搜索引擎索引的机器爬虫。

每个请求都会被发送到一个服务端,它会处理这个请求并提供一个称作响应的回复。在客户端与服务端之间,还有许许多多的被称为代理的实体,履行不同的作用,例如充当网关或缓存

客户端与服务器间的链条

实际上,在浏览器和处理其请求的服务器之间,还有路由器、调制解调器等等许多计算机。归功于 Web 的分层设计,这些机器都隐藏在网络层和传输层内。而 HTTP 位于这些机器之上的应用层。虽然下面的层级在诊断网络问题时很重要,但在描述 HTTP 的设计时,它们大多是不相干的。