【读】这一次,让咱们再深刻一点 - HTTP概述

这是关于网络系列的第四篇文章,接下来会有更多精彩内容.敬请期待! 让咱们一块儿乘风破浪!html

前言

前面咱们经过如下文章浏览器

分别对网际层的IP协议,运输层的UDP和TCP协议进行了简单的学习.从该篇开始, 咱们学习应用层的HTTP协议.HTTP协议自己内容较为丰富, 但愿你能经过该系列文章有所收获.缓存

本篇旨在理解HTTP客户端服务器交互过程,对其模型有大致了解,不作深刻了解。你能够了解到一下内容:安全

  • Web客户端于服务器是如何通讯的
  • 表示Web内容的资源来自何方
  • Web事务是怎样工做的
  • HTTP通讯所使用的报文格式
  • 底层TCP网络传输
  • HTTP协议演变
  • Web结构组件

内容

Web客户端于服务器是如何通讯的

先看下面一张通讯草图:性能优化

客户端服务器通讯模型
可见,该通讯方式是,客户端向服务器发送请求(Request),服务器回送请求数据(Response),也就是请求应答模式。

表示Web内容的资源来自何方

资源能够是存储在服务器上的静态文件,如文本文件、图片文件、影视文件等;也能够是根据用户身份生成的动态文件,如我的的照片,在线商店购物订单。服务器

Web资源

  • 媒体类型 在如此众多的资源中,HTTP为了解每种资源的类型,会对资源打上标签,称之为MIME type,在Web服务器回送的数据中包含该内容。客户端能够根据资源类型决定如何处理该资源。常见的MIME type有:网络

    • text/html HTML格式的文本类型
    • text/plain普通的ASCII文本类型
    • image/jpeg JPEG格式图片类型
    • image/gif GIF格式的图片类型
    • video/quicktime Apple公司QuickTime电影类型
    • application/vnd.ms-powerpoint 微软PowerPoint文件类型

    更多常见在这里MIME type大全看这里app

  • URI 服务器上的每个资源,都会有本身的标识,称为统一资源标识符(Uniform Resource Identifier, URI),它能够在世界范围内标识并定位信息资源。框架

  • URL URLURI最多见的形式(另外一种是下面讨论的URN),称为统一资源定位符。它描述了一台服务器上某资源的特定位置,能够精确的定位一个资源。如,http://www.baidu.com/image/girl.gif。大部分URL都遵循该格式,它包括下面几个部分:ide

    • http:// 称为方案(scheme),说明了访问资源使用的协议类型,这里一般是http://
    • www.baidu.com服务器地址(说为域名更为合适),也可使IP地址
    • 其他部分指定了资源在服务器的位置和名称,也能够包含参数在最后,用?隔开。
  • URN URN是统一资源名,也是URI的一种。做为特定资源的惟一名称使用,与资源的所在地无关。现阶段,URN并未大范围使用。

  • 在实际应用中,并无对URIURL进行特定区分。

Web事务是怎样工做的

一个HTTP事务是由一条请求命令和一个响应结果组成。这种通讯经过HTTP报文的格式化数据块进行。

  • 方法
    HTTP支持几种不一样的请求命令,这些命令称为HTTP方法。每一个HTTP请求都会包含一个方法,负责告诉服务器执行什么动做。常见的方法以下:

    HTTP方法 描述
    GET 告知服务器,须要从服务器向客户端发送命名资源
    PUT 将客户端的数据存储的命名的服务器资源中
    DELETE 从服务器删除资源
    POST 将客户端数据发送到一个服务器应用程序
    HEAD 仅发送命名资源响应中的HTTP首部

    更详细的介绍在后续文章中。

  • 状态码
    每条HTTP响应报文返回时都会携带状态码,告知客户端是否请求成功,或者是否须要采起其余动做。常见的状态码:

    HTTP状态码 描述
    200 请求成功
    302 Redirect,重定向。到其余地方获取资源
    404 Not Found,没找到。没法找到资源

    一般,和状态码一块儿的还有一条解释性的短语,对该状态进行描述。更详细的介绍在后续文章中。

  • 复合页面 看下面一个例子:

    包含多资源的复合页面
    该页面中的每个资源都要使用一个单独的HTTP事务。

HTTP通讯所使用的报文格式

HTTP报文是由一行一行的简单字符串组成。都是纯文本,不是二进制。客户端发送给服务器的称为请求报文(request message),服务器发往客户端的称为响应报文(response message)。HTTP报文组成:

  • 起始行
    报文的第一行,请求报文中用来讲明要作什么,在响应报文中说明出现的状况。

  • 首部字段
    起始行以后能够有零个或多个首部字段。每一个首部字段是一个键值对。首部以一个空行结束。

  • 主体
    首部的空行以后是主体。请求主体中包括要发送给服务器的数据,响应主体中包括返回给客户端的数据。主体的数据不具备结构化,能够包含任意二进制数据和文本。

    下面是一个请求和响应报文示例:

    请求报文和响应报文示例

底层TCP网络传输

HTTP是应用层协议,它无需关系网络通讯的具体细节,把联网的细节都交给了通用可靠的TCP/IP。相关内容,请查看该篇起始位置给出的连接.

下面是一个创建连接请求数据的过程:

基本的连接处理

总结步骤以下:

  • URL解析主机名(或称为域名)
  • 经过主机名获取IP地址
  • 解析端口号(若是有的话),没有使用默认的80
  • 创建于服务器的TCP连接
  • 向服务器发送HTTP请求报文
  • 服务器返回HTTP响应报文
  • 关闭连接

HTTP协议演变(了解)

  • HTTP/0.9 HTTP的1991原型版。有不少严重的设计缺陷,只支持GET方法,不支持多媒内容的MIME类型,各类HTTP首部或版本号。其初衷是为了获取HTML对象,很快就被1.0版本取代。
  • HTTP/1.0 1.0是一个普遍使用的版本。添加了版本号,各类首部,一些额外方法,已经对多媒体对象的处理。它使得包含生动图片的Web页面和交互式表格成为可能。
  • HTTP/1.0+ 在20实际90年代中叶,为了知足快速扩张的互联网须要,流行的客户端和服务器在HTTP中添加了各类特性,包含keep-alive,虚拟主机支持,以及代理连接支持。带有这种非官方的HTTP版本一般称为HTTP/1.0+
  • HTTP/1.1 HTTP/1.1重点是校订HTTP设计中的结构性缺陷,明确语义,引入重要的性能优化措施,删除很差的特性。
  • HTTP/NG(HTTP/2.0) 2.0版注重性能的大幅优化,以及更强大的服务逻辑远程执行框架。更具体的HTTP/2.0介绍看这里

HTTP版本时间线

Web结构组件

主要了解概念,更细致的讨论在后续文章中。

  • 代理
    客户端和服务器之间的HTTP中间实体。接收全部客户端的HTTP请求,并转发给服务器(可能对请求进行修改)。对于用户来讲,这些中间件就是代理,表明用户访问服务器。

    代理示意图

  • 缓存
    Web缓存代理缓存是一种特殊的HTTP代理服务器,能够将通过代理传送的经常使用文件复制保存起来,下一个请求同一文件的客户端就可使用该缓存。

    缓存示意图

  • 网关
    网关也是一种特殊的服务器,做为其余服务器的中间实体使用,具备特定的功能。以下,HTTP/FTP网关,负责将HTTP客户端的HTTP请求,在响应客户端以前,网关会去FTP服务器请求对应数据。实现了客户端HTTP协议到FTP协议的转换。

    HTTP/FTP网关

  • 隧道
    HTTP隧道一般用来在一条或多条HTTP连接上转发非HTTP数据,转发时不会窥探数据。好比经过HTTP连接承载加密的安全套接字层(SSL)流量,这样SSL流量就能够穿过只容许Web流量经过的防火墙。

    HTTP/SSL 隧道

  • Agent代理
    用户Agent代理简称为Agent代理,是表明用户发起HTTP请求的客户端应用程序(浏览器)。在HTTP请求报文的首部中存在User-agent字段,表示了发送当前请求的代理信息。用户代理不只包含浏览器,还有一些其余的程序,脚本等,如“网络蜘蛛”,“Web机器人”,它们专门在互联网上收集信息。

    代理程序示意图

结语

经过该篇,咱们了解了HTTP的通讯模型(请求应答模式),事务的定义,还简单的了解了HTTP的报文结构以及Web结构组件等.后序文章将会分块介绍HTTP的相关知识,关注我你就能及时看到哈.

  • 部分图片来源于网络,若有侵权,请告知。
  • 若有错误,还请指出。共勉!
  • 您的喜欢是最大的赞扬。
相关文章
相关标签/搜索