代码改变世界

HTTP概述

2018-03-22 11:06  库奇——  阅读(254)  评论(0编辑  收藏  举报

HTTP--因特网的多媒体信使

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。。

HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。

Web服务器有:Apache服务器,IIS服务器(Internet Information Services)等。

Web服务器根据接收到的请求后,向客户端发送响应信息。

HTTP默认端口号为80,但是你也可以改为8080或者其他端口

web客户端和服务器

web内容都是存储在web服务器上,它们会提供数据,客户端向服务器发送http请求,服务器会在http响应中回送所请求的数据。最常见的客户端就是web浏览器。

资源

web服务器是web资源的宿主,web资源是web内容的源头,最简单的web资源就是web服务器文件系统的静态文件。这些文件可以包括任意内容。

媒体类型

因特网上有数千种不同数据类型,http仔细的给每种要通过web传输的对象都打上MIME类型的数据格式标签。web服务器会为所有的http对象数据附加一个MIME类型,当web浏览器从服务器中取回一个对象时,回去查看相关MIME类型,看看他是否知道如何处理这个对象。大多数。浏览器都可以处理数百种常见的对象类型:显示图片文件,解析并且格式化html文件,通过计算机声卡播放音频文件。

MIME类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中奖用一条斜杠来分隔。

  • html格式的文本文档有text/html类型来标记。
  • 普通的ASCII文本文档由text/plain类型来标记。
  • jpeg版本的图片为image/jpeg类型
  • gif格式的图片为image/gif类型
  • Apple的QuickTime电影为video/quicktime类型
  • 微软的powerpoint演示文件为application/vnd.ms-powerpoint类型;

URI

每个web服务器资源都有一个名字,这样客户端就可以说明他们感兴趣的资源是什么,服务器资源名称被称为统一资源标识符,URI就像因特网的邮政地址一样,在世界范围内唯一标示并定位信息资源。

URI有两种形式,分贝成为URL和URN

URL

统一资源定位符(URL)是资源标识符最常见的形式,URL描述了一台特定服务器上某资源的特定位置。

URL实例:http://cn.vuejs.org/v2/guide/instance.html

URN

URI第二种形式是就是统一资源名,URN是作为特定内容的唯一名称使用的,与目前的资源所在地无关,使用这些与位置无关的URN,就可以将资源四处搬移,通过URN,还可以用同一个名字通过多种网络访问协议来访问资源。

URN仍然处于试验阶段,还未大范围使用,为了有效工作,urn需要一个支持结构来解析资源的位置。

事务

一个http事务由一条从客户端发送服务器请求命令和一个从服务器发回客户端响应结果组成,这种通信是通过名为http报文分格式化数据块进行的。

方法

HTTP支持几种不同的请求命令,这些命令被称为http方法,每条http请求报文都包含一个方法,这个方法会告诉服务器要执行什么动作。

状态码

每条http响应报文返回时都会携带一个状态码,状态码是一个三位数的代码,告知客户端是否成功,或者是否采取其他动作。

Web页面中可以包含多个对象

一个web页面通常并不是单个资源,而是一组资源的集合。

报文

从web客户端发送web服务器的http报文称为请求报文,从服务器发送到客户端的称为响应报文。http请求和响应报文很类似。

  http报文包括以下三个部分

  •   起始行

   报文的第一行就是起始行,在请求报文中用来说明要做些什么,在响应报文中说明出现了什么情况。

  •   首部字段

  每个首部字段都包含一个名字和一个值,为了便于解析,两者之间用冒号分隔,首部以一个空行结束.

  •   主体

 空行之后就是可选的报文主体了,其中包含了所有的类型的数据,请求主体中包括了要发送给web服务器的数据,响应主体中装载了要返回给客户端的数据,主题中可以包含任意的二进制数据。当然,也包含文本

连接

http是个应用层协议,http无需操心网络通信的具体细节,它把联网的细节交给了通用可靠的因特网传输协议TCP/IP;

TCP提供了:

  • 无差错的数据传输
  • 按序传输(数据按照发送的顺序到达)
  • 未分段的数据流(可以在任意时刻以任意尺寸将数据发送出去)

只要建立了tcp连接,客户端和服务器之间的报文交换就不会丢失,不会破坏,也不会在接受时出现乱序。

 在http客户端向服务器发送报文之前,需要用网际协议地址和端口号在客户端和服务器之间建立一条TCP/IP连接。

有了IP地址和端口号,客户端就可以很方便的通过TCP/IP进行通信了。

步骤如下:

  1. 浏览器从url中解析出服务器的主机名;
  2. 浏览器将服务器的主机名转换成服务器的IP地址;
  3. 浏览器将端口号(如果有)从url中解析出来;
  4. 浏览器建立一条与web服务器的tcp连接;
  5. 浏览器向服务器发送一条http请求报文;
  6. 服务器向浏览器回送一条htto响应报文;
  7. 关闭连接,浏览器显示文档;

协议版本

http1.0默认会使用短连接,浏览器每次向服务器发起一个请求都会全新建立一个连接,在请求服务结束后连接就会断开。
http1.1默认使用长连接,如图中所示,当第一个请求服务结束后双方并没有断开连接,而是利用该连接继续执行下一次请求,直到超时才会断开连接。

代理

代理位于客户端和服务器之间,接受所有客户端的http请求,并将这些请求转换给服务器。代理还可以对请求和响应进行过滤。

缓存

web缓存或者代理缓存是一种特殊的http代理服务器,可以将经过代理传送的常用文档复制保存起来。下一个请求统一文档的客户端就可以享受缓存的私有副本所提供的服务了。客户端从附近的缓存下载文档会比远程web服务器下载的快得多。