HTTP概述

作者: 蓝瘦额香菇 | 来源:发表于2017-02-04 09:37 被阅读84次

HTTP是一种能够获取如HTML这样网络资源的协议。它是Web上数据交换的基础,是一种client-server协议,也就是说请求通常是由浏览器这样的接受方发起的。一个完整的web文档是由不同的子文档重新组建而成的,像文本、样式、图片、视频、脚本等等。


Fetching_a_page.png

HTTP基本性质

HTTP是简单的

即便在HTTP/2中把HTTP消息封装到了frames中,HTTP大体上还是被设计成可读的而且简单的。HTTP的消息能够让人读懂且明白它的意思,还允许简单的测试,放低了门槛,更有利于新来者了解。

HTTP是可扩展的

在HTTP/1中就出现了,HTTP headers让协议扩展变得非常容易。只要服务端和客户端在新的headers上语义达成一致,新的功能就可以轻松地被加进来。

HTTP是无状态的,有会话的

HTTP是无状态的:在同一个连接中,两个成功执行的请求之间是没有关系的。这就带来一个问题,用户没办法在一个网站进行连续的交互。通过cookie的使用可以解决这个问题,让用户的每次请求都能共享相同的上下文信息,相同的状态,从而创建有状态的会话。

HTTP和连接

一个连接是由传输层来控制的,基本不属于HTTP的范围内。然而HTTP并不需要下面的传输层的协议是面向连接的,它只需要它是可靠的,就是说不能丢失消息(至少没有错误)。在因特网两个最常用的传输层协议中,TCP是可靠的,而UDP不是。因此,HTTP依赖于TCP进行消息传递,虽然TCP是面向连接的,但这并不是必须的。

HTTP/1.0曾经为每一个请求/回应交换都打开一个TCP连接,但是TCP主要有两种流:打开一个连接需要多次的消息往返因此很慢。但是当多个消息周期性的发送时,这就变得更加高效:暖连接比冷连接更高效。

为了减少这些负担,HTTP/1.1引入流水线的概念(已被证明很难实现)和持久连接的概念:下层的TCP连接可以通过Connection头部来被部分地控制。HTTP/2则发展的更多,通过一个连接多个消息的方式来让这个连接始终保持为暖连接。

为了更好的适合HTTP,设计一种更好的传输层协议就一直在进行中。Google就研发了一种以UDP为基础,能提供更可靠更有效的传输层协议。

HTTP的扩展性举例

  • 缓存。文档怎么缓存能够通过HTTP来控制。服务端能告诉代理和客户端什么需要被缓存,缓存多久,而客户端能够命令中间缓存代理来忽略存储的文档。
  • 开放同源限制。HTTP可以通过修改头部来实现CORS(跨域资源共享)。
  • 认证。一些页面能够被保护起来,仅让特定的用户进行访问。基本的认证功能可以直接通过HTTP提供,使用Authenticate相似的头部就可以,或者用HTTP cookie来设定指定的会话。
  • 代理。服务端和客户端通常都处在内部网上,彼此的真实地址都是不可见的。HTTP请求就要通过代理穿过网络障碍。不是所有的代理都是HTTP代理的,像一些用SOCKS协议的代理就运作在更底层。
  • 会话。Cookies用一个服务端的状态连接起了每一个请求。这就创建了会话,这很有用,不仅是因为能用到购物车这样的电商业务上,更是因为,它使得任何网站都能够配置页面展现的东西了。

一次HTTP请求过程

  • 打开一个TCP连接(或者重用之前的一个)。
  • 建立TCP连接之后,发送一个HTTP请求报文(request)。
  • 读取服务端返回的报文(response)。
  • 关闭连接或者为以后的请求重用连接。

HTTP请求报文

下面是一个HTTP请求报文的例子。


http请求头.png

请求报文的元素由下面组成:

  • method:GET或POST。
  • path:获取资源的路径。
  • version:HTTP协议的版本号。
  • 对于一些像POST这样的方法,报文的body就包含了发送的资源,这个body和响应报文的body类似。
  • 为服务端表达其它信息的可选择性的headers。

HTTP响应报文

下面是一个HTTP响应报文的例子。


http响应头.png

响应报文的元素由下面组成:

  • version:HTTP版本号。
  • status code:表明对应的请求成功还是失败。
  • status text:状态码对应的状态信息,可以由服务端自行设定。
  • 其它的HTTP headers。
  • 响应body。

相关文章

  • HTTP概述

    HTTP HTTP 是什么 HTTP 全称 Hype Text Transfer Protocol(超文本传输协议...

  • Http概述

    Http概述 HTTP使用的是可靠的传输协议,即使数据是来自地球的另一端,它也能够确保数据在传输的过程中不会被损坏...

  • HTTP概述

    1.MIME 数据格式标签。当浏览器 从服务器取回一个对象。会先查看 MIME 类型。看是否能处理。MIME ty...

  • HTTP概述

    前言 HTTP = Hypertext Transfer Protocol = 超文本传输协议是在万维网上进行通信...

  • HTTP概述

    参考资料 《HTTP 权威指南》 引言 本篇简要介绍 HTTP 协议的一些概念,后续详细补充。 一、HTTP——因...

  • HTTP概述

    HTTP是一种能够获取如HTML这样网络资源的协议。它是Web上数据交换的基础,是一种client-server协...

  • HTTP概述

    媒体类型(MIME) Web服务器会为所有的HTTP对象数据附加一个MIME类型。当Web浏览器从服务器取回一个对...

  • HTTP概述

    HTTP是一种能够获取如HTML这样网络资源的协议。它是Web上数据交换的基础,是一种client-server协...

  • HTTP概述

    1.1 HTTP——因特网的多媒体信使 HTTP使用的是可靠的数据传输协议,因此即使数据来自地球的另一端,它也能够...

  • HTTP概述

    HTTP/1.x 在早期,HTTP 使用一个简单的模型来处理这样的连接。这些连接的生命周期是短暂的:每发起一个请求...

网友评论

    本文标题:HTTP概述

    本文链接:https://www.haomeiwen.com/subject/easjittx.html