学习HTTP技术,首先要了解它的在web通信中有哪些特点,起到什么作用、有哪些规范、都有什么功能。

HTTP的特点

  HTTP使用的是一种可靠的、快速响应的数据传输协议,用户一旦发起请求,Web服务器可以快速的做出响应,并将请求的资源内容完整的连同响应一起回送给客户端。由于其可靠性,数据在传输过程中不会被破坏、复制或者产生畸变。因此用户无需担心请求的数据是否完整。开发人员也能专注于应用程序的开发而不用担心因特网存在的缺陷。

资源类型

  web服务器是web资源的宿主,web资源是web内容的源头。

  静态资源

    文本文件、HTML文件、word文件、图片、电影或其他

  动态资源

    根据需要生成内容的软件程序,这些程序可以根据访问者的身份,所请求的信息或者个根据需求而产生的内容

媒体类型

  由于网络上需要传输的内容类型有上千万种。因此HTTP会在将要传输的内容上打上MIME数据格式标签。客户端向服务器发起请求时,服务端会将MIME数据格式标签连同响应内容一起回送给客户端,此时客户端会去读取MIME标签类型,判断自己是否能解析该种类型内容。多数游览器都可以处理上百种常见的标签类型。显示图片、解析并格式化HTML文件、调用计算机声卡播放音频文件或运用外部的插件软件来处理特殊的格式数据,比如播放安装Adobe的Flash插件来播放在线视频。

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

 常用对象类型和特定子类型

HTML文本文档 text/html
普通的ASCII文本文档 text/plain
JPEG格式的图片 image/jpeg
GIF格式的图片 image/gif
Apple的QuickTime电影 video/quicktime
温软的ppt application/vnd.ms-powerpoint

找到资源位置

   现在我们已经知道HTTP通信基本原理、特性、作用以及传输中标记的类型。现在我们需要知道如何通过web游览器找到这些资源。

  URI:

    资源被存储在一个个的web服务器上,这种服务器被称为统一资源标识符(Uniform Resource Indetifier 简称URI)。URI就像邮件地址似的,在全世界范围内有且只有一个。试想,你不想给朋友发送邮件的时候,发送给了除了朋友外的其他人吧?

  URL:

    URL(统一资源定位符)描述特定服务器上某资源的特定位置,解释并明确说明如何如何从一个精确、固定的位置获取资源。

    大部分URL遵循以下格式

    一:使用哪种协议

        二:服务器的因特网地址

     三:指定web服务器上的某个资源

URN:

  URL的第二种形式,统一资源名

事务

客户端与web服务器通过HTTP的交互被称为HTTP的事务,HTTP事务由一条请求命令和响应结果组成,这种通信是通过HTTP报文的格式化数据块进行的。(后续会对报文做介绍)

 HTTP版本

  HTTP/0.9 :只支持老客户端的交互,HTTP/0.9只支持GET方法,不支持多媒体内容MIME类型、各种HTTP首部或者版本号,初衷是为了获取简单的HTML页面。

  HTTP/1.0: 1.0添加了版本号、各种HTTP首部和一些额外的方法及对多媒体对象的处理。使得web页面更加丰富和可交互成为可能。

  HTTP/1.0+P: 添加了很多新特性,比如持久化keep-alive连接,虚拟主机支持,以及代理连接支持都被加入到HTTP之中。

  HTT/1.1: 校正HTTP设计中的结构性缺陷,明确语义,引入重要的性能优化措施,删除一些不好的特性还包含正在发展中的更复杂的web应用程序和部署方式的支持。1.1是目前  使用的HTTP版本

  Web组件结构

    代理:

      代理是Web安全、应用集成及性能优化的重要组成模块。

  

      代理作为客户端和服务器的中间件,起了关键性作用,在转发web流量的时候只转发被过滤的可信任节点,还可对web客户端和服务器双向过滤。比如企业服务器可以通过代理来检测访问者是否携带有病毒,屏蔽成年人才能观看的节目。

   缓存:

     web缓存或者代理缓存是特殊的HTTP代理服务器,可以将代理传送的常用文本复制保存起来,下次客户端再向服务器发起相同请求时,就可以使用代理缓存的私有副本,从而减少服务器的开销。

    

  

  网关

    一种特殊的服务器,作为其他服务器的中间实体使用,通常用于将HTTP流量转换成其他的协议。网关接受请求时,就好像自己是资源的源端服务器一样,而客户端并不知道自己正在跟一个网关进行通信。

  

    隧道:

      HTTP隧道的常见用途是通过HTTP连接承载加密的安全套接字层(SSL, Secure Sockets Layer)流量,这样SSL流量就可以穿过只允许Web流量通过的防火墙。

     如图,HTTP/SSL隧道收到一条HTTP请求,要求建立一条到达目的地址和端口的输出连接,隧道建立起来后,会在隧道内传输加密过的SSL流量,即便是双方是盲转发通信业不用担心信息会被劫持。

  Angent代理:

    所有发布web请求的应用程序都是HTTP代理,现实生活中也有很多代理,比如邮递员就是一种代理。代替你将投递的物品完整的送到目的地,接收者或投递员将投递结果反馈给你从而释放自己,无需亲力亲为。常见的代理,比如网络爬虫、搜集信息以构建有效的web内容档案。

HTTP学习之HTTP基础的更多相关文章

  1. 这几天开始,先学习一些 java 基础吧,学的有点累

    这几天开始,先学习一些 java 基础吧,学的有点累

  2. Emacs学习心得之 基础配置

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Emacs学习心得之 基础配置 1.前言2.基础配置 一.前言 本篇博文记录了Emacs的一 ...

  3. Emacs学习心得之 基础操作

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Emacs学习心得之 基础操作 1.前言与学习计划2.Emacs基础操作 一. 前言与学习计 ...

  4. 如何学习FPGA?FPGA学习必备的基础知识

    如何学习FPGA?FPGA学习必备的基础知识 时间:2013-08-12 来源:eepw 作者: 关键字:FPGA   基础知识       FPGA已成为现今的技术热点之一,无论学生还是工程师都希望 ...

  5. java与.net比较学习系列(2) 基础语言要素

    这一篇从最基础的开始对比总结,说起基础语言要素,故名思义,就是学习语言的基础,主要内容包括标识符,关键字和注释.我想从以下几点进行总结,有区别的地方有都使用红色粗体字进行了总结. 1,标识符 2,关键 ...

  6. MyBatis:学习笔记(1)——基础知识

    MyBatis:学习笔记(1)--基础知识 引入MyBatis JDBC编程的问题及解决设想 ☐ 数据库连接使用时创建,不使用时就释放,频繁开启和关闭,造成数据库资源浪费,影响数据库性能. ☐ 使用数 ...

  7. bootstrap学习笔记之基础导航条 http://www.imooc.com/code/3111

    基础导航条 在Bootstrap框中,导航条和导航从外观上差别不是太多,但在实际使用中导航条要比导航复杂得多.我们先来看导航条中最基础的一个--基础导航条. 使用方法: 在制作一个基础导航条时,主要分 ...

  8. AJAX学习前奏----JS基础加强

     AJAX学习前奏----JS基础加强 知识概要: 1.js类&属性&方法的定义 2.静态属性与方法 3.构造方法 4.原型的使用 5.Object对象直接加属性和方法 6.JSO ...

  9. 大数据学习之Linux基础01

    大数据学习之Linux基础 01:Linux简介 linux是一种自由和开放源代码的类UNIX操作系统.该操作系统的内核由林纳斯·托瓦兹 在1991年10月5日首次发布.,在加上用户空间的应用程序之后 ...

  10. 第65节:Java后端的学习之Spring基础

    Java后端的学习之Spring基础 如果要学习spring,那么什么是框架,spring又是什么呢?学习spring中的ioc和bean,以及aop,IOC,Bean,AOP,(配置,注解,api) ...

随机推荐

  1. GitHub无法push的问题

    问题背景 换了台别人用过的电脑想要将文件push到github上,出现下面报错 remote: Permission to *****(我的)/gittest.git denied to *****( ...

  2. setExecuteExistingDelayedTasksAfterShutdownPolicy方法与setContinueExistingPeriodicTasksAfterShutdownPolicy方法的比较

    一.setExecuteExistingDelayedTasksAfterShutdownPolicy方法 这个方法大多是与schedule方法和shutdown方法搭配使用的. public voi ...

  3. 利用Surfingkeys和tampermonkey效率操作网页

    tampermonkey可以实现网页载入后自动进行某些操作,适合有规律的操作,实现完全自动化. 而Surfingkeys可以实现用各种按键实现各种功能,功能全部用JavaScript写,自定义性更强.

  4. May 19th 2017 Week 20th Friday

    Good luck is another name for tenacity of purpose. 好运不过是坚持不懈的结果. To some extent, I don't agree with ...

  5. 如何清理Windows缩略图缓存?

    从Win95的IE4开始就有缩略图缓存了,缩略图缓存作用主要是用于存储Windows资源管理器缩略图图像文件.这加快了图像的显示速度,因为每次用户查看文件夹时都不需要重新生成这些较小的图像.缩略图缓存 ...

  6. SSH 学习记录及在SSH模式下使用XShell连接服务器

    传统的网络服务程序,如rsh.FTP.POP和Telnet其本质上都是不安全的:因为它们在网络上用明文传送数据.用户帐号和用户口令,很容易受到中间人(man-in-the-middle)攻击方式的攻击 ...

  7. IOS VLC (第三方音频)的使用

    使用注意 ● 注意点 ● 存放VLC的文件夹名不要有空格 ● 一旦执行过编译脚本sh,就别再修改存放VLC的文件夹名   编译 ● 打开最外层的工作空间 选择真机运行 编译 ● 一些简单的示例程序 集 ...

  8. HDU 4944 逆序数对

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4911 题意: 给出一个序列,可以相邻的交换k次,求 k 次之后,逆序数对最少是多少: 分析: 可以发现 ...

  9. redux中间件和redux-thunk实现原理

    redux-thunk这个中间件可以使我们把这样的异步请求或者说复杂的逻辑可以放到action里面去处理,redux-thunk使redux的一个中间件,为什么叫做中间件 我们说中间件,那么肯定是谁和 ...

  10. C# 基础(一) 访问修饰符、ref与out、标志枚举等等

    C# 基础(一) 访问修饰符.ref与out.标志枚举等等 一.访问修饰符 在C#中的访问修饰符有:private.protected.internal.public public:公共类型,同一程序 ...