学习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. selendroid之inspector

    http://selendroid.io/inspector.html 寻找元素.断点模式.

  2. 解析angularjs中的绑定策略

    一.首先回顾一下有哪些绑定策略? 看这个实在是有点抽象了,我们来看具体的实例分析吧! 二.简单的Demo实例 @绑定:传递一个字符串作为属性的值.比如 str : ‘@string’ 控制器中代码部分 ...

  3. xshell里的一些配色方案

    只需要把下面的代码复制到记事本中,保存为xcs文件格式,然后在xshell中导入选中就可以换配色方案了,可以自己修改下面的代码 [ubuntu]text(bold)=ffffffmagenta(bol ...

  4. 【面试虐菜】—— 常用SQL语句

    创建表 create table emp( id decimal, name ), age decimal) 删除表 DROP TABLE EMP 插入默认值 CREATE TABLE EMP( Id ...

  5. 在Kubernetes上运行SAP UI5应用(上)

    2018年只剩最后30天了.Jerry在2017年的最后一天,曾经立下一个目标:这个微信公众号在2018年保证至少每周发布一篇SAP原创技术文章. 从Jerry在后台统计的2018全年文章数量来看,这 ...

  6. 构建高性能插件式Web框架

    基于MVC插件模式构建支持数据库集群.数据实时同步.数据发布与订阅的Web框架系统.如下图: 1.基于插件式开发 采用插件模式开发的优点是使得系统框架和业务模式有效地进行分离,系统更新也比较简单,只需 ...

  7. 怎样在linux下编写C程序并编译执行

    一.Hello, world! 在linux下输入:(以hello.c为例)首先选中文件要保存的路径(如:cd work)vi hello.c(要编辑的文件名) 输入程序:# include<s ...

  8. ACM-ICPC (10/16) Codeforces Round #441 (Div. 2, by Moscow Team Olympiad)

    A. Trip For Meal Winnie-the-Pooh likes honey very much! That is why he decided to visit his friends. ...

  9. 郑州Day6

    今天考了毕姥爷的一套题,差点保龄 题目 挺良心的一套题,至少我不用再搬一遍题面了 T1.B君的第一题 我为什么当时去写了一个树形\(dp\)还妄图\(A\)掉啊 这题保龄感觉舒爽 首先如果我们要求的是 ...

  10. 【洛谷P1118】数字三角形

    数字三角形 题目链接 4 16 3 1 2 4 3 1 2 4 (3+1) (1+2) (2+4)(3+1+1+2) (1+2+2+4) (3+1+1+1+2+2+2+4)16=1*3+3*1+3*2 ...