美文网首页
http概述

http概述

作者: fuheideMayuyu | 来源:发表于2019-03-05 21:43 被阅读0次

    1.什么是http?

    HTPP(Hypertext Transfer Protoclo, 超文本传输协议)是在万维网进行通信时所使用的协议方案。http有很多应用,但最著名的是web浏览器与微博服务器之间的双工通信。
    <! -- more -->

    2.web客户端和服务器

    web内容存储于服务器当中,web服务器使用的是http协议,因此也被称为http服务器,http客户端向服务器发送http请求,服务器在http响应中返回所请求的数据。最常见的web客户端就是web浏览器。

    3.媒体类型

    http会给每一种要通过web传输的对象打上MIME类型的数据格式标签,用来描述并标记多媒体内容。
    常见的MIME类型有数百个,以下列举其中几个:

    • HTML格式的文本文档由text/html类型来标记
    • 普通的ASCII文本文档由text/plain类型来标记
    • JPEG版本的图片为image/jpeg类型
    • GIF版本的图片为image/gif类型

    4.什么是URI?

    服务器资源名被称为统一资源标示符(Uniform Resource Identifier,URI),URI就像互联网上的邮政地址一样,在世界范围内唯一标识并定位信息 资源。

    5.什么是URL?

    统一资源定位符(URL)是资源标识符最常见的形式,URI的定义范围大于URL,URL描述了一台特定服务器上的某资源的特定位置。现在几乎所有的URI都是URL。
    URL一般分为3个部分:

    • 第一部分通常是http协议(http://)
      *第二部分给出了服务器网址(如:www.baidu.com
      *其余部分指定了web服务器上的某个资源(如:/user/id=123)

    6.什么是URN?

    URI的第二种形式就是统一资源名(URN)。URN是作为特定内容的唯一名称使用的,与目前资源的所在地无关,也就是说资源可以随意移动。我的理解是:用找人来比喻的话,URL找人就像是通过你的居住地址来找你,一旦你搬家了,这个地址就找不到你了,而URN是通过身份证来找你,不管你搬到了哪里,身份证没变都可以找到你。
    目前URN还处于实验阶段,未大规模使用。

    7.事务

    一个http事务由一条(从客户端发往服务器的)请求命令和一个(从服务器发回客户端的)响应结果组成。

    8.方法

    http支持几种不同的请求命令,这些命令被称为http方法,每条请求报文都包含一个方法。以下是常见的五种http方法:

    • GET : 从服务器向客户端发送资源(客户端单纯的接收资源)
      *PUT:将客户端的数据存储到一个命名的服务器资源中去,这个方法的安全性不高很容易遭受到 恶意攻击,所以使用的并不多。
    • DELETE: 从服务器删除命名资源(用的也不多)
      *POST: 将客户端数据发送到服务器
      *HEAD:仅发送命名资源响应中的HTTP首部,与get方法类似,但不含呈现数据,而仅仅是http头部信息。常用到的业务场景:判断某个资源是否存在,虽然也可以用get,但是用head方法意义更加明确。

    9.状态码

    每条http响应报文返回时都会携带一个状态码。不同的状态码有不同的含义。常见的状态码有:

    • 200 正确返回
    • 302 重定向
    • 404 没找到资源(如国外的某些网站一直404)
      *500 服务器错误。

    10.报文

    http报文分为请求报文和响应报文,两者的报文都是纯文本,不是二进制代码,方便人们进行读写。
    http报文包括以下三个部分:


    image.png

    *起始行
    报文的第一行就是起始行,在请求报文中用来说明要做什么,在响应报文中说明出现了什么情况。
    *首部字段
    起始行后面有零个或多个首部字段,每个首部字段都包含一个名字和一个值便于解析。
    *主体
    主体即需要发送的数据内容。

    11.什么是tcp/ip?有什么特点?

    http协议是个应用层协议,位于tcp的上层,tcp属于传输层,因特网自身就是基于tcp/ip连接的。网络协议分层有将其分为五层也有将其分为七层的。


    image.png image.png

    tcp的特点:

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

    基本的浏览器连接处理:

    image.png

    步骤如下:
    1.浏览器从URL中解析出服务器的主机名(dns解析);
    2.浏览器将服务器的主机名转换成服务器ip地址;
    3.浏览器将端口号(如果有)从URL中解析出来;
    4.浏览器建立一条与web服务器的tcp连接(tcp第一次握手);
    5.浏览器像服务器发送一条http请求报文(tcp第二次握手);
    6.服务器向浏览器回送一条http响应报文(tcp第三次握手);
    7.关闭连接,浏览器显示文档;

    12.http协议版本

    *http/0.9
    http最早的版本,诞生与1991年,只支持get方法,很快被http/1.0取代。
    *http/1.0
    http/1.0添加了版本号,各种http的首部,一些额外的方法,以及对多媒体对象的处理。
    *http/10+
    为了满足万维网的各种需要,很多流行的web客户端和服务器都在飞快的向http中添加各种特性,包括持久的keep-alive连接,虚拟主机的支持,代理连接等,并成为非官方的事实标准,这种扩展版本通常被称为http/1.0+
    *http/1.1
    http/1.1重点关注校正http设计中的结构性缺陷,明确语义,优化性能并删除一些不好的特性。该版本是当前正在使用的版本。
    *HTTP-NG(又名http/2.0)
    该协议的主要特点有:
    *多路复用
    使用一个tcp连接,并发处理多个请求
    *头部压缩
    http/1.1不支持header数据压缩,http2.0使用HPACK算法对header的数据进行压缩。
    *服务器推送
    当我们对支持http2.0的服务器 请求数据的时候,服务器会
    顺便把客户端需要的资源一起推送到服务器,适合静态资源加载,可节约带宽。

    13.web结构组件

    • 代理
      位于客户端和服务器之间的http中间实体。


      image.png

    *缓存
    http的仓库,,使用常用页面的副本可以保存在离客户端更近的地方。

    *网关
    一种特殊的服务器,通常用于将http流量转换成其他的协议。


    image.png

    *隧道
    隧道是建立起来之后,就会在两条连接之间对原始数据进行盲转发的http应用程序,一种常见用途是通过http连接承载加密的安全套接字层(SSL)流量(就是https)

    image.png

    *Agent代理
    用户Agent代理是代表用户发起http请求的客户端程序,如:web浏览器。

    相关文章

      网友评论

          本文标题:http概述

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