zoukankan      html  css  js  c++  java
  • 初识HTTP

    HTTP是现代全球因特网中使用的公共语言。Web浏览器、服务器和相关的Web应用程序都是通过HTTP相互通信的。

    本篇简单介绍Web应用程序是如何使用HTTP进行通信的。主要介绍以下内容:

    1.Web客户端与服务器是如何通信的;

    Web服务器:存储Web内容。

    Web客户端:最常见的客户端就是浏览器,如微软的IE,谷歌的Chrome等。

    Web服务器使用的是HTTP协议,如果HTTP客户端发出请求的话,他们会提供数据。HTTP客户端和HTTP服务器共同构成了万维网的基本组件。浏览器向服务器请求HTTP对象,并将这些对象显示在你的屏幕上。

    如浏览页面http://www.dayidingpei.com/index.html,浏览器会向服务器www.dayidingpei.com 发送一条HTTP请求,服务器去寻找期望的对象/index.html,如果成功就将对象、对象类型、对象长度以及其他一些信息放在HTTP相应中发送给客户端。

     

    2.(表示Web内容的)资源来自何方;

    Web服务器是Web资源的宿主。Web资源是Web内容的源头。最简单的Web资源就是Web服务器文件系统中的静态文件。这些文件可以包含任意内容 如文本,html文件,图片、视频文件等。

    但资源不一定得是静态文件。资源还可以是根据需要生成内容的软件程序,这些动态内容资源可以根据你的身份、所请求的信息或每天的不同时段来产生内容。总之,所有类型的内容来源都是资源。

    2.1媒体类型

    因特网上有数千种不同的数据类型,HTTP给每种要通过Web传输的对象都打上了名为MIME类型。Web服务器会为所有会为所有HTTP对象数据附加一个MIME类型。当浏览器从服务器中取回一个对象时,会去查看相关的MIME类型,看看它是否知道应该如何处理这个对象。大多数浏览器都可以处理数百种常见的对象类型。MIME类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间由一条斜杠来分隔。如:

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

    2.2 URI

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

     URI有两种形式 分别为URL和URN。

    2.3 URL

    统一资源定位符(URL)是资源标识符最常见的形式。URL描述了一台特定服务器上某资源的特定位置。他们可以说明如何从一个精确、固定的位置获取资源。

    大部分URL都遵循一种标准格式,这种格式包含三个部分。

    1.   URL的第一部分被称为方案(scheme),说明了访问资源所使用的协议类型。这部分通常就是HTTP协议(http://)
    2.   第二部分给出了服务器的因特网地址(如:www.dayidingpei.com)
    3.   其余部分指定了Web服务器上的某个资源(如:/index.html)

     现在几乎所有的URI都是URL

    2.4 URN

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

    3.Web事务是如何工作的;

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

    3.1  HTTP方法

    HTTP支持几种不同的请求命令,这些命令被称为HTTP方法。每条HTTP请求报文都包含一个方法。这个方法会告诉服务器要执行什么动作(获取一个html页面,运行一个网关程序、删除一个文件等)。一下是5中常见的HTTP方法:

    • GET  从服务器向客户端发送命令资源
    • PUT 将来自客户端的数据存储到一个命令的服务器资源中去
    • DELETE 从服务器中删除命令资源
    • POST 将客户端数据发送到一个服务器网关应用程序
    • HEAD 仅发送命名资源响应中的HTTP首部

    3.2  状态码

    每条HTTP响应报文返回时都会携带一个状态码。状态码是一个3位数字的代码,告知客户端请求是否成功,或者是否需要采取其他动作。常见的状态码如下:

    • 200  OK。文档正确返回。
    • 302 Redirect(重定向)。到其他地方去获取资源。
    • 404  Not Found (没找到)。无法找到这个资源。

    伴随着每个数字状态码,HTTP还会发送一条解释性的“原因短语”文本,文本短语主要是用来描述,所有的处理过程使用的都是数字码。

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

    4.HTTP通信所使用的报文格式;

    HTTP报文是由简单字符串组成,是纯文本不是二进制代码,所以可以很方便地对其读写。从客户端发往服务器的HTTP报文称为请求报文,从服务器发往客户端的报文称为响应报文。此外没有其他类型的报文。HTTP报文包含三个部分:起始行、首部字段、主体。

    5.底层TCP网络传输

    5.1 TCP/IP

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

    1. 无差错的数据传输;
    2. 按顺序传输;
    3. 未分段的数据流;

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

    HTTP协议位于TCP的上层,HTTP使用TCP来传输其报文数据。TCP则位于IP的上层。

    5.2 连接、IP地址及端口号

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

    在TCP中,你需要知道服务器的IP地址,以及与服务器上运行的特定软件相关的TCP端口号。获取HTTP服务器IP地址和端口号的方式是URL。

    基本的浏览器连接处理步骤如下:

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

    6.不同的HTTP协议变体

    目前仍在使用的版本如下:

    HTTP/0.9  HTTP的1991原型版本,只支持GET方法,不支持多媒体内容的MIME类型、各种HTTP首部,或者版本号。

    HTTP/1.0 添加了版本号、各种HTTP首部、一些额外的方法,以及对多媒体对象的处理。

    HTTP/1.0+ 包括持久的keep-alive连接、虚拟主机支持以及代理连接支持

    HTTP/1.1 校正HTTP设计中的结构性缺陷,明确语义引入重要的性能优化措施,并删除一些不好的特性。

    HTTP-NG (又名HTTP/2.0)性能的大幅优化,以及更强大的服务逻辑远程执行框架。

    7.因特网上安装的大量HTTP架构组件中的一部分(Web的结构组件)。

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

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

    网关:连接其他应用程序的特殊Web服务器。

    隧道:对HTTP通信报文进行盲转发的特殊代理。

    Agent代理:发起自动HTTP请求的半智能Web客户端。

     

  • 相关阅读:
    Javascript之数组遍历
    Javascript中的原型、原型链(十)
    Javascript中的对象(八)
    记一次包含iframe的需要滚动的元素不能滚动到底部的问题
    元素等比缩放解决方案
    元素高度自适应屏幕高度解决方案
    浏览器同源策略及规避方案
    Ansible环境搭建
    Ldap 从入门到放弃(二)
    Ldap 从入门到放弃(一)
  • 原文地址:https://www.cnblogs.com/lijinping321/p/8727038.html
Copyright © 2011-2022 走看看